diff --git a/README.md b/README.md index ba1f52e..0c77827 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,34 @@ We expect minimal prep on your end. Please make sure that before execution the f - The `EF00` EFI partition is mountable, in practical terms this usually only means it has a file system. - No ZFS zpool exists +### How to prep + +On a blank example disk `/dev/sda` you can fulfill the requirements (One `EF00` partition with a file system plus one `BF00` partition) for example like so: +``` +sgdisk --new '1::+100M' --new '2' --typecode '1:EF00' --typecode '2:BF00' /dev/sda +mkfs.vfat /dev/sda1 +``` +> `--new '1::+100M'`: Create partition number `1`. The field separator `:` separates the partition number from start sector. In this case start sector is unspecified so start sector sits at whatever the system's default is for this operation. On a blank disk on an Arch Linux live CD ISO image this will default to sector `2048`. Partition ends at whatever the beginning is `+100M` meaning plus 100 Mebibytes. +> +> `--new '2'`: Create partition number `2`. Both field number 2, the start sector, and field number 3, the end sector, are unspecified, there's no field separator `:`. Field number 2 will be the first free sector - in this case right after partition 1 - and field number 3 will be end of disk. Thus partition `2` will fill the remaining free disk space. +> +> `--typecode '1:EF00'`: Partition 1 gets partition type code `EF00`, an EFI system partition. +> +> `--typecode '2:BF00'`: Partition 2 gets partition type code `BF00`, an Solaris root partition. + +The result will be something like this at which point you can start the `setup.sh` script, see [How to run this?](#how-to-run-this) below for more details. +``` +# lsblk --paths +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS +/dev/loop0 7:0 0 688.5M 1 loop /run/archiso/airootfs +/dev/sr0 11:0 1 810.3M 0 rom /run/archiso/bootmnt +/dev/sda 202:0 0 10G 0 disk +├─/dev/sda1 202:1 0 100M 0 part +└─/dev/sda2 202:2 0 9.9G 0 part +``` + +## ZFS dataset layout + 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`. 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.