|
| 1 | +# User-Contributed Scripts for ZFSBootMenu |
| 2 | + |
| 3 | +The `contrib` directory contains an assorted collection of helper scripts that |
| 4 | +augment core functionality. These scripts are reviewed and approved by members |
| 5 | +of the core team, but not all are thoroughly tested. Some have not been tested |
| 6 | +at all. User-contributed scripts are intended as starting points for customized |
| 7 | +[setup hooks](../docs/pod/zfsbootmenu.7.pod) that can be deployed within the |
| 8 | +ZFSBootMenu environment or for [`generate-zbm` |
| 9 | +hooks](../docs/pod/generate-zbm.5.pod) that alter the process of creating |
| 10 | +ZFSBootMenu images. |
| 11 | + |
| 12 | +## Script Directory |
| 13 | + |
| 14 | +Brief descriptions of contributed scripts appear below for convenience. Please |
| 15 | +review the scripts themselves for more thorough descriptions of their use. |
| 16 | + |
| 17 | +- `console-init.sh` - In some configurations, the dracut event loop that |
| 18 | + configures the ZFSBootMenu environment will fail to initialize the console |
| 19 | + with desired font and keymap settings. This script can be added as an "early |
| 20 | + setup" hook to force console initialization. |
| 21 | + |
| 22 | +- `esp-sync.sh` - This script can run as a "post-image" hook to `generate-zbm` |
| 23 | + to synchronize the contents of one EFI system partition with others, providing |
| 24 | + tolerance against disk failures. |
| 25 | + |
| 26 | +- `keycache.sh` - This early-setup hook provided a simple means for run-time |
| 27 | + caching of ZFS encryption keys. Although the script has been retained for |
| 28 | + historical reference, use of the `org.zfsbootmenu:keysource` property is now |
| 29 | + the preferred method to control caching of filesystem credentials. |
| 30 | + |
| 31 | +- `luks-unlock.sh` - This is a proof of concept for storing ZFS |
| 32 | + native-encryption keys on a LUKS-encrypted volume. When installed as an |
| 33 | + early-setup hook, this facilitates, *e.g.*, multiple-slot keys for ZFS pools |
| 34 | + that use native encryption. |
| 35 | + |
| 36 | +- `remote-ssh-build.sh` - This is a standalone script intended to wrap the |
| 37 | + `zbm-builder.sh` image-builder script, incorporating a dropbear SSH server, |
| 38 | + host keys and an `authorized_keys` file that permit remote access and pool |
| 39 | + unlocking within a ZFSBootMenu image. |
| 40 | + |
| 41 | +- `snapshot-teardown.sh` - This "teardown" hook will capture a pre-boot |
| 42 | + snapshot of the boot environment that has been selected for booting. |
| 43 | + |
| 44 | +- `syslinux-update.sh` - This script can run as a post-image hook for |
| 45 | + `generate-zbm` to construct a configuration file for syslinux. This provides |
| 46 | + an extension to basic functionality that was originally built into |
| 47 | + `generate-zbm` itself. |
| 48 | + |
| 49 | +- `xhci-teardown.sh` - ZFSBootMenu relies on `kexec` to launch kernels |
| 50 | + within boot environments. Some hardware, including certain XHCI USB |
| 51 | + controllers, cannot be properly re-initialized after `kexec` jumps into the |
| 52 | + new kernel. This teardown hook unbinds all detected XHCI controllers from the |
| 53 | + ZFSBootMenu kernel before jumping into the new kernel, allowing devices to be |
| 54 | + properly initialized. |
0 commit comments