PR 1711 (https://github.com/dracutdevs/dracut/pull/1711) adds a zfs_devs function to dracut to detect the physical devices backing zfs pools. If this function exists in the version of dracut this module is being called from, then it does not need to run. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Signed-off-by: Savyasachee Jha <hi@savyasacheejha.com> Closes #13121 |
||
|---|---|---|
| .. | ||
| 02zfsexpandknowledge | ||
| 90zfs | ||
| Makefile.am | ||
| README.md | ||
Basic setup
- Install
zfs-dracut - Set
mountpoint=/for your root dataset (for compatibility,legacyalso works, but is not recommended for new installations):zfs set mountpoint=/ pool/dataset - Either (a) set
bootfs=on the pool to the dataset:zpool set bootfs=pool/dataset pool - Or (b) append
root=zfs:pool/datasetto your kernel cmdline. - Re-generate your initrd and update it in your boot bundle
Encrypted datasets have keys loaded automatically or prompted for.
If the root dataset contains children with mountpoint=s of /etc, /bin, /lib*, or /usr, they're mounted too.
cmdline
-
root=Root dataset is… Pools imported (empty) the first bootfs=afterzpool import -aNall zfs:AUTO(as above, but overriding other autoselection methods) all ZFS=pool/datasetpool/datasetpoolzfs:pool/dataset(as above) poolAll
+es are replaced with spaces (i.e. to boot fromroot pool/data set, passroot=zfs:root+pool/data+set).The dataset can be at any depth, including being the pool's root dataset (i.e.
root=zfs:pool). -
spl_hostid: passed tozgenhostid -f, useful to override the/etc/hostidfile baked into the initrd. -
bootfs.snapshot,bootfs.snapshot=snapshot-name: enableszfs-snapshot-bootfs.service, which creates a snapshot$root_dataset@$(uname -r)(or, in the second form,$root_dataset@snapshot-name) after pool import but before the rootfs is mounted. Failure to create the snapshot is noted, but booting continues. -
bootfs.rollback,bootfs.rollback=snapshot-name: enableszfs-snapshot-bootfs.service, which-Rfrolls back to$root_dataset@$(uname -r)(or, in the second form,$root_dataset@snapshot-name) after pool import but before the rootfs is mounted. Failure to roll back will fall down to the rescue shell. This has obvious potential for data loss: make sure your persistent data is not below the rootfs and you don't care about any intermediate snapshots. -
If both
bootfs.snapshotandbootfs.rollbackare set,bootfs.rollbackis ordered afterbootfs.snapshot. -
zfs_force,zfs.force,zfsforce: add-fto allzpool importinvocations. May be useful. Use with caution.