3-xen-orchestra-install #4
							
								
								
									
										78
									
								
								setup.sh
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								setup.sh
									
									
									
									
									
								
							| @@ -22,10 +22,12 @@ function we_are_changerooted () { | ||||
| } | ||||
|  | ||||
| function set_ntp () { | ||||
|     #1.1 | ||||
|     timedatectl set-ntp true | ||||
| } | ||||
|  | ||||
| function update_pacman_db () { | ||||
|     #1.2 | ||||
|     printf -- '%s\n' 'Refreshing mirror list ...' | ||||
|     systemctl start reflector | ||||
|     # In an ISO and for the minimal number of packages we need we do not | ||||
| @@ -34,11 +36,13 @@ function update_pacman_db () { | ||||
| } | ||||
|  | ||||
| function install_pkgs () { | ||||
|     #1.3 | ||||
|     printf -- '%s\n' 'Installing packages ...' | ||||
|     pacman -S --needed --noconfirm "${@}" | ||||
| } | ||||
|  | ||||
| function install_zfs () { | ||||
|     #1.4 | ||||
|     declare reset_colors='\033[0m' | ||||
|     curl -s 'https://raw.githubusercontent.com/eoli3n/archiso-zfs/master/init' | bash | ||||
|     printf -- "${reset_colors}" | ||||
| @@ -209,6 +213,7 @@ function export_pool () { | ||||
| } | ||||
|  | ||||
| function setup_zpool () { | ||||
|     #1.4 | ||||
|     local drive_by_id | ||||
|     zpool_drive="$(select_part 'zfs')" | ||||
|     drive_by_id="$(get_drive_id "${zpool_drive}")" | ||||
| @@ -228,6 +233,7 @@ function setup_zpool () { | ||||
| } | ||||
|  | ||||
| function mount_system () { | ||||
|     #1.5 | ||||
|     zfs mount "${zpool_name}"'/root/'"${zfs_arch_dataset_name}" | ||||
|     zfs mount -a | ||||
|  | ||||
| @@ -240,6 +246,7 @@ function mount_system () { | ||||
| } | ||||
|  | ||||
| function copy_zpool_cache () { | ||||
|     #1.6 | ||||
|     mkdir -p '/mnt/etc/zfs' | ||||
|     zpool set 'cachefile=/etc/zfs/'"${zpool_name}"'.cache' "${zpool_name}" | ||||
| } | ||||
| @@ -260,6 +267,7 @@ function pacman_dont_check_space () { | ||||
| } | ||||
|  | ||||
| function install_archlinux () { | ||||
|     #1.7 | ||||
|     pacman_dl_parallel | ||||
|     pacman_dont_check_space | ||||
|     pacstrap /mnt              \ | ||||
| @@ -286,6 +294,7 @@ function install_archlinux () { | ||||
| } | ||||
|  | ||||
| function gen_fstab () { | ||||
|     #1.8 | ||||
|     genfstab -U /mnt | grep -v "${zpool_name}" | tr -s '\n' | sed -r -e 's/\/mnt//' -e '/./,$!d' > '/mnt/etc/fstab' | ||||
| } | ||||
|  | ||||
| @@ -298,6 +307,7 @@ EOF | ||||
| } | ||||
|  | ||||
| function set_hostname () { | ||||
|     #1.9 | ||||
|     declare new_hostname | ||||
|     install_pkgs 'pwgen' | ||||
|     new_hostname="$(pwgen --no-numerals --no-capitalize --ambiguous 8)" | ||||
| @@ -306,6 +316,7 @@ function set_hostname () { | ||||
| } | ||||
|  | ||||
| function set_locale () { | ||||
|     #1.10 | ||||
|     printf -- '%s\n' \ | ||||
|         'KEYMAP=de-latin1' \ | ||||
|         'FONT=Lat2-Terminus16' \ | ||||
| @@ -316,6 +327,7 @@ function set_locale () { | ||||
| } | ||||
|  | ||||
| function add_zfs_hook_to_initramfs () { | ||||
|     #1.11 | ||||
|     # Add zfs hook, remove fsck hook from initramfs. | ||||
|     sed -ri \ | ||||
|         -e 's'$'\x1''(HOOKS=)(.*?[\(| ])(filesystems)([\)| ][^\r\n\f]*)'$'\x1''\1\2zfs \3\4'$'\x1''g' \ | ||||
| @@ -330,6 +342,7 @@ function add_zfs_hook_to_initramfs () { | ||||
| } | ||||
|  | ||||
| function set_initramfs_build_list () { | ||||
|     #1.12 | ||||
|     # No need to build fallback initramfs, our new fallback is ZFS snapshots | ||||
|     sed -ri \ | ||||
|         -e '/^#/d' \ | ||||
| @@ -343,12 +356,14 @@ function set_initramfs_build_list () { | ||||
| } | ||||
|  | ||||
| function add_zfs_files_to_new_os () { | ||||
|     #1.13 | ||||
|     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}" | ||||
|     done | ||||
| } | ||||
|  | ||||
| function enter_chroot () { | ||||
|     #1.14 | ||||
|     arch-chroot /mnt /bin/bash -xe <<EOF | ||||
| curl --silent '${this_script_url}' | bash | ||||
| EOF | ||||
| @@ -522,10 +537,12 @@ function install_os_in_chroot () { | ||||
| } | ||||
|  | ||||
| function set_root_pw () { | ||||
|     #2.1 | ||||
|     printf -- '%s\n' 'root:password' | chpasswd --root '/mnt' | ||||
| } | ||||
|  | ||||
| function configure_networking () { | ||||
|     #2.2 | ||||
|     cat > '/mnt/etc/systemd/network/50-wired.network' <<"EOF" | ||||
| [Match] | ||||
| Name=en* | ||||
| @@ -543,6 +560,7 @@ EOF | ||||
| } | ||||
|  | ||||
| function configure_dns () { | ||||
|     #2.3 | ||||
|     rm '/mnt/etc/resolv.conf' | ||||
|     ln -s '/run/systemd/resolve/stub-resolv.conf' '/mnt/etc/resolv.conf' | ||||
|  | ||||
| @@ -553,14 +571,17 @@ function configure_dns () { | ||||
| } | ||||
|  | ||||
| function configure_reflector () { | ||||
|     #2.4 | ||||
|     systemctl enable 'reflector' --root='/mnt' | ||||
| } | ||||
|  | ||||
| function configure_zfs () { | ||||
|     #2.5 | ||||
|     systemctl enable 'zfs-import-cache' 'zfs-mount' 'zfs-import.target' 'zfs.target' --root='/mnt' | ||||
| } | ||||
|  | ||||
| function configure_zfs_mount_gen () { | ||||
|     #2.6 | ||||
|     mkdir -p '/mnt/etc/zfs/zfs-list.cache' | ||||
|     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}" | ||||
| @@ -568,6 +589,7 @@ function configure_zfs_mount_gen () { | ||||
| } | ||||
|  | ||||
| function configure_zfsbootmenu () { | ||||
|     #2.7 | ||||
|     curl -s 'https://raw.githubusercontent.com/zbm-dev/zfsbootmenu/master/etc/zfsbootmenu/mkinitcpio.conf' | sed -r -e '/^#/d' -e '/^$/d' > '/mnt/etc/zfsbootmenu/mkinitcpio.conf' | ||||
|     cat > '/mnt/etc/zfsbootmenu/config.yaml' <<EOF | ||||
| Global: | ||||
| @@ -590,6 +612,7 @@ EOF | ||||
| } | ||||
|  | ||||
| function gen_zfsbootmenu () { | ||||
|     #2.8 | ||||
|     arch-chroot /mnt /bin/bash -xe <<"EOF" | ||||
| source /etc/locale.conf | ||||
| mkdir -p '/efi/EFI/ZBM' | ||||
| @@ -612,6 +635,7 @@ function get_disks_with_one_efipart () { | ||||
| } | ||||
|  | ||||
| function add_zbm_to_efi () { | ||||
|     #2.9 | ||||
|     if ! efibootmgr | grep -Piq -- 'ZFSBootMenu'; then | ||||
|         local efi_disks_list | ||||
|         efi_disks_list="$(get_disks_with_one_efipart)" | ||||
| @@ -627,45 +651,47 @@ function add_zbm_to_efi () { | ||||
| } | ||||
|  | ||||
| function umount_all () { | ||||
|     #2.10 | ||||
|     umount '/mnt/efi' | ||||
|     zfs umount -a | ||||
|     zpool export "${zpool_name}" | ||||
| } | ||||
|  | ||||
| function finalize_os_setup () { | ||||
|     set_root_pw | ||||
|     configure_networking | ||||
|     configure_dns | ||||
|     configure_reflector | ||||
|     configure_zfs | ||||
|     configure_zfs_mount_gen | ||||
|     configure_zfsbootmenu | ||||
|     gen_zfsbootmenu | ||||
|     add_zbm_to_efi | ||||
|     umount_all | ||||
|     #1.15 | ||||
|     set_root_pw             #2.1 | ||||
|     configure_networking    #2.2 | ||||
|     configure_dns           #2.3 | ||||
|     configure_reflector     #2.4 | ||||
|     configure_zfs           #2.5 | ||||
|     configure_zfs_mount_gen #2.6 | ||||
|     configure_zfsbootmenu   #2.7 | ||||
|     gen_zfsbootmenu         #2.8 | ||||
|     add_zbm_to_efi          #2.9 | ||||
|     umount_all              #2.10 | ||||
| } | ||||
|  | ||||
| function main () { | ||||
|     if we_are_changerooted; then | ||||
|         install_os_in_chroot | ||||
|     else | ||||
|         set_ntp | ||||
|         update_pacman_db | ||||
|         install_pkgs 'jq' | ||||
|         install_zfs | ||||
|         setup_zpool | ||||
|         mount_system | ||||
|         copy_zpool_cache | ||||
|         install_archlinux | ||||
|         gen_fstab | ||||
|         set_hostname | ||||
|         set_locale | ||||
|         add_zfs_hook_to_initramfs | ||||
|         set_initramfs_build_list | ||||
|         add_zfs_files_to_new_os | ||||
|         enter_chroot | ||||
|         set_ntp                     #1.1 | ||||
|         update_pacman_db            #1.2 | ||||
|         install_pkgs 'jq'           #1.3 | ||||
|         install_zfs                 #1.4 | ||||
|         setup_zpool                 #1.4 | ||||
|         mount_system                #1.5 | ||||
|         copy_zpool_cache            #1.6 | ||||
|         install_archlinux           #1.7 | ||||
|         gen_fstab                   #1.8 | ||||
|         set_hostname                #1.9 | ||||
|         set_locale                  #1.10 | ||||
|         add_zfs_hook_to_initramfs   #1.11 | ||||
|         set_initramfs_build_list    #1.12 | ||||
|         add_zfs_files_to_new_os     #1.13 | ||||
|         enter_chroot                #1.14 | ||||
|         # We're done in chroot | ||||
|         finalize_os_setup | ||||
|         finalize_os_setup           #1.15 | ||||
|     fi | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user