Improve menu and generation

This commit is contained in:
Joshua Boniface 2023-09-01 15:41:53 -04:00
parent 6b5d16968a
commit d9f43c47c4
5 changed files with 68 additions and 35 deletions

View File

@ -9,17 +9,25 @@
liveisofile="$( pwd )/debian-live-buster-DI-rc1-amd64-standard.iso" liveisofile="$( pwd )/debian-live-buster-DI-rc1-amd64-standard.iso"
fail() {
echo $@
exit 1
}
which debootstrap &>/dev/null || fail "This script requires debootstrap." which debootstrap &>/dev/null || fail "This script requires debootstrap."
which mksquashfs &>/dev/null || fail "This script requires squashfs." which mksquashfs &>/dev/null || fail "This script requires squashfs."
which xorriso &>/dev/null || fail "This script requires xorriso." which xorriso &>/dev/null || fail "This script requires xorriso."
tempdir=$( mktemp -d ) tempdir=$( mktemp -d )
cleanup() {
echo -n "Cleaning up... "
sudo rm -rf ${tempdir} &>/dev/null
echo "done."
echo
}
fail() {
echo $@
cleanup
exit 1
}
prepare_iso() { prepare_iso() {
echo -n "Creating directories... " echo -n "Creating directories... "
mkdir ${tempdir}/rootfs/ ${tempdir}/installer/ || fail "Error creating temporary 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 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." sudo umount ${iso_tempdir} &>/dev/null || fail "Error unmounting LiveISO file."
rmdir ${iso_tempdir} &>/dev/null 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." echo "done."
} }
@ -63,11 +69,20 @@ prepare_rootfs() {
echo "done." echo "done."
echo -n "Generating squashfs image of live installation... " 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." echo "done."
} }
build_iso() { 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... " echo -n "Creating LiveCD ISO... "
pushd ${tempdir}/installer &>/dev/null pushd ${tempdir}/installer &>/dev/null
xorriso -as mkisofs \ xorriso -as mkisofs \
@ -87,16 +102,13 @@ build_iso() {
echo "done." echo "done."
echo -n "Moving generated ISO to '$(pwd)/pvc-installer.iso'... " 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." echo "done."
} }
prepare_iso prepare_iso
prepare_rootfs prepare_rootfs
build_iso build_iso
cleanup
echo -n "Cleaning up... "
sudo rm -rf ${tempdir} &>/dev/null
echo "done."
echo
echo "PVC Live Installer ISO generation complete." echo "PVC Live Installer ISO generation complete."

View File

@ -28,7 +28,7 @@ set loopback="findiso=${iso_path}"
fi fi
set timeout=10 set timeout=10
menuentry "PVC Live Installer" { menuentry "PVC Live Installer TEST" {
linux /live/vmlinuz boot=live components splash quiet "${loopback}" linux /live/vmlinuz boot=live components splash quiet "${loopback}"
initrd /live/initrd.img initrd /live/initrd.img
} }

View File

@ -155,6 +155,23 @@ set -o errexit
exec 1> >( tee -ia ${logfile} ) exec 1> >( tee -ia ${logfile} )
exec 2> >( tee -ia ${logfile} >/dev/null ) 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... " echo -n "Bringing up primary network interface in ${target_netformat} mode... "
case ${target_netformat} in case ${target_netformat} in
'static') 'static')
@ -190,34 +207,34 @@ partprobe >&2
echo "done." echo "done."
echo -n "Creating LVM PV... " echo -n "Creating LVM PV... "
pvcreate -ffy ${target_disk}3 >&2 yes | pvcreate -ffy ${target_disk}3 >&2
echo "done." echo "done."
echo -n "Creating LVM VG named 'vgx'... " echo -n "Creating LVM VG named 'vgx'... "
vgcreate vgx ${target_disk}3 >&2 yes | vgcreate vgx ${target_disk}3 >&2
echo "done." echo "done."
echo -n "Creating root logical volume (16GB, ext4)... " echo -n "Creating root logical volume (16GB, ext4)... "
lvcreate -L 16G -n root vgx >&2 lvcreate -L 16G -n root vgx >&2
mkfs.ext4 /dev/vgx/root >&2 yes | mkfs.ext4 /dev/vgx/root >&2
echo "done." echo "done."
echo -n "Creating ceph logical volume (16GB, ext4)... " 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 mkfs.ext4 /dev/vgx/ceph >&2
echo "done." echo "done."
echo -n "Creating swap logical volume (8GB)... " echo -n "Creating swap logical volume (8GB)... "
lvcreate -L 8G -n swap vgx >&2 lvcreate -L 8G -n swap vgx >&2
mkswap -f /dev/vgx/swap >&2 yes | mkswap -f /dev/vgx/swap >&2
echo "done." echo "done."
echo -n "Creating boot partition filesystem... " echo -n "Creating boot partition filesystem... "
mkfs.ext2 ${target_disk}2 >&2 yes | mkfs.ext2 ${target_disk}2 >&2
echo "done." echo "done."
echo -n "Creating ESP partition filesystem... " echo -n "Creating ESP partition filesystem... "
mkdosfs -F32 ${target_disk}1 >&2 yes | mkdosfs -F32 ${target_disk}1 >&2
echo "done." echo "done."
echo -n "Mounting disks on temporary target... " 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 chroot ${target} update-grub >&2
echo "done." echo "done."
echo -n "Cleaning up... " cleanup
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
titlestring_text="| PVC node installation finished. Press <Enter> to reboot into the installed system. |" titlestring_text="| PVC node installation finished. Press <Enter> to reboot into the installed system. |"
titlestring_len="$( wc -c <<<"${titlestring_text}" )" titlestring_len="$( wc -c <<<"${titlestring_text}" )"

View File

@ -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 MENU title PVC Live Installer
DEFAULT PVC Live Installer MENU default PVC Live Installer
TIMEOUT 10 MENU clear
LABEL PVC Live Installer LABEL PVC Live Installer
SAY "Booting PVC Live Installer..." SAY "Booting PVC Live Installer..."
linux /live/vmlinuz linux /live/vmlinuz

BIN
splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB