summaryrefslogtreecommitdiff
path: root/configs/baseline/grub/grub.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'configs/baseline/grub/grub.cfg')
-rw-r--r--configs/baseline/grub/grub.cfg105
1 files changed, 90 insertions, 15 deletions
diff --git a/configs/baseline/grub/grub.cfg b/configs/baseline/grub/grub.cfg
index 3d0234a..540ba68 100644
--- a/configs/baseline/grub/grub.cfg
+++ b/configs/baseline/grub/grub.cfg
@@ -1,29 +1,104 @@
+# Load partition table and file system modules
insmod part_gpt
insmod part_msdos
insmod fat
insmod iso9660
+insmod ntfs
+insmod ntfscomp
+insmod exfat
+insmod udf
-insmod all_video
-
-insmod font
-
+# Use graphics-mode output
if loadfont "${prefix}/fonts/unicode.pf2" ; then
- insmod gfxterm
+ insmod all_video
set gfxmode="auto"
terminal_input console
- terminal_output gfxterm
+ terminal_output console
fi
-menuentry "Parabola GNU/Linux-libre (x86_64, UEFI)" {
+# Enable serial console
+insmod serial
+insmod usbserial_common
+insmod usbserial_ftdi
+insmod usbserial_pl2303
+insmod usbserial_usbdebug
+if serial --unit=0 --speed=115200; then
+ terminal_input --append serial
+ terminal_output --append serial
+fi
+
+# Search for the ISO volume
+if [ -z "${PARABOLAISO_UUID}" ]; then
+ if [ -z "${PARABOLAISO_HINT}" ]; then
+ regexp --set=1:PARABOLAISO_HINT '^\(([^)]+)\)' "${cmdpath}"
+ fi
+ search --no-floppy --set=root --file '%PARABOLAISO_SEARCH_FILENAME%' --hint "${PARABOLAISO_HINT}"
+ probe --set PARABOLAISO_UUID --fs-uuid "${root}"
+fi
+
+# Get a human readable platform identifier
+if [ "${grub_platform}" == 'efi' ]; then
+ parabolaiso_platform='UEFI'
+ if [ "${grub_cpu}" == 'x86_64' ]; then
+ parabolaiso_platform="x64 ${parabolaiso_platform}"
+ elif [ "${grub_cpu}" == 'i386' ]; then
+ parabolaiso_platform="IA32 ${parabolaiso_platform}"
+ else
+ parabolaiso_platform="${grub_cpu} ${parabolaiso_platform}"
+ fi
+elif [ "${grub_platform}" == 'pc' ]; then
+ parabolaiso_platform='BIOS'
+else
+ parabolaiso_platform="${grub_cpu} ${grub_platform}"
+fi
+
+# Set default menu entry
+default=parabola
+timeout=15
+timeout_style=menu
+
+# Menu entries
+
+menuentry "Parabola GNU/Linux-libre (%ARCH%, ${parabolaiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'parabola' {
set gfxpayload=keep
- search --no-floppy --set=root --label %PARABOLAISO_LABEL%
- linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
- initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
+ linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-libre parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=${PARABOLAISO_UUID}
+ initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-libre.img
}
-menuentry "Parabola GNU/Linux-libre (x86_64, UEFI) Copy to RAM" {
- set gfxpayload=keep
- search --no-floppy --set=root --label %PARABOLAISO_LABEL%
- linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% copytoram
- initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
+if [ "${grub_platform}" == 'efi' -a "${grub_cpu}" == 'x86_64' -a -f '/boot/memtest86+/memtest.efi' ]; then
+ menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class gnu --class tool {
+ set gfxpayload=800x600,1024x768
+ linux /boot/memtest86+/memtest.efi
+ }
+fi
+if [ "${grub_platform}" == 'pc' -a -f '/boot/memtest86+/memtest' ]; then
+ menuentry 'Run Memtest86+ (RAM test)' --class memtest86 --class gnu --class tool {
+ set gfxpayload=800x600,1024x768
+ linux /boot/memtest86+/memtest
+ }
+fi
+if [ "${grub_platform}" == 'efi' ]; then
+ if [ "${grub_cpu}" == 'x86_64' -a -f '/shellx64.efi' ]; then
+ menuentry 'UEFI Shell' {
+ chainloader /shellx64.efi
+ }
+ elif [ "${grub_cpu}" == "i386" -a -f '/shellia32.efi' ]; then
+ menuentry 'UEFI Shell' {
+ chainloader /shellia32.efi
+ }
+ fi
+
+ menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
+ fwsetup
+ }
+fi
+
+menuentry 'System shutdown' --class shutdown --class poweroff {
+ echo 'System shutting down...'
+ halt
+}
+
+menuentry 'System restart' --class reboot --class restart {
+ echo 'System rebooting...'
+ reboot
}