HomeFreeBSD

Initramfs scripts for ZoL.

Description

Initramfs scripts for ZoL.

  • Supports booting of a ZFS snapshot. Do this by cloning the snapshot into a dataset. If this, the resulting dataset, already exists, destroy it. Then mount it on root.
    • If snapshot does not exist, use base dataset (the part before '@') as boot filesystem instead.
    • If no snapshot is specified on the 'root=' kernel command line, but there is an '@', then get a list of snapshots below that filesystem and ask the user which to use.
    • Clone with 'mountpoint=none' and 'canmount=noauto' - we mount manually and explicitly.
      • For sub-filesystems, that doesn't have a mountpoint property set, we use the 'org.zol:mountpoint' to keep track of it's mountpoint.
    • Allow rollback of snapshots instead of clone it and boot from the clone.
  • Allow mounting a root- and subfs with mountpoint=legacy set
  • Allow mounting a filesystem which is using nativ encryption.
  • Support all currently used kernel command line arguments All the different distributions have their own standard on what to specify on the kernel command line to boot of a ZFS filesystem.
    • Extra options:
      • zfsdebug=(on,yes,1) Show extra debugging information
      • zfsforce=(on,yes,1) Force import the pool
      • rollback=(on,yes,1) Rollback (instead of clone) the snapshot
  • Only try to import pool if it haven't already been imported
    • This will negate the need to force import a pool that have not been exported cleanly.
    • Support exclusion of pools to import by setting ZFS_POOL_EXCEPTIONS in /etc/default/zfs.
  • Support additional configuration variable ZFS_INITRD_ADDITIONAL_DATASETS to mount additional filesystems not located under your root dataset.
  • Include /etc/modprobe.d/{zfs,spl}.conf in the initrd if it/they exist.
  • Include the udev rule to use by-vdev for pool imports.
  • Include the /etc/default/zfs file to the initrd.
  • Only try /dev/disk/by-* in the initrd if USE_DISK_BY_ID is set.
    • Use /dev/disk/by-vdev before anything.
    • Add /dev as a last ditch attempt.
    • Fallback to using the cache file if that exist if nothing else worked.
  • Use /sbin/modprobe instead of built-in (BusyBox) modprobe. This gets rid of the message "modprobe: can't load module zcommon". Thanx to pcoultha for finding this.

Signed-off-by: Turbo Fredriksson <turbo@bayour.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2116
Closes #2114

Details

Provenance
Turbo Fredriksson <turbo@bayour.com>Authored on Jan 30 2014, 4:26 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Jul 9 2015, 1:14 AM
Parents
rG1cd777340bb2: Prevent reclaim in metaslab preload threads
Branches
Unknown
Tags
Unknown