diff --git a/.gitignore b/.gitignore index 6267c4339669cbecac3c4b9e19c838725dbf2d55..45bfe2e316b51e6fde2ed6a968cb0183be917aa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.iso +grub_target.cfg diff --git a/grub_config.sh b/grub_config.sh new file mode 100755 index 0000000000000000000000000000000000000000..e51d12e36156dd80eaa8ab956f8e9b84e7e78cea --- /dev/null +++ b/grub_config.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +function extract_kernel() { + iso_file="$1" + loopback="$(mktemp)" + 7z e -so "$iso_file" boot/grub/loopback.cfg > "$loopback" + grep -m 1 -o "linux.*vmlinuz" "$loopback" | awk '{ print $2 }' + rm "$loopback" +} + +function extract_initrd() { + iso_file="$1" + loopback="$(mktemp)" + 7z e -so "$iso_file" boot/grub/loopback.cfg > "$loopback" + grep -m 1 -o "initrd.*initrd\S*" "$loopback" | awk '{ print $2 }' + rm "$loopback" +} + +function extract_release() { + iso_file="$1" + flavor="$(echo "$iso_file" | cut -d "-" -f 1)" + number="$(echo "$iso_file" | cut -d "-" -f 2)" + echo "${flavor^} $number" # ^ capitalizes 1st letter +} + +function sed_grub_template() { + iso_file="$1" + distribution_grep="$2" # KDE / XFCE + sed_target="$3" + sed "s|__${distribution_grep}_KERNEL__|$(extract_kernel "$iso_file")|g" -i "$sed_target" + sed "s|__${distribution_grep}_INITRD__|$(extract_initrd "$iso_file")|g" -i "$sed_target" + sed "s|__${distribution_grep}_RELEASE__|$(extract_release "$iso_file")|g" -i "$sed_target" + sed "s|__${distribution_grep}_ISONAME__|$iso_file|g" -i "$sed_target" +} + + + +kubuntu=kubuntu-18.04.1-desktop-amd64.iso +xubuntu=xubuntu-18.04.1-desktop-amd64.iso +grub_template="grub_template.cfg" +grub_target="grub_target.cfg" +cp "$grub_template" "$grub_target" +sed_grub_template "$kubuntu" "KDE" "$grub_target" +sed_grub_template "$xubuntu" "XFCE" "$grub_target" diff --git a/grub_template.cfg b/grub_template.cfg new file mode 100644 index 0000000000000000000000000000000000000000..7ee0b9d36ffb5357d28b6956ff659987b43823fd --- /dev/null +++ b/grub_template.cfg @@ -0,0 +1,104 @@ +if loadfont /boot/grub/font.pf2 ; then + set gfxmode=auto + insmod efi_gop + insmod efi_uga + insmod gfxterm + terminal_output gfxterm +fi + +set menu_color_normal=white/black +set menu_color_highlight=black/light-gray +color yellow/black white/red + +set pager=1 +set gfxpayload=keep + +function kde_LoadCasper { + loopback loop ($root)/${kde_isoname} + echo "Loading kernel" + linux (loop)__KDE_KERNEL__ boot=casper file=/isodevice/preseed/lip.seed ${cmdline} iso-scan/filename=/kubuntu.iso sysrq_always_enabled pstore.pstore_disable nosplash verbose -- + echo "Loading initrd" + initrd (loop)__KDE_INITRD__ + echo "Starting kernel" +} + +function kde_menu { + menuentry "Empfohlen: ${kde_release} (deutsch)" { + set cmdline="debian-installer/language=de keyboard-configuration/layoutcode?=de" + kde_LoadCasper + } + + menuentry "Recommended: ${kde_release} (english)" { + set cmdline="" + kde_LoadCasper + } + + menuentry "${kde_release} (deutsch, failsafe)" { + set cmdline="debian-installer/locale=de_DE console-setup/layoutcode=de nomodeset noplymouth nosplash verbose text noacpi" + kde_LoadCasper + } + + menuentry "${kde_release} (english, failsafe)" { + set cmdline="nomodeset noplymouth nosplash verbose text noacpi" + kde_LoadCasper + } + + menuentry "${kde_release} (deutsch, ohne LIPNSA)" { + set cmdline="debian-installer/locale=de_DE console-setup/layoutcode=de fnord" + kde_LoadCasper + } + + menuentry "${kde_release} (english, without LIPNSA)" { + set cmdline="fnord" + kde_LoadCasper + } +} + +function xfce_LoadCasper { + loopback loop ($root)/${xfce_isoname} + echo "Loading kernel" + linux (loop)__XFCE_KERNEL__ boot=casper file=/isodevice/preseed/lip.seed ${cmdline} iso-scan/filename=/kubuntu.iso sysrq_always_enabled pstore.pstore_disable nosplash verbose -- + echo "Loading initrd" + initrd (loop)__XFCE_INITRD__ + echo "Starting kernel" +} + +function xfce_menu { + menuentry "Empfohlen: ${xfce_release} (deutsch)" { + set cmdline="debian-installer/language=de keyboard-configuration/layoutcode?=de" + xfce_LoadCasper + } + + menuentry "Recommended: ${xfce_release} (english)" { + set cmdline="" + xfce_LoadCasper + } + + menuentry "${xfce_release} (deutsch, failsafe)" { + set cmdline="debian-installer/locale=de_DE console-setup/layoutcode=de nomodeset noplymouth nosplash verbose text noacpi" + xfce_LoadCasper + } + + menuentry "${xfce_release} (english, failsafe)" { + set cmdline="nomodeset noplymouth nosplash verbose text noacpi" + xfce_LoadCasper + } + + menuentry "${xfce_release} (deutsch, ohne LIPNSA)" { + set cmdline="debian-installer/locale=de_DE console-setup/layoutcode=de fnord" + xfce_LoadCasper + } + + menuentry "${xfce_release} (english, without LIPNSA)" { + set cmdline="fnord" + xfce_LoadCasper + } +} + +set kde_release="__KDE_RELEASE__" +set kde_isoname="__KDE_ISONAME__" +kde_menu + +set xfce_release="__XFCE_RELEASE__" +set xfce_isoname="__XFCE_ISONAME__" +xfce_menu