refactor(meta): Update function numbering (#3)

This commit is contained in:
hygienic-books 2023-10-20 18:58:25 +02:00
parent 503ab0b58b
commit 7093621049

117
setup.sh
View File

@ -42,6 +42,7 @@ function install_pkgs () {
} }
function prepare_zfsbootmenu_efi_bin_pkg () { function prepare_zfsbootmenu_efi_bin_pkg () {
#1.4
# Our Arch Linux will use prebuilt ZFSBootMenu UEFI image files for ease # Our Arch Linux will use prebuilt ZFSBootMenu UEFI image files for ease
# of use. We'd like to install them from within our chroot but the AUR # of use. We'd like to install them from within our chroot but the AUR
# package 'zfsbootmenu-efi-bin' that we're using currently (Friday, # package 'zfsbootmenu-efi-bin' that we're using currently (Friday,
@ -90,7 +91,7 @@ function prepare_zfsbootmenu_efi_bin_pkg () {
} }
function install_zfs () { function install_zfs () {
#1.4 #1.5
declare reset_colors='\033[0m' declare reset_colors='\033[0m'
curl -s 'https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init' | bash curl -s 'https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init' | bash
printf -- "${reset_colors}" printf -- "${reset_colors}"
@ -261,7 +262,7 @@ function export_pool () {
} }
function setup_zpool () { function setup_zpool () {
#1.4 #1.6
local drive_by_id local drive_by_id
zpool_drive="$(select_part 'zfs')" zpool_drive="$(select_part 'zfs')"
drive_by_id="$(get_drive_id "${zpool_drive}")" drive_by_id="$(get_drive_id "${zpool_drive}")"
@ -281,7 +282,7 @@ function setup_zpool () {
} }
function mount_system () { function mount_system () {
#1.5 #1.7
zfs mount "${zpool_name}"'/root/'"${zfs_arch_dataset_name}" zfs mount "${zpool_name}"'/root/'"${zfs_arch_dataset_name}"
zfs mount -a zfs mount -a
@ -294,12 +295,13 @@ function mount_system () {
} }
function copy_zpool_cache () { function copy_zpool_cache () {
#1.6 #1.8
mkdir -p '/mnt/etc/zfs' mkdir -p '/mnt/etc/zfs'
zpool set 'cachefile=/etc/zfs/'"${zpool_name}"'.cache' "${zpool_name}" zpool set 'cachefile=/etc/zfs/'"${zpool_name}"'.cache' "${zpool_name}"
} }
function pacman_dl_parallel () { function pacman_dl_parallel () {
#2.4
# We're setting this in Arch Linux ISO CD while we install proper Arch. # We're setting this in Arch Linux ISO CD while we install proper Arch.
# No need to revert this later as it is ephemeral anyway. # No need to revert this later as it is ephemeral anyway.
sed -ri -e 's'$'\x1''^.*?(ParallelDownloads)[^\r\n\f]*'$'\x1''\1 = 20'$'\x1''g' '/etc/pacman.conf' sed -ri -e 's'$'\x1''^.*?(ParallelDownloads)[^\r\n\f]*'$'\x1''\1 = 20'$'\x1''g' '/etc/pacman.conf'
@ -320,7 +322,7 @@ function pacman_dont_check_space () {
} }
function install_archlinux () { function install_archlinux () {
#1.7 #1.9
pacman_dl_parallel pacman_dl_parallel
pacman_dont_check_space pacman_dont_check_space
pacstrap /mnt \ pacstrap /mnt \
@ -347,7 +349,7 @@ function install_archlinux () {
} }
function gen_fstab () { function gen_fstab () {
#1.8 #1.10
genfstab -U /mnt | grep -v "${zpool_name}" | tr -s '\n' | sed -r -e 's/\/mnt//' -e '/./,$!d' > '/mnt/etc/fstab' genfstab -U /mnt | grep -v "${zpool_name}" | tr -s '\n' | sed -r -e 's/\/mnt//' -e '/./,$!d' > '/mnt/etc/fstab'
} }
@ -360,7 +362,7 @@ EOF
} }
function set_hostname () { function set_hostname () {
#1.9 #1.11
declare new_hostname declare new_hostname
install_pkgs 'pwgen' install_pkgs 'pwgen'
new_hostname="$(pwgen --no-numerals --no-capitalize --ambiguous 8)" new_hostname="$(pwgen --no-numerals --no-capitalize --ambiguous 8)"
@ -369,7 +371,7 @@ function set_hostname () {
} }
function set_locale () { function set_locale () {
#1.10 #1.12
printf -- '%s\n' \ printf -- '%s\n' \
'KEYMAP=de-latin1' \ 'KEYMAP=de-latin1' \
'FONT=Lat2-Terminus16' \ 'FONT=Lat2-Terminus16' \
@ -380,7 +382,7 @@ function set_locale () {
} }
function add_zfs_hook_to_initramfs () { function add_zfs_hook_to_initramfs () {
#1.11 #1.13
# Add zfs hook, remove fsck hook from initramfs. # Add zfs hook, remove fsck hook from initramfs.
sed -ri \ sed -ri \
-e 's'$'\x1''(HOOKS=)(.*?[\(| ])(filesystems)([\)| ][^\r\n\f]*)'$'\x1''\1\2zfs \3\4'$'\x1''g' \ -e 's'$'\x1''(HOOKS=)(.*?[\(| ])(filesystems)([\)| ][^\r\n\f]*)'$'\x1''\1\2zfs \3\4'$'\x1''g' \
@ -395,7 +397,7 @@ function add_zfs_hook_to_initramfs () {
} }
function set_initramfs_build_list () { function set_initramfs_build_list () {
#1.12 #1.14
# No need to build fallback initramfs, our new fallback is ZFS snapshots # No need to build fallback initramfs, our new fallback is ZFS snapshots
sed -ri \ sed -ri \
-e '/^#/d' \ -e '/^#/d' \
@ -409,14 +411,14 @@ function set_initramfs_build_list () {
} }
function add_zfs_files_to_new_os () { function add_zfs_files_to_new_os () {
#1.13 #1.15
for zfs_file in '/etc/hostid' '/etc/zfs/zpool.cache' $([[ ! "${ARCHZBM_ZFSPROPS_NO_ENCRYPTION}" ]] && printf -- '%s' '/etc/zfs/'"${zpool_name}"'.key'); do for zfs_file in '/etc/hostid' '/etc/zfs/zpool.cache' $([[ ! "${ARCHZBM_ZFSPROPS_NO_ENCRYPTION}" ]] && printf -- '%s' '/etc/zfs/'"${zpool_name}"'.key'); do
rsync -av --itemize-changes {'','/mnt'}"${zfs_file}" rsync -av --itemize-changes {'','/mnt'}"${zfs_file}"
done done
} }
function enter_chroot () { function enter_chroot () {
#1.14 #2.1
arch-chroot /mnt /bin/bash -xe <<EOF arch-chroot /mnt /bin/bash -xe <<EOF
curl --silent '${this_script_url}' | bash curl --silent '${this_script_url}' | bash
EOF EOF
@ -482,6 +484,7 @@ function create_unpriv_user () {
} }
function unleash_makepkg () { function unleash_makepkg () {
#2.5
local path_prefix local path_prefix
path_prefix='/mnt' path_prefix='/mnt'
if we_are_changerooted; then if we_are_changerooted; then
@ -493,6 +496,7 @@ function unleash_makepkg () {
} }
function get_aur_helper () { function get_aur_helper () {
#2.7
create_unpriv_user 'build' create_unpriv_user 'build'
usermod --append --groups 'wheel' 'build' usermod --append --groups 'wheel' 'build'
printf -- '%s\n' '%wheel ALL=(ALL:ALL) NOPASSWD: ALL' > '/etc/sudoers.d/10-wheel-group-no-passwd-prompt' printf -- '%s\n' '%wheel ALL=(ALL:ALL) NOPASSWD: ALL' > '/etc/sudoers.d/10-wheel-group-no-passwd-prompt'
@ -551,6 +555,7 @@ function paru_install () {
} }
function install_zbm_image () { function install_zbm_image () {
#2.8
# This takes image files written earlier in our Arch Linux live CD ISO # This takes image files written earlier in our Arch Linux live CD ISO
# image at prepare_zfsbootmenu_efi_bin_pkg() and installs them via their # image at prepare_zfsbootmenu_efi_bin_pkg() and installs them via their
# locally built package file. When done we delete the manually built # locally built package file. When done we delete the manually built
@ -560,6 +565,7 @@ function install_zbm_image () {
} }
function keep_initiramfs_root_only_rw () { function keep_initiramfs_root_only_rw () {
#2.3
declare systemd_local_admin_override_path unit_name declare systemd_local_admin_override_path unit_name
systemd_local_admin_override_path='/etc/systemd/system' systemd_local_admin_override_path='/etc/systemd/system'
unit_name='chmod-initramfs' unit_name='chmod-initramfs'
@ -591,6 +597,7 @@ EOF
} }
function add_motd_getting_started_msg () { function add_motd_getting_started_msg () {
#2.6
cat > '/etc/motd' <<"EOF" cat > '/etc/motd' <<"EOF"
#################### ####################
@ -606,7 +613,7 @@ EOF
} }
function install_os_in_chroot () { function install_os_in_chroot () {
#1.16 #2.2
### Reinit keyring ### Reinit keyring
# As keyring is initialized at boot, and copied to the install dir with pacstrap, and ntp is running # As keyring is initialized at boot, and copied to the install dir with pacstrap, and ntp is running
# Time changed after keyring initialization, it leads to malfunction # Time changed after keyring initialization, it leads to malfunction
@ -616,11 +623,11 @@ function install_os_in_chroot () {
pacman-key --populate archlinux pacman-key --populate archlinux
pacman -S archlinux-keyring --noconfirm pacman -S archlinux-keyring --noconfirm
keep_initiramfs_root_only_rw keep_initiramfs_root_only_rw #2.3
pacman_dl_parallel pacman_dl_parallel #2.4
unleash_makepkg unleash_makepkg #2.5
add_motd_getting_started_msg add_motd_getting_started_msg #2.6
get_aur_helper get_aur_helper #2.7
paru_install --replace-conflicting 'paru-bin' paru_install --replace-conflicting 'paru-bin'
paru_install 'zfs-dkms' 'zfs-utils' 'rsync' paru_install 'zfs-dkms' 'zfs-utils' 'rsync'
hwclock --systohc hwclock --systohc
@ -629,16 +636,16 @@ function install_os_in_chroot () {
mkinitcpio -P mkinitcpio -P
# Install ZFSBootMenu image # Install ZFSBootMenu image
install_zbm_image install_zbm_image #2.8
} }
function set_root_pw () { function set_root_pw () {
#2.1 #3.2
printf -- '%s\n' 'root:password' | chpasswd --root '/mnt' printf -- '%s\n' 'root:password' | chpasswd --root '/mnt'
} }
function configure_networking () { function configure_networking () {
#2.2 #3.3
cat > '/mnt/etc/systemd/network/50-wired.network' <<"EOF" cat > '/mnt/etc/systemd/network/50-wired.network' <<"EOF"
[Match] [Match]
Name=en* Name=en*
@ -656,7 +663,7 @@ EOF
} }
function configure_dns () { function configure_dns () {
#2.3 #3.4
rm '/mnt/etc/resolv.conf' rm '/mnt/etc/resolv.conf'
ln -s '/run/systemd/resolve/stub-resolv.conf' '/mnt/etc/resolv.conf' ln -s '/run/systemd/resolve/stub-resolv.conf' '/mnt/etc/resolv.conf'
@ -667,17 +674,17 @@ function configure_dns () {
} }
function configure_reflector () { function configure_reflector () {
#2.4 #3.5
systemctl enable 'reflector' --root='/mnt' systemctl enable 'reflector' --root='/mnt'
} }
function configure_zfs () { function configure_zfs () {
#2.5 #3.6
systemctl enable 'zfs-import-cache' 'zfs-mount' 'zfs-import.target' 'zfs.target' --root='/mnt' systemctl enable 'zfs-import-cache' 'zfs-mount' 'zfs-import.target' 'zfs.target' --root='/mnt'
} }
function configure_zfs_mount_gen () { function configure_zfs_mount_gen () {
#2.6 #3.7
mkdir -p '/mnt/etc/zfs/zfs-list.cache' mkdir -p '/mnt/etc/zfs/zfs-list.cache'
touch '/mnt/etc/zfs/zfs-list.cache/'"${zpool_name}" touch '/mnt/etc/zfs/zfs-list.cache/'"${zpool_name}"
zfs list -H -o name,mountpoint,canmount,atime,relatime,devices,exec,readonly,setuid,nbmand | sed 's/\/mnt//' > '/mnt/etc/zfs/zfs-list.cache/'"${zpool_name}" zfs list -H -o name,mountpoint,canmount,atime,relatime,devices,exec,readonly,setuid,nbmand | sed 's/\/mnt//' > '/mnt/etc/zfs/zfs-list.cache/'"${zpool_name}"
@ -685,12 +692,12 @@ function configure_zfs_mount_gen () {
} }
function configure_zfsbootmenu () { function configure_zfsbootmenu () {
#2.7 #3.8
zfs set org.zfsbootmenu:commandline='rw nowatchdog rd.vconsole.keymap=de-latin1' "${zpool_name}"'/root/'"${zfs_arch_dataset_name}" zfs set org.zfsbootmenu:commandline='rw nowatchdog rd.vconsole.keymap=de-latin1' "${zpool_name}"'/root/'"${zfs_arch_dataset_name}"
} }
function gen_zfsbootmenu () { function gen_zfsbootmenu () {
#2.8 #3.9
arch-chroot /mnt /bin/bash -xe <<"EOF" arch-chroot /mnt /bin/bash -xe <<"EOF"
source /etc/locale.conf source /etc/locale.conf
mkdir -p '/efi/EFI/ZBM' mkdir -p '/efi/EFI/ZBM'
@ -713,7 +720,7 @@ function get_disks_with_one_efipart () {
} }
function add_zbm_to_efi () { function add_zbm_to_efi () {
#2.9 #3.10
if ! efibootmgr | grep -Piq -- 'ZFSBootMenu'; then if ! efibootmgr | grep -Piq -- 'ZFSBootMenu'; then
local efi_disks_list local efi_disks_list
efi_disks_list="$(get_disks_with_one_efipart)" efi_disks_list="$(get_disks_with_one_efipart)"
@ -729,48 +736,48 @@ function add_zbm_to_efi () {
} }
function umount_all () { function umount_all () {
#2.10 #3.11
umount '/mnt/efi' umount '/mnt/efi'
zfs umount -a zfs umount -a
zpool export "${zpool_name}" zpool export "${zpool_name}"
} }
function finalize_os_setup () { function finalize_os_setup () {
#1.15 #3.1
set_root_pw #2.1 set_root_pw #3.2
configure_networking #2.2 configure_networking #3.3
configure_dns #2.3 configure_dns #3.4
configure_reflector #2.4 configure_reflector #3.5
configure_zfs #2.5 configure_zfs #3.6
configure_zfs_mount_gen #2.6 configure_zfs_mount_gen #3.7
configure_zfsbootmenu #2.7 configure_zfsbootmenu #3.8
gen_zfsbootmenu #2.8 gen_zfsbootmenu #3.9
add_zbm_to_efi #2.9 add_zbm_to_efi #3.10
umount_all #2.10 umount_all #3.11
} }
function main () { function main () {
if we_are_changerooted; then if we_are_changerooted; then
install_os_in_chroot #1.16 install_os_in_chroot #2.2
else else
set_ntp #1.1 set_ntp #1.1
update_pacman_db #1.2 update_pacman_db #1.2
install_pkgs 'base-devel' 'git' 'jq' #1.3 install_pkgs 'base-devel' 'git' 'jq' #1.3
prepare_zfsbootmenu_efi_bin_pkg prepare_zfsbootmenu_efi_bin_pkg #1.4
install_zfs #1.4 install_zfs #1.5
setup_zpool #1.4 setup_zpool #1.6
mount_system #1.5 mount_system #1.7
copy_zpool_cache #1.6 copy_zpool_cache #1.8
install_archlinux #1.7 install_archlinux #1.9
gen_fstab #1.8 gen_fstab #1.10
set_hostname #1.9 set_hostname #1.11
set_locale #1.10 set_locale #1.12
add_zfs_hook_to_initramfs #1.11 add_zfs_hook_to_initramfs #1.13
set_initramfs_build_list #1.12 set_initramfs_build_list #1.14
add_zfs_files_to_new_os #1.13 add_zfs_files_to_new_os #1.15
enter_chroot #1.14 enter_chroot #2.1
# We're done in chroot # We're done in chroot
finalize_os_setup #1.15 finalize_os_setup #3.1
fi fi
} }