5-auto-regen-zbm #13

Merged
hygienic-books merged 15 commits from 5-auto-regen-zbm into main 2023-10-27 01:09:08 +00:00
Showing only changes of commit edd104ed1c - Show all commits

View File

@ -80,13 +80,15 @@ NAME SIZE FSTYPE PARTTYPE PARTTYPENAME PTTYPE
└─/dev/sda2 9.5G 0xbf Solaris dos └─/dev/sda2 9.5G 0xbf Solaris dos
``` ```
## ZFS dataset layout # Partition naming
The script will create a single ZFS zpool `zpool` on the `BF00` partition with dataset child `zpool/root` which itself has one child `zpool/root/archlinux`, that's where Arch Linux gets installed. Parallel to `zpool/root` it'll create `zpool/data` with a `zpool/data/home` child dataset that gets mounted at `/home`. Since this script works with UEFI and legacy BIOS mode we'll be addressing both disk layout schemes with umbrella terms for better readability: "The zpool partition" will be GPT `BF00` partition and MBR `bf` partition. You'll parse the text accordingly. "The boot partition" will be GPT `EF00` partition as well as the MBR `83` partition.
The script will use the `EF00` partition to install a ZFSBootMenu EFI executable if `efibootmgr` says that no such `ZFSBootMenu` entry exists. If ZFSBootMenu gets added to the EFI partition it'll become primary boot option. # ZFS dataset layout
## How to run this? The script will create a single ZFS zpool `zpool` on the zpool partition with dataset child `zpool/root` which itself has one child `zpool/root/archlinux`, that's where Arch Linux gets installed. Parallel to `zpool/root` it'll create `zpool/data` with a `zpool/data/home` child dataset that gets mounted at `/home`.
# How to run this?
- Boot an Arch Linux live CD ISO image - Boot an Arch Linux live CD ISO image
- Run: - Run:
@ -95,9 +97,9 @@ The script will use the `EF00` partition to install a ZFSBootMenu EFI executable
``` ```
During execution the script will call itself when it changes into its `chroot`, that's why we `export SCRIPT_URL`. Feel free to update `"${SCRIPT_URL}"` with whatever branch or revision you want to use from [quico.space/quico-os-setup/arch-zbm](https://quico.space/quico-os-setup/arch-zbm). Typically `.../branch/main/setup.sh` as shown above is what you want. During execution the script will call itself when it changes into its `chroot`, that's why we `export SCRIPT_URL`. Feel free to update `"${SCRIPT_URL}"` with whatever branch or revision you want to use from [quico.space/quico-os-setup/arch-zbm](https://quico.space/quico-os-setup/arch-zbm). Typically `.../branch/main/setup.sh` as shown above is what you want.
### Options ## Options
#### Compression ### Compression
By default we create a zpool with ZFS property `compression=on`. If the `lz4_compress` pool feature is active this will by default enable `compression=lz4`. See `man 7 zfsprops` for example in ZFS 2.1.9 for details. See `zpool get feature@lz4_compress <pool>` to check this feature's status on your `<pool>`. By default we create a zpool with ZFS property `compression=on`. If the `lz4_compress` pool feature is active this will by default enable `compression=lz4`. See `man 7 zfsprops` for example in ZFS 2.1.9 for details. See `zpool get feature@lz4_compress <pool>` to check this feature's status on your `<pool>`.
@ -106,7 +108,7 @@ To get a zpool with uncompressed datasets export the shell variable `ARCHZBM_ZFS
export ARCHZBM_ZFSPROPS_NO_COMPRESSION=yesplease export ARCHZBM_ZFSPROPS_NO_COMPRESSION=yesplease
``` ```
#### Encryption ### Encryption
By default we encrypt the zpool with ZFS property `encryption=on`. In ZFS 2.1.9 this defaults to `encryption=aes-256-gcm`. By default we encrypt the zpool with ZFS property `encryption=on`. In ZFS 2.1.9 this defaults to `encryption=aes-256-gcm`.
@ -115,19 +117,23 @@ To get a zpool with unencrypted datasets export the shell variable `ARCHZBM_ZFSP
export ARCHZBM_ZFSPROPS_NO_ENCRYPTION=yup export ARCHZBM_ZFSPROPS_NO_ENCRYPTION=yup
``` ```
## Steps # Steps
The script takes the following installation steps. The script takes the following installation steps.
1. Install ZFS tools and kernel module with [github.com/eoli3n/archiso-zfs](https://github.com/eoli3n/archiso-zfs) 1. Install ZFS tools and kernel module with [github.com/eoli3n/archiso-zfs](https://github.com/eoli3n/archiso-zfs)
1. Create one ZFS zpool on top of `BF00` partition, encrypted and compressed datasets, password `password` 1. Create one ZFS zpool on top of zpool partition, encrypted and compressed datasets, password `password`
1. _See paragraphs [Compression](#compression)/[Encryption](#encryption) to optionally disable properties_ 1. _See paragraphs [Compression](#compression)/[Encryption](#encryption) to optionally disable properties_
1. Create dataset for Arch Linux and `/home` 1. Create dataset for Arch Linux and `/home`
1. Install Arch Linux into pool 1. Install Arch Linux into pool
1. Add ZFSBootMenu to `EF00` partition if it doesn't exist already 1. Add ZFSBootMenu to boot partition
1. Configure boot method
- Either an EFI image with EFI boot order entries on a UEFI machine
- Or Syslinux with `extlinux` for a legacy BIOS computer
1. Add `pacman` hooks to keep ZFSBootMenu images (and `extlinux`) updated
1. Exit into Arch Linux live CD ISO image shell for you to `reboot` and frolick 1. Exit into Arch Linux live CD ISO image shell for you to `reboot` and frolick
## Flavor choices # Flavor choices
We make the following opinionated flavor choices. Feel free to change them to your liking. We make the following opinionated flavor choices. Feel free to change them to your liking.
@ -139,7 +145,7 @@ We make the following opinionated flavor choices. Feel free to change them to yo
- Timezone is `Etc/UTC` - Timezone is `Etc/UTC`
- Check `timedatectl set-timezone <tzdata-zone>` - Check `timedatectl set-timezone <tzdata-zone>`
## Post-run manual steps # Post-run manual steps
After installation you're going to want to at least touch these points in your new Arch Linux install: After installation you're going to want to at least touch these points in your new Arch Linux install: