summarylogtreecommitdiffstats
path: root/zfs.initcpio.install
blob: e192c3bcbdd722561a744396ada808134fc67c26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/bin/bash

build() {
    echo -en "Build spl module for ${KERNELVERSION} kernel... "
    $(which dkms) install -m spl -v ##VERMARKER## -k ${KERNELVERSION} -q
    echo -en "Done.\nBuild zfs module for ${KERNELVERSION} kernel... "
    $(which dkms) install -m zfs -v ##VERMARKER## -k ${KERNELVERSION} -q
    echo "Done."

    map add_module \
        zavl \
        znvpair \
        zunicode \
        zcommon \
        zfs \
        zpios \
        spl \
        splat \
        zlib_deflate

    map add_binary \
        arcstat.py \
        dbufstat.py \
        fsck.zfs \
        mount.zfs \
        zdb \
        zed \
        zfs \
        zhack \
        zinject \
        zpios \
        zpool \
        zstreamdump \
        ztest \
        splat \
        hostid \
        /lib/udev/vdev_id \
        /lib/udev/zvol_id

    map add_file \
        /lib/udev/rules.d/60-zvol.rules \
        /lib/udev/rules.d/69-vdev.rules \
        /lib/udev/rules.d/90-zfs.rules

    map add_dir \
        /etc/zfs/zed.d

    add_runscript

    # allow mount(8) to "autodetect" ZFS
    echo 'zfs' >>"$BUILDROOT/etc/filesystems"

    [[ -f /etc/zfs/zpool.cache ]] && add_file "/etc/zfs/zpool.cache"
    [[ -f /etc/modprobe.d/zfs.conf ]] && add_file "/etc/modprobe.d/zfs.conf"
    [[ -f /etc/hostid ]] && add_file "/etc/hostid"
}

help() {
    cat<<HELPEOF
This hook allows you to use ZFS as your root filesystem.

Command Line Setup:

    You can append the following arguments to your kernel parameters list. See
    https://wiki.archlinux.org/index.php/Kernel_parameters for more information.

    To use ZFS as your boot filesystem:

        zfs=bootfs or zfs=auto or root=zfs

    To use a pool or dataset:

        zfs=<pool/dataset>

    To force importing of a ZFS pool:

        zfs_force=1

        If set to 1, this will use "zpool import -f" when attempting to import
        pools.

    To search for devices in a directory other than "/dev":

        zfs_import_dir=/dev/disk/by-uuid
            or
        zfs_import_dir=/dev/disk/by-partuuid
            or
        zfs_import_dir=/dev/disk/by-path
            etc.

    Following initcpio convention, the 'rw' option must be specified to load the
    pool as read/write. Pools are loaded as read only by default.

Examples:

    To use bootfs on your pool, use

        zfs=bootfs rw

    This will setup your root using tank/root zfs pool.

        zfs=tank/root rw

If you want to set properties for zfs-on-linux module, you should add them to
/etc/modprobe.d/zfs.conf and then rebuild initcpio.

HELPEOF
}

# vim: set ts=4 sw=4 ft=sh et: