2023-02-19 06:20:56 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# arch-zbm
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Helper script to install Arch Linux with ZFSBootMenu from within a running Arch Linux live CD ISO image
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Prep
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								We expect minimal prep on your end. Please make sure that before execution the following conditions are met.
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  Arch Linux live CD ISO image sees exactly one partition with partition type code `BF00`  ("Solaris root") 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Arch Linux live CD ISO image sees exactly one partition with partition type code `EF00`  ("EFI system partition") 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:17:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-  No ZFS zpool exists 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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.
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# How to run this?
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Boot an Arch Linux live CD ISO image 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-  Run: 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ```
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:01:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    export SCRIPT_URL='https://quico.space/quico-os-setup/arch-zbm/raw/branch/main/setup.sh'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    curl -s "${SCRIPT_URL}" | bash
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ```
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    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.
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:17:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Steps
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The scripts takes the following installation steps.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								1.  Install ZFS tools and kernel module with [github.com/eoli3n/archiso-zfs ](https://github.com/eoli3n/archiso-zfs ) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Create one encrypted ZFS zpool on top of `BF00`  partition, password `password`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Create dataset for Arch Linux and `/home`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Install Arch Linux into pool 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Add ZFSBootMenu to `EF00`  partition if it doesn't exist already 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								1.  Exit into Arch Linux live CD ISO image shell for you to `reboot`  and frolick 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Flavor choices
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								We make the following opinionated flavor choices. Feel free to change them to your liking.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Arch Linux locale is set to `en_US.UTF-8`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Keymap is set `de-latin1`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    *  Consult `/etc/vconsole.conf` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    *  Change `zfs set org.zfsbootmenu:commandline=...` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  No X.Org Server, Wayland compositors or other GUI elements get installed 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 21:22:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Post-run manual steps
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								After installation you're goig to want to at least touch these points in your new Arch Linux install:
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 21:22:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 22:35:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Hostname: Installation chose a pseudo-randomly generated 8-character string with `pwgen`  
						 
					
						
							
								
									
										
										
										
											2023-02-19 21:22:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Unprivileged user accounts: The OS was installed only with a `root`  account 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Passwords 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    *  ZFS: The password for all datasets underneath `zpool`  is `password` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    *  Local `root`  account: The local `root`  account's password is `password` .
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 21:37:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Arch User Repository (AUR) helper: We installed [paru ](https://github.com/Morganamilo/paru ) as our AUR helper, we installed from GitHub via `makepkg -si` . You may want to replace that by an AUR native installation e.g. by doing `paru paru` . 
						 
					
						
							
								
									
										
										
										
											2023-02-19 21:22:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Development
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Conventional commits
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This project uses [Conventional Commits ](https://www.conventionalcommits.org/ ) for its commit messages.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Commit types
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Commit _types_  besides `fix`  and `feat`  are:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `build` : Project structure, directory layout, build instructions for roll-out 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `refactor` : Keeping functionality while streamlining or otherwise improving function flow 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `test` : Working on test coverage 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `docs` : Documentation for project or components 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Commit scopes
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The following _scopes_  are known for this project. A Conventional Commits commit message may optionally use one of the following scopes or none:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:38:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  `iso` : Changing Arch Linux ISO CD 
						 
					
						
							
								
									
										
										
										
											2023-02-19 20:22:01 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  `zbm` : Adjusting ZFSBootMenu's behavior 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `zfs` : A change to how ZFS interacts with the system, either a pool or a dataset 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `os` : Getting an perating system set up to correctly work in a ZFS boot environment 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `meta` : Affects the project's repo layout, readme content, file names etc.