| 
									
										
										
										
											2020-05-03 02:16:46 +03:00
										 |  |  | ## Description
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These scripts are intended to be used with `initramfs-tools`, which is a | 
					
						
							|  |  |  | similar software product to `dracut` (which is used in Red Hat based | 
					
						
							|  |  |  | distributions), and is mainly used by Debian GNU/Linux and derivatives. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These scripts share some common functionality with the SysV init scripts, | 
					
						
							|  |  |  | primarily the `/etc/zfs/zfs-functions` script. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Configuration
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Root pool/filesystem
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Different distributions have their own standard on what to specify on the | 
					
						
							|  |  |  | kernel command line to boot off a ZFS filesystem. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This script supports the following kernel command line argument combinations | 
					
						
							|  |  |  | (in this order - first match wins): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * `rpool=<pool>` | 
					
						
							|  |  |  | * `bootfs=<pool>/<dataset>` | 
					
						
							|  |  |  | * `rpool=<pool> bootfs=<pool>/<dataset>` | 
					
						
							|  |  |  | * `-B zfs-bootfs=<pool>/<fs>` | 
					
						
							|  |  |  | * `root=<pool>/<dataset>` | 
					
						
							|  |  |  | * `root=ZFS=<pool>/<dataset>` | 
					
						
							|  |  |  | * `root=zfs:AUTO` | 
					
						
							|  |  |  | * `root=zfs:<pool>/<dataset>` | 
					
						
							|  |  |  | * `rpool=rpool` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If a pool is specified, it will be used.  Otherwise, in `AUTO` mode, all pools | 
					
						
							|  |  |  | will be searched.  Pools may be excluded from the search by listing them in | 
					
						
							|  |  |  | `ZFS_POOL_EXCEPTIONS` in `/etc/default/zfs`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Pools will be imported as follows: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Try `/dev/disk/by-vdev` if it exists; see `/etc/zfs/vdev_id.conf`. | 
					
						
							|  |  |  | * Try `/dev/disk/by-id` and any other `/dev/disk/by-*` directories. | 
					
						
							|  |  |  | * Try `/dev`. | 
					
						
							|  |  |  | * Use the cache file if nothing else worked. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This order may be modified by setting `ZPOOL_IMPORT_PATH` in | 
					
						
							|  |  |  | `/etc/default/zfs`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If a dataset is specified, it will be used as the root filesystem.  Otherwise, | 
					
						
							|  |  |  | this script will attempt to find a root filesystem automatically (in the | 
					
						
							|  |  |  | specified pool or all pools, as described above). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Filesystems below the root filesystem will be automatically mounted with no | 
					
						
							|  |  |  | additional configuration necessary.  For example, if the root filesystem is | 
					
						
							|  |  |  | `rpool/ROOT/rootfs`, `rpool/root/rootfs/var`, `rpool/root/rootfs/usr`, etc. | 
					
						
							| 
									
										
										
										
											2020-08-22 21:04:49 +03:00
										 |  |  | will be mounted (if they exist). | 
					
						
							| 
									
										
										
										
											2020-05-03 02:16:46 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Snapshots
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `<dataset>` can be a snapshot.  In this case, the snapshot will be cloned | 
					
						
							|  |  |  | and the clone used as the root filesystem.  Note: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * If the snapshot does not exist, the base dataset (the part before `@`) is | 
					
						
							|  |  |  |   used as the boot filesystem instead. | 
					
						
							|  |  |  | * If the resulting clone dataset already exists, it is destroyed. | 
					
						
							|  |  |  | * The clone is created with `mountpoint=none` and `canmount=noauto`.  The root | 
					
						
							|  |  |  |   filesystem is mounted manually by the initramfs script. | 
					
						
							|  |  |  | * If no snapshot is specified on the `root=` kernel command line, but | 
					
						
							|  |  |  |   there is an `@`, the user will be prompted to choose a snapshot to use. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Extra options
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following kernel command line arguments are supported: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * `zfsdebug=(on,yes,1)`: Show extra debugging information | 
					
						
							|  |  |  | * `zfsforce=(on,yes,1)`: Force import the pool | 
					
						
							|  |  |  | * `rollback=(on,yes,1)`: Rollback to (instead of clone) the snapshot | 
					
						
							| 
									
										
										
										
											2020-05-03 08:43:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | ### Unlocking a ZFS encrypted root over SSH
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To use this feature: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Install the `dropbear-initramfs` package.  You may wish to uninstall the | 
					
						
							|  |  |  |    `cryptsetup-initramfs` package to avoid warnings. | 
					
						
							|  |  |  | 2. Add your SSH key(s) to `/etc/dropbear-initramfs/authorized_keys`.  Note | 
					
						
							| 
									
										
										
										
											2021-11-04 18:23:50 +03:00
										 |  |  |    that Dropbear does not support ed25519 keys before version 2020.79;  | 
					
						
							|  |  |  |    in that case, use RSA (2048-bit or more) instead. | 
					
						
							| 
									
										
										
										
											2020-05-03 08:43:42 +03:00
										 |  |  | 3. Rebuild the initramfs with your keys: `update-initramfs -u` | 
					
						
							|  |  |  | 4. During the system boot, login via SSH and run: `zfsunlock` |