7998ae32c1
ZFS hooks taken from [1] and slightly modified: 1. If present, /etc/hostid is included in the image 2. Pool imports are read/write by default 3. Dracut-style root=zfs:<filesystem> arguments are recognized [1] https://github.com/archzfs/archzfs/tree/master/src/zfs-utils
102 lines
2.3 KiB
Bash
102 lines
2.3 KiB
Bash
#!/bin/bash
|
|
|
|
build() {
|
|
map add_module \
|
|
zavl \
|
|
znvpair \
|
|
zunicode \
|
|
zcommon \
|
|
zfs \
|
|
spl
|
|
|
|
map add_binary \
|
|
fsck.zfs \
|
|
mount.zfs \
|
|
seq \
|
|
zdb \
|
|
zed \
|
|
zfs \
|
|
zhack \
|
|
zinject \
|
|
zpool \
|
|
zstreamdump \
|
|
/usr/lib/udev/vdev_id \
|
|
/usr/lib/udev/zvol_id \
|
|
findmnt
|
|
|
|
map add_file \
|
|
/usr/lib/udev/rules.d/60-zvol.rules \
|
|
/usr/lib/udev/rules.d/69-vdev.rules \
|
|
/usr/lib/udev/rules.d/90-zfs.rules \
|
|
/usr/lib/libgcc_s.so.1
|
|
|
|
map add_dir \
|
|
/etc/zfs/zed.d
|
|
|
|
add_runscript
|
|
|
|
# allow mount(8) to "autodetect" ZFS
|
|
echo 'zfs' >>"${BUILDROOT}/etc/filesystems"
|
|
|
|
[[ -f /etc/hostid ]] && add_file "/etc/hostid"
|
|
[[ -f /etc/zfs/zpool.cache ]] && cp "/etc/zfs/zpool.cache" "${BUILDROOT}/etc/zfs/zpool.cache.org"
|
|
[[ -f /etc/modprobe.d/zfs.conf ]] && add_file "/etc/modprobe.d/zfs.conf"
|
|
}
|
|
|
|
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 change the seconds of time to wait for ZFS devices to show up at boot:
|
|
|
|
zfs_wait=30
|
|
|
|
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:
|