mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
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
This commit is contained in:
committed by
Brian Behlendorf
parent
1cd777340b
commit
2cac7f5f11
+11
-4
@@ -139,7 +139,7 @@ AC_DEFUN([ZFS_AC_RPM], [
|
||||
])
|
||||
|
||||
RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1" --define "$(DEBUG_DMU_TX) 1"'
|
||||
RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)" --define "_udevdir $(udevdir)" --define "_udevruledir $(udevruledir)" --define "_initconfdir $(DEFAULT_INITCONF_DIR)"'
|
||||
RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)" --define "_udevdir $(udevdir)" --define "_udevruledir $(udevruledir)" --define "_initconfdir $(DEFAULT_INITCONF_DIR)" $(DEFINE_INITRAMFS)'
|
||||
RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)" --define "require_spldir $(SPL)" --define "require_splobj $(SPL_OBJ)" --define "ksrc $(LINUX)" --define "kobj $(LINUX_OBJ)"'
|
||||
RPM_DEFINE_DKMS=
|
||||
|
||||
@@ -285,7 +285,6 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
|
||||
debian) DEFAULT_PACKAGE=deb ;;
|
||||
*) DEFAULT_PACKAGE=rpm ;;
|
||||
esac
|
||||
|
||||
AC_MSG_RESULT([$DEFAULT_PACKAGE])
|
||||
AC_SUBST(DEFAULT_PACKAGE)
|
||||
|
||||
@@ -308,7 +307,6 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
|
||||
debian) DEFAULT_INIT_SCRIPT=lsb ;;
|
||||
*) DEFAULT_INIT_SCRIPT=lsb ;;
|
||||
esac
|
||||
|
||||
AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT])
|
||||
AC_SUBST(DEFAULT_INIT_SCRIPT)
|
||||
|
||||
@@ -323,9 +321,18 @@ AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [
|
||||
debian) DEFAULT_INITCONF_DIR=/etc/default ;;
|
||||
*) DEFAULT_INITCONF_DIR=/etc/default ;;
|
||||
esac
|
||||
|
||||
AC_MSG_RESULT([$DEFAULT_INITCONF_DIR])
|
||||
AC_SUBST(DEFAULT_INITCONF_DIR)
|
||||
|
||||
AC_MSG_CHECKING([whether initramfs-tools is available])
|
||||
if test -d /usr/share/initramfs-tools ; then
|
||||
DEFINE_INITRAMFS='--define "_initramfs 1"'
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
DEFINE_INITRAMFS=''
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AC_SUBST(DEFINE_INITRAMFS)
|
||||
])
|
||||
|
||||
dnl #
|
||||
|
||||
Reference in New Issue
Block a user