feat(iso): add optional kms display boot path
This commit is contained in:
@@ -60,6 +60,8 @@ Rules:
|
|||||||
- Chromium opens `http://localhost/` — the full interactive web UI
|
- Chromium opens `http://localhost/` — the full interactive web UI
|
||||||
- SSH is independent from the desktop path
|
- SSH is independent from the desktop path
|
||||||
- serial console support is enabled for VM boot debugging
|
- serial console support is enabled for VM boot debugging
|
||||||
|
- Default boot keeps the server-safe graphics path (`nomodeset` + forced `fbdev`) for IPMI/BMC consoles
|
||||||
|
- Higher-resolution mode selection is expected only when booting through an explicit `bee.display=kms` menu entry, which disables the forced `fbdev` Xorg config before `lightdm`
|
||||||
|
|
||||||
## ISO build sequence
|
## ISO build sequence
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,11 @@ menuentry "EASY-BEE" {
|
|||||||
initrd @INITRD_LIVE@
|
initrd @INITRD_LIVE@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuentry "EASY-BEE (graphics/KMS)" {
|
||||||
|
linux @KERNEL_LIVE@ @APPEND_LIVE@ bee.display=kms bee.nvidia.mode=normal net.ifnames=0 biosdevname=0 mitigations=off transparent_hugepage=always numa_balancing=disable nowatchdog nosoftlockup
|
||||||
|
initrd @INITRD_LIVE@
|
||||||
|
}
|
||||||
|
|
||||||
menuentry "EASY-BEE (load to RAM)" {
|
menuentry "EASY-BEE (load to RAM)" {
|
||||||
linux @KERNEL_LIVE@ @APPEND_LIVE@ toram nomodeset bee.nvidia.mode=normal net.ifnames=0 biosdevname=0 mitigations=off transparent_hugepage=always numa_balancing=disable nowatchdog nosoftlockup
|
linux @KERNEL_LIVE@ @APPEND_LIVE@ toram nomodeset bee.nvidia.mode=normal net.ifnames=0 biosdevname=0 mitigations=off transparent_hugepage=always numa_balancing=disable nowatchdog nosoftlockup
|
||||||
initrd @INITRD_LIVE@
|
initrd @INITRD_LIVE@
|
||||||
@@ -24,6 +29,11 @@ menuentry "EASY-BEE (NVIDIA GSP=off)" {
|
|||||||
initrd @INITRD_LIVE@
|
initrd @INITRD_LIVE@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuentry "EASY-BEE (graphics/KMS, GSP=off)" {
|
||||||
|
linux @KERNEL_LIVE@ @APPEND_LIVE@ bee.display=kms bee.nvidia.mode=gsp-off net.ifnames=0 biosdevname=0 mitigations=off transparent_hugepage=always numa_balancing=disable nowatchdog nosoftlockup
|
||||||
|
initrd @INITRD_LIVE@
|
||||||
|
}
|
||||||
|
|
||||||
menuentry "EASY-BEE (fail-safe)" {
|
menuentry "EASY-BEE (fail-safe)" {
|
||||||
linux @KERNEL_LIVE@ @APPEND_LIVE@ bee.nvidia.mode=gsp-off memtest noapic noapm nodma nomce nolapic nosmp vga=normal net.ifnames=0 biosdevname=0
|
linux @KERNEL_LIVE@ @APPEND_LIVE@ bee.nvidia.mode=gsp-off memtest noapic noapm nodma nomce nolapic nosmp vga=normal net.ifnames=0 biosdevname=0
|
||||||
initrd @INITRD_LIVE@
|
initrd @INITRD_LIVE@
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ label live-@FLAVOUR@-normal
|
|||||||
initrd @INITRD@
|
initrd @INITRD@
|
||||||
append @APPEND_LIVE@ bee.nvidia.mode=normal
|
append @APPEND_LIVE@ bee.nvidia.mode=normal
|
||||||
|
|
||||||
|
label live-@FLAVOUR@-kms
|
||||||
|
menu label EASY-BEE (^graphics/KMS)
|
||||||
|
linux @LINUX@
|
||||||
|
initrd @INITRD@
|
||||||
|
append @APPEND_LIVE@ bee.display=kms bee.nvidia.mode=normal
|
||||||
|
|
||||||
label live-@FLAVOUR@-toram
|
label live-@FLAVOUR@-toram
|
||||||
menu label EASY-BEE (^load to RAM)
|
menu label EASY-BEE (^load to RAM)
|
||||||
linux @LINUX@
|
linux @LINUX@
|
||||||
@@ -17,6 +23,12 @@ label live-@FLAVOUR@-gsp-off
|
|||||||
initrd @INITRD@
|
initrd @INITRD@
|
||||||
append @APPEND_LIVE@ nomodeset bee.nvidia.mode=gsp-off
|
append @APPEND_LIVE@ nomodeset bee.nvidia.mode=gsp-off
|
||||||
|
|
||||||
|
label live-@FLAVOUR@-kms-gsp-off
|
||||||
|
menu label EASY-BEE (g^raphics/KMS, GSP=off)
|
||||||
|
linux @LINUX@
|
||||||
|
initrd @INITRD@
|
||||||
|
append @APPEND_LIVE@ bee.display=kms bee.nvidia.mode=gsp-off
|
||||||
|
|
||||||
label live-@FLAVOUR@-failsafe
|
label live-@FLAVOUR@-failsafe
|
||||||
menu label EASY-BEE (^fail-safe)
|
menu label EASY-BEE (^fail-safe)
|
||||||
linux @LINUX@
|
linux @LINUX@
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[Unit]
|
||||||
|
Wants=bee-preflight.service
|
||||||
|
After=bee-preflight.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStartPre=/usr/local/bin/bee-display-mode
|
||||||
54
iso/overlay/usr/local/bin/bee-display-mode
Executable file
54
iso/overlay/usr/local/bin/bee-display-mode
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Select Xorg display mode based on kernel cmdline.
|
||||||
|
# Default is the current server-safe path: keep forced fbdev.
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
cmdline_param() {
|
||||||
|
key="$1"
|
||||||
|
for token in $(cat /proc/cmdline 2>/dev/null); do
|
||||||
|
case "$token" in
|
||||||
|
"$key"=*)
|
||||||
|
echo "${token#*=}"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "bee-display-mode: $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
mode="$(cmdline_param bee.display || true)"
|
||||||
|
if [ -z "$mode" ]; then
|
||||||
|
mode="safe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
xorg_dir="/etc/X11/xorg.conf.d"
|
||||||
|
fbdev_conf="${xorg_dir}/10-fbdev.conf"
|
||||||
|
fbdev_park="${xorg_dir}/10-fbdev.conf.disabled"
|
||||||
|
|
||||||
|
mkdir -p "$xorg_dir"
|
||||||
|
|
||||||
|
case "$mode" in
|
||||||
|
kms|auto)
|
||||||
|
if [ -f "$fbdev_conf" ]; then
|
||||||
|
mv "$fbdev_conf" "$fbdev_park"
|
||||||
|
log "mode=${mode}; disabled forced fbdev config"
|
||||||
|
else
|
||||||
|
log "mode=${mode}; fbdev config already disabled"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
safe|fbdev|"")
|
||||||
|
if [ -f "$fbdev_park" ] && [ ! -f "$fbdev_conf" ]; then
|
||||||
|
mv "$fbdev_park" "$fbdev_conf"
|
||||||
|
log "mode=${mode}; restored forced fbdev config"
|
||||||
|
else
|
||||||
|
log "mode=${mode}; keeping forced fbdev config"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log "unknown bee.display=${mode}; keeping forced fbdev config"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user