diff --git a/setup.sh b/setup.sh index 5ad0ade..4c32551 100644 --- a/setup.sh +++ b/setup.sh @@ -31,7 +31,7 @@ disks=`dialog --separate-output --no-cancel --no-items --title "Root devices" -- raidtype=`dialog --no-items --no-cancel --title "Root pool ZFS RAID" --radiolist "Select root pool ZFS RAID type:" 12 35 5 raidz off raidz2 off raidz3 off mirror off none off 2>&1 1>/dev/tty` hostname=""; while [ -z "$hostname" ]; do hostname=`dialog --no-cancel --inputbox "Hostname:" 8 40 2>&1 >/dev/tty`; done nicdevices=""; for nic in $(ip -o link show | awk -F': ' '{print $2}' | grep -v '^lo'); do nicdevices="$nicdevices $nic off"; done -nics=`dialog --separate-output --no-cancel --no-items --title "Network devices for bridge" --checklist "Select the network devices to be bridged" $height $width ${window}$nicdevices 2>&1 1>/dev/tty` +nics=`dialog --separate-output --no-cancel --no-items --title "Bridged network devices" --checklist "Select the network devices to be bridged to br0:" $height $width ${window}$nicdevices 2>&1 1>/dev/tty` admin=""; while [ -z "$admin" ]; do admin=`dialog --no-cancel --inputbox "Admin user:" 8 40 2>&1 >/dev/tty`; done rootpassword=`dialog --no-cancel --title "Root password" --insecure --passwordbox "Enter root password:" 8 40 2>&1 1>/dev/tty` confirmpassword=`dialog --no-cancel --title "Root password confirmation" --insecure --passwordbox "Re-enter root password:" 8 40 2>&1 1>/dev/tty` @@ -204,7 +204,6 @@ echo "ln -s /proc/self/mounts /etc/mtab" >> /mnt/setup-chroot.sh echo "echo \"Done.\"" >> /mnt/setup-chroot.sh echo "echo \"\"" >> /mnt/setup-chroot.sh echo "echo \"Updating apt repositories on root pool...\"" >> /mnt/setup-chroot.sh -#echo "apt update" >> /mnt/setup-chroot.sh echo 'errors=`apt update 2>&1 1>/dev/null`' >> /mnt/setup-chroot.sh echo 'if ! [ "$?" = "0" ]; then '>> /mnt/setup-chroot.sh echo ' echo "Failed to update apt repositories on root pool - $errors"' >> /mnt/setup-chroot.sh @@ -225,8 +224,8 @@ echo "cp /usr/share/zoneinfo/$timezone /etc/localtime" >> /mnt/setup-chroot.sh echo "echo \"Done.\"" >> /mnt/setup-chroot.sh echo "echo \"\"" >> /mnt/setup-chroot.sh -echo "echo \"Installing linux image, bash, screen, tmux, zfs, dosfstools, openssh...\"" >> /mnt/setup-chroot.sh -echo "errors=\$(apt install -y --no-install-recommends linux-image-generic 2>&1 1>/dev/null && apt install -y vim bash screen tmux zfs-initramfs dosfstools openssh-server 2>&1 1>/dev/null)" >> /mnt/setup-chroot.sh +echo "echo \"Installing linux image, bash, screen, tmux, zfs, dosfstools, openssh, ufw...\"" >> /mnt/setup-chroot.sh +echo "errors=\$(apt install -y --no-install-recommends linux-image-generic 2>&1 1>/dev/null && apt install -y vim bash screen tmux zfs-initramfs dosfstools openssh-server ufw 2>&1 1>/dev/null)" >> /mnt/setup-chroot.sh echo 'if ! [ "$?" = "0" ]; then '>> /mnt/setup-chroot.sh echo ' echo "Failed to install preliminary software - $errors"' >> /mnt/setup-chroot.sh echo " exit 1">> /mnt/setup-chroot.sh @@ -236,9 +235,18 @@ echo "echo \"Done.\"" >> /mnt/setup-chroot.sh echo 'echo ""' >> /mnt/setup-chroot.sh echo 'echo "Creating EFI partition..."' >> /mnt/setup-chroot.sh firstdisk=`echo "$disks" | head -n1` -echo "mkdosfs -F 32 -s 1 -n EFI /dev/disk/by-id/${firstdisk}-part2 && mkdir /boot/efi" >> /mnt/setup-chroot.sh +echo "error=\$(mkdosfs -F 32 -s 1 -n EFI /dev/disk/by-id/${firstdisk}-part2 2>&1 1>/dev/null && mkdir /boot/efi 2>&1 1>/dev/null)" >> /mnt/setup-chroot.sh +echo 'if ! [ "$?" = "0" ]; then '>> /mnt/setup-chroot.sh +echo ' echo "Failed to create dos file system for EFI partition - $errors"' >> /mnt/setup-chroot.sh +echo " exit 100">> /mnt/setup-chroot.sh +echo "fi">> /mnt/setup-chroot.sh echo "echo PARTUUID=$(blkid -s PARTUUID -o value /dev/disk/by-id/${firstdisk}-part2) /boot/efi vfat nofail,x-systemd.device-timeout=0 0 1 >> /etc/fstab" >> /mnt/setup-chroot.sh -echo "mount /boot/efi && apt install -y grub-efi-amd64-signed shim-signed" >> /mnt/setup-chroot.sh +echo "errors=\$(mount /boot/efi 2>&1 1>/dev/null && apt install -y grub-efi-amd64-signed shim-signed 2>&1 1>/dev/null)" >> /mnt/setup-chroot.sh +echo 'if ! [ "$?" = "0" ]; then '>> /mnt/setup-chroot.sh +echo ' echo "Failed to mount EFI partition or install grub-EFI - $errors"' >> /mnt/setup-chroot.sh +echo " exit 1">> /mnt/setup-chroot.sh +echo "fi">> /mnt/setup-chroot.sh + echo 'echo "Done..."' >> /mnt/setup-chroot.sh if ! [ "$disks" = "" ]; then @@ -282,7 +290,11 @@ echo "fi">> /mnt/setup-chroot.sh echo "echo \"Done.\"" >> /mnt/setup-chroot.sh # you need sed to do this right! -# GRUB_CMDLINE_LINUX="root=ZFS=rpool/ROOT/ubuntu" <--- replace this +echo 'echo ""' >> /mnt/setup-chroot.sh +echo 'echo "Modifying grub for ZFS root..."' >> /mnt/setup-chroot.sh +# check for errors here, it can happen +echo "sed -ir 's/GRUB_CMDLINE_LINUX=\".*\"/GRUB_CMDLINE_LINUX=\"root=ZFS=rpool/ROOT/ubuntu\"' /etc/defaults/grub" >> /mnt/setup-chroot.sh +echo 'echo "Done."' >> /mnt/setup-chroot.sh echo 'echo ""' >> /mnt/setup-chroot.sh echo 'echo "Updating grub..."' >> /mnt/setup-chroot.sh @@ -306,9 +318,15 @@ echo "zfs set mountpoint=legacy rpool/var/tmp" >> /mnt/setup-chroot.sh echo "echo \"rpool/var/tmp /var/tmp zfs nodev,relatime 0 0\" >> /etc/fstab" >> /mnt/setup-chroot.sh echo "zfs set mountpoint=legacy rpool/tmp" >> /mnt/setup-chroot.sh echo "echo \"rpool/tmp /tmp zfs nodev,relatime 0 0\" >> /etc/fstab" >> /mnt/setup-chroot.sh -echo "systemctl enable ssh">> /mnt/setup-chroot.sh - +echo 'echo ""' >> /mnt/setup-chroot.sh +echo 'echo "Enabling SSH..."'>> /mnt/setup-chroot.sh +echo "errors=\$(systemctl enable ssh 2>&1 1>/dev/null && ufw allow in port 22 proto tcp 2>&1 1>/dev/null)">> /mnt/setup-chroot.sh +echo 'if ! [ "$?" = "0" ]; then '>> /mnt/setup-chroot.sh +echo ' echo "Failed to enable SSH - $errors"' >> /mnt/setup-chroot.sh +echo " exit 101">> /mnt/setup-chroot.sh +echo "fi">> /mnt/setup-chroot.sh +echo 'echo "Done."'>> /mnt/setup-chroot.sh # create parker user automated way echo "useradd $admin" >> /mnt/setup-chroot.sh @@ -319,23 +337,19 @@ echo "echo '${admin}:${rootpassword}' | chpasswd" >> /mnt/setup-chroot.sh #create swap space, too if necessary - - echo "exit 0" >> /mnt/setup-chroot.sh -#exit 0 - - - - - - - +errors=$(chmod +x /mnt/setup-chroot.sh 2>&1 1>/dev/null) +if ! ["$?" = "0" ]; then + echo "Failed to set execution permission on chroot script - $errors" + exit 45 +fi -chmod +x /mnt/setup-chroot.sh -echo "Done." -chroot /mnt /setup-chroot.sh -#--login +results=`chroot /mnt /setup-chroot.sh` +if ! [ "$?" = "0" ]; then + echo "Error in chroot environment - $results" + exit $? +fi #echo "" #echo "Clearing chroot configuration script..."