summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2024-11-20 01:19:27 +0000
committerLeah Rowe <leah@libreboot.org>2024-11-20 01:19:27 +0000
commiteb14a176bc8e2b943ab0e36159fd86b4a556708e (patch)
tree18ce50db3ffb9690a1a04f19678c223a8099c24c
parent279e69172f724eab326b52f0aa2c64003c4e1f7f (diff)
Only boot 32-bit u-boot from grub, 64 from seabios
For some reason, 32-bit U-Boot only works when executed from GRUB, but not SeaBIOS; 64-bit U-Boot only works from SeaBIOS! This will have to be investigated. Standalone U-Boot, where U-Boot is the primary payload, has not yet been tested in Libreboot, and will not be provided for some time due to stability concerns. More testing is needed! Signed-off-by: Leah Rowe <leah@libreboot.org>
-rw-r--r--config/grub/default/config/payload22
-rw-r--r--config/grub/nvme/config/payload22
-rw-r--r--config/grub/xhci/config/payload22
-rw-r--r--include/rom.sh3
4 files changed, 56 insertions, 13 deletions
diff --git a/config/grub/default/config/payload b/config/grub/default/config/payload
index c2036c72..05e64bbd 100644
--- a/config/grub/default/config/payload
+++ b/config/grub/default/config/payload
@@ -216,24 +216,38 @@ menuentry 'Load test configuration (grubtest.cfg) inside of CBFS [t]' --hotkey=
fi
}
fi
-if [ -f (cbfsdisk)/img/u-boot ]; then
-menuentry 'Experimental U-Boot UEFI payload (try from SeaBIOS ESC menu if GRUB fails) [u]' --hotkey='u' {
+if [ -f (cbfsdisk)/u-boot ]; then
+menuentry 'U-Boot i386 payload (experimental) [u]' --hotkey='u' {
set root='cbfsdisk'
- chainloader /img/u-boot
+ chainloader /u-boot
}
fi
if [ -f (cbfsdisk)/seabios.elf ]; then
-menuentry 'Load SeaBIOS (payload) [b]' --hotkey='b' {
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Load SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /seabios.elf
}
+else
+menuentry 'Load SeaBIOS [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /seabios.elf
+}
+fi
fi
if [ -f (cbfsdisk)/img/grub2 ]; then
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Return to SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /fallback/payload
+}
+else
menuentry 'Return to SeaBIOS [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /fallback/payload
}
fi
+fi
menuentry 'Poweroff [p]' --hotkey='p' {
halt
}
diff --git a/config/grub/nvme/config/payload b/config/grub/nvme/config/payload
index 1d7c06d4..52b8dfd9 100644
--- a/config/grub/nvme/config/payload
+++ b/config/grub/nvme/config/payload
@@ -234,24 +234,38 @@ menuentry 'Load test configuration (grubtest.cfg) inside of CBFS [t]' --hotkey=
fi
}
fi
-if [ -f (cbfsdisk)/img/u-boot ]; then
-menuentry 'Experimental U-Boot UEFI payload (try from SeaBIOS ESC menu if GRUB fails) [u]' --hotkey='u' {
+if [ -f (cbfsdisk)/u-boot ]; then
+menuentry 'U-Boot i386 payload (experimental) [u]' --hotkey='u' {
set root='cbfsdisk'
- chainloader /img/u-boot
+ chainloader /u-boot
}
fi
if [ -f (cbfsdisk)/seabios.elf ]; then
-menuentry 'Load SeaBIOS (payload) [b]' --hotkey='b' {
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Load SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /seabios.elf
}
+else
+menuentry 'Load SeaBIOS [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /seabios.elf
+}
+fi
fi
if [ -f (cbfsdisk)/img/grub2 ]; then
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Return to SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /fallback/payload
+}
+else
menuentry 'Return to SeaBIOS [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /fallback/payload
}
fi
+fi
menuentry 'Poweroff [p]' --hotkey='p' {
halt
}
diff --git a/config/grub/xhci/config/payload b/config/grub/xhci/config/payload
index dea4cdce..6a0fc250 100644
--- a/config/grub/xhci/config/payload
+++ b/config/grub/xhci/config/payload
@@ -235,24 +235,38 @@ menuentry 'Load test configuration (grubtest.cfg) in CBFS [t]' --hotkey='t' {
fi
}
fi
-if [ -f (cbfsdisk)/img/u-boot ]; then
-menuentry 'Experimental U-Boot UEFI payload (try from SeaBIOS ESC menu if GRUB fails) [u]' --hotkey='u' {
+if [ -f (cbfsdisk)/u-boot ]; then
+menuentry 'U-Boot i386 payload (experimental) [u]' --hotkey='u' {
set root='cbfsdisk'
- chainloader /img/u-boot
+ chainloader /u-boot
}
fi
if [ -f (cbfsdisk)/seabios.elf ]; then
-menuentry 'Load SeaBIOS (payload) [b]' --hotkey='b' {
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Load SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /seabios.elf
}
+else
+menuentry 'Load SeaBIOS [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /seabios.elf
+}
+fi
fi
if [ -f (cbfsdisk)/img/grub2 ]; then
+if [ -f (cbfsdisk)/img/u-boot ]; then
+menuentry 'Return to SeaBIOS (U-Boot UEFI available in the ESC menu) [b]' --hotkey='b' {
+ set root='cbfsdisk'
+ chainloader /fallback/payload
+}
+else
menuentry 'Return to SeaBIOS [b]' --hotkey='b' {
set root='cbfsdisk'
chainloader /fallback/payload
}
fi
+fi
menuentry 'Poweroff [p]' --hotkey='p' {
halt
}
diff --git a/include/rom.sh b/include/rom.sh
index 808f83a4..96c7081a 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -187,8 +187,9 @@ add_uboot()
[ "$payload_uboot_amd64" = "y" ]; then
ubcbfsargs="-l 0x1110000 -e 0x1110000" # 64-bit and 32-bit
# on 64-bit, 0x1120000 is the SPL, and stub before that
- ubpath="img/u-boot"
+ ubpath="img/u-boot" # 64-bit
ubtarget="amd64coreboot"
+ [ "$payload_uboot_i386" = "y" ] && ubpath="u-boot" # 32-bit
[ "$payload_uboot_i386" = "y" ] && ubtarget="i386coreboot"; :
fi