From d9f43c47c453330fba33517f45ad8ba20aa1ff70 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Fri, 1 Sep 2023 15:41:53 -0400 Subject: [PATCH] Improve menu and generation --- buildiso.sh | 38 +++++++++++++++++++++++++------------- grub.cfg | 2 +- install.sh | 43 +++++++++++++++++++++++++------------------ menu.cfg | 20 +++++++++++++++++--- splash.png | Bin 0 -> 34260 bytes 5 files changed, 68 insertions(+), 35 deletions(-) create mode 100644 splash.png diff --git a/buildiso.sh b/buildiso.sh index d512b30..c109890 100755 --- a/buildiso.sh +++ b/buildiso.sh @@ -9,17 +9,25 @@ liveisofile="$( pwd )/debian-live-buster-DI-rc1-amd64-standard.iso" -fail() { - echo $@ - exit 1 -} - which debootstrap &>/dev/null || fail "This script requires debootstrap." which mksquashfs &>/dev/null || fail "This script requires squashfs." which xorriso &>/dev/null || fail "This script requires xorriso." tempdir=$( mktemp -d ) +cleanup() { + echo -n "Cleaning up... " + sudo rm -rf ${tempdir} &>/dev/null + echo "done." + echo +} + +fail() { + echo $@ + cleanup + exit 1 +} + prepare_iso() { echo -n "Creating directories... " mkdir ${tempdir}/rootfs/ ${tempdir}/installer/ || fail "Error creating temporary directories." @@ -31,8 +39,6 @@ prepare_iso() { sudo rsync -au --exclude live/filesystem.squashfs ${iso_tempdir}/ ${tempdir}/installer/ &>/dev/null || fail "Error extracting LiveISO files." sudo umount ${iso_tempdir} &>/dev/null || fail "Error unmounting LiveISO file." rmdir ${iso_tempdir} &>/dev/null - sudo cp -a grub.cfg ${tempdir}/installer/boot/grub/grub.cfg &>/dev/null || fail "Error copying grub.cfg file." - sudo cp -a menu.cfg ${tempdir}/installer/isolinux/menu.cfg &>/dev/null || fail "Error copying menu.cfg file." echo "done." } @@ -63,11 +69,20 @@ prepare_rootfs() { echo "done." echo -n "Generating squashfs image of live installation... " - sudo nice mksquashfs ${tempdir}/rootfs/ ${tempdir}/installer/live/install.squashfs -e boot &>/dev/null || fail "Error generating squashfs." + if [[ ! -f filesystem.squashfs ]]; then + sudo nice mksquashfs ${tempdir}/rootfs/ ${tempdir}/installer/live/filesystem.squashfs -e boot &>/dev/null || fail "Error generating squashfs." + cp ${tempdir}/installer/live/filesystem.squashfs filesystem.squashfs &>/dev/null + fi echo "done." } build_iso() { + echo -n "Copying live boot configurations... " + sudo cp -a grub.cfg ${tempdir}/installer/boot/grub/grub.cfg &>/dev/null || fail "Error copying grub.cfg file." + sudo cp -a menu.cfg ${tempdir}/installer/isolinux/menu.cfg &>/dev/null || fail "Error copying menu.cfg file." + sudo cp -a splash.png ${tempdir}/installer/isolinux/splash.png &>/dev/null || fail "Error copying splash.png file." + echo "done." + echo -n "Creating LiveCD ISO... " pushd ${tempdir}/installer &>/dev/null xorriso -as mkisofs \ @@ -87,16 +102,13 @@ build_iso() { echo "done." echo -n "Moving generated ISO to '$(pwd)/pvc-installer.iso'... " - mv ${tempdir}/pvc-installer.iso . &>/dev/null || fail "Error moving ISO file." + mv ${tempdir}/pvc-installer.iso pvc-installer-new.iso &>/dev/null || fail "Error moving ISO file." echo "done." } prepare_iso prepare_rootfs build_iso +cleanup -echo -n "Cleaning up... " -sudo rm -rf ${tempdir} &>/dev/null -echo "done." -echo echo "PVC Live Installer ISO generation complete." diff --git a/grub.cfg b/grub.cfg index 718bdf9..43d23e8 100644 --- a/grub.cfg +++ b/grub.cfg @@ -28,7 +28,7 @@ set loopback="findiso=${iso_path}" fi set timeout=10 -menuentry "PVC Live Installer" { +menuentry "PVC Live Installer TEST" { linux /live/vmlinuz boot=live components splash quiet "${loopback}" initrd /live/initrd.img } diff --git a/install.sh b/install.sh index 06e92e3..64c2b2d 100755 --- a/install.sh +++ b/install.sh @@ -155,6 +155,23 @@ set -o errexit exec 1> >( tee -ia ${logfile} ) exec 2> >( tee -ia ${logfile} >/dev/null ) +cleanup() { + echo -n "Cleaning up... " + umount ${target}/sys >&2 + umount ${target}/proc >&2 + umount ${target}/dev/pts >&2 + umount ${target}/dev >&2 + umount ${target}/var/lib/ceph >&2 + umount ${target}/boot/efi >&2 + umount ${target}/boot >&2 + umount ${target} >&2 + vgchange -an >&2 + rmdir ${target} >&2 + echo "done." + echo +} +trap cleanup EXIT + echo -n "Bringing up primary network interface in ${target_netformat} mode... " case ${target_netformat} in 'static') @@ -190,34 +207,34 @@ partprobe >&2 echo "done." echo -n "Creating LVM PV... " -pvcreate -ffy ${target_disk}3 >&2 +yes | pvcreate -ffy ${target_disk}3 >&2 echo "done." echo -n "Creating LVM VG named 'vgx'... " -vgcreate vgx ${target_disk}3 >&2 +yes | vgcreate vgx ${target_disk}3 >&2 echo "done." echo -n "Creating root logical volume (16GB, ext4)... " lvcreate -L 16G -n root vgx >&2 -mkfs.ext4 /dev/vgx/root >&2 +yes | mkfs.ext4 /dev/vgx/root >&2 echo "done." echo -n "Creating ceph logical volume (16GB, ext4)... " -lvcreate -L 16G -n ceph vgx >&2 +yes | lvcreate -L 16G -n ceph vgx >&2 mkfs.ext4 /dev/vgx/ceph >&2 echo "done." echo -n "Creating swap logical volume (8GB)... " lvcreate -L 8G -n swap vgx >&2 -mkswap -f /dev/vgx/swap >&2 +yes | mkswap -f /dev/vgx/swap >&2 echo "done." echo -n "Creating boot partition filesystem... " -mkfs.ext2 ${target_disk}2 >&2 +yes | mkfs.ext2 ${target_disk}2 >&2 echo "done." echo -n "Creating ESP partition filesystem... " -mkdosfs -F32 ${target_disk}1 >&2 +yes | mkdosfs -F32 ${target_disk}1 >&2 echo "done." echo -n "Mounting disks on temporary target... " @@ -287,17 +304,7 @@ chroot ${target} grub-install --target=x86_64-efi ${target_disk} >&2 chroot ${target} update-grub >&2 echo "done." -echo -n "Cleaning up... " -umount ${target}/sys >&2 -umount ${target}/proc >&2 -umount ${target}/dev/pts >&2 -umount ${target}/dev >&2 -umount ${target}/var/lib/ceph >&2 -umount ${target}/boot/efi >&2 -umount ${target}/boot >&2 -umount ${target} >&2 -echo "done." -echo +cleanup titlestring_text="| PVC node installation finished. Press to reboot into the installed system. |" titlestring_len="$( wc -c <<<"${titlestring_text}" )" diff --git a/menu.cfg b/menu.cfg index 6259e1b..f1e028e 100644 --- a/menu.cfg +++ b/menu.cfg @@ -1,7 +1,21 @@ -INCLUDE stdmenu.cfg +UI vesamenu.c32 + +MENU background splash.png +MENU color title * #FFFFFFFF * +MENU color border * #00000000 #00000000 none +MENU color sel * #ffffffff #76a1d0ff * +MENU color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +MENU color timeout_msg * #ffffffff #00000000 none +MENU color tabmsg * #ffffffff #00000000 * +MENU color help 37;40 #ffdddd00 #00000000 * + +MENU vshift 8 + +MENU tabmsg Press ENTER to boot or TAB to edit a menu entry MENU title PVC Live Installer -DEFAULT PVC Live Installer -TIMEOUT 10 +MENU default PVC Live Installer +MENU clear + LABEL PVC Live Installer SAY "Booting PVC Live Installer..." linux /live/vmlinuz diff --git a/splash.png b/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..9bad4222b96826b1053d5c31be39e5af123cadbc GIT binary patch literal 34260 zcmXVXby!s2_cbWO&<#Tf4xw~Ow?hvlh;)aPbm!123@HL4Au%A`-5?>|ogxg~o$vj8 zfA2gG|IFN(d+s@VueJ8tn=fzG6!3AVanR7v@Rby0HPO(X1fij!uY#Tc?=)5^R{`%Y z`fBOAYnpkzaCUY2VEfVPg}aZl)e9?c+Ye}H-t#5jZCx1$@WUQwSpCE1-wwFEH3)NB zUB8uyXHf7@#gJ0Dl|ECneCfORFe4RvizQV6^VG9rZy_5|KWI?c$i40zSqJ;K zwzY9}qo$l@mL5c-X-Rv}uCn)fd0A#Q?xlxDcGqt`bWrO|wJ7Nk?u^qL%hwCnr>z&X zEZx25M|TV7D7RGj-0-PM+K5?ZDEuLvy+gOto3*k2onpqy&GusMB8DiJUd(D!EiYqc}{yxiZCC$&8>He+X%mh(nndp!$>)l?+sRv%0 zzyrT5i4>(*(Kk&Pe%5jsQ4I(`%5YhKk+?0XeWmq)jXDn$&FrCgMP=~Y^yoX+8PS&u zY?0!hYheMguT_##)?>a|AYSMBl_078(u7#&B-eh!_>z>P{Z%TH>S;~vvAvc9Q9rVH zPjMEho`yclxEkoacRy~sZpIYtC7}y><|b+0-I$#fVWqpdC*&0$=bXX&jb`Q6rL4LY z&Qb9NuOHvdB6O$M;xl9|y2Sl7tzO;V^Ff0;s}zM6_PHUvJ4_bSA6p5E-P)ro^CBkt zj)gt8Juoi#1&NOHr^Q??MYSkFp^-`F!)OxvV)ulFzCM`&kg zAH03;k{kaC!M9_RLzv!fy~$cND7vusPRGzziE zv}+32m?V*b?}zc(af;I+x~|&gi1?0XnM6|K20!bASRc29NA2amhkPgwkH^?S5#^=V zZt$T6LOlatAK@hoJ#u}O08yd^fO{-dYg=7E5mMjI+kVZCoV(5S7|(Rze$IvDrHlli$; zp4Yfk-@0StU73)0>m%5VQZHn*m(^# zer}*E*Y}vR{VlJ1^N|M{8$)I1f!KEl7$S5J9p#Jk+ zetR&n1;^SXQWzSV}Y^0LS2i6?vkN)Up9O>mBhg*if zm>p&P(;e@rKoXDts%037qnTgRhn}+Hq6I#*q{)`=jG&gsjL43iL|ZHVE(H-UwX{Z_O-UF zYF`+_u&83=7m71sj9nQ4x}77^JM-vOAz!Pz|FA=TIbR`E{4URQG(KLU&ka(eRL=aN zJ(0b%=x@rO$NuL``1J(fiVFPGaD>cmoG?;`JlMRRuKxYMUnidz=c9JpS2mb3W+Zj+ z$go^xKe8fJ@fp>zQ0i+m)=3|0K3Pln;l4B%0DJKW$$&j5@hyF`@fk0nn;=k-3EtC{ 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