diff --git a/config/boards/aml-t95z-plus.tvb b/config/boards/aml-t95z-plus.tvb index cf60b4f1719b..566ccf138b8e 100644 --- a/config/boards/aml-t95z-plus.tvb +++ b/config/boards/aml-t95z-plus.tvb @@ -18,7 +18,7 @@ BOOTPATCHDIR="v2024.04/board_t95z" # This has a 000.patching_config.yaml inside, # Use extlinux and u-boot-menu extension declare -g SRC_EXTLINUX="yes" -declare -g SRC_CMDLINE="loglevel=7 splash=verbose console=ttyAML0,115200" # Those boards are serial-debug only; 'root=LABEL=armbi_root' ? +declare -g SRC_CMDLINE="loglevel=7 console=ttyAML0,115200" # Those boards are serial-debug only; 'root=LABEL=armbi_root' ? enable_extension "u-boot-menu" # this generates the extlinux.conf # Use the blobs for not-exactly-matching SBCs which are also S912. Note: the VIM2 blobs expect DDR4 and fails with "DDR4 chl: Rank0+1 @ 1008MHz" last message. diff --git a/config/bootscripts/boot-cubox.cmd b/config/bootscripts/boot-cubox.cmd index 14ba2339e79a..75add4f63770 100644 --- a/config/bootscripts/boot-cubox.cmd +++ b/config/bootscripts/boot-cubox.cmd @@ -28,7 +28,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rootfstype=${rootfstype} rootwait ${consoleargs} consoleblank=0 video=mxcfb0:dev=hdmi,${disp_mode},if=RGB24,bpp=32 coherent_pool=2M cma=256M@2G rd.dm=0 rd.luks=0 rd.lvm=0 raid=noautodetect pci=nomsi vt.global_cursor_default=0 loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}" diff --git a/config/bootscripts/boot-generic.cmd.template b/config/bootscripts/boot-generic.cmd.template index 6c7dc181a854..76030beb5978 100644 --- a/config/bootscripts/boot-generic.cmd.template +++ b/config/bootscripts/boot-generic.cmd.template @@ -113,7 +113,7 @@ fi if test "${bootlogo}" = "true" ; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi part uuid ${devtype} ${devnum}:${distro_bootpart} l_ubootpart diff --git a/config/bootscripts/boot-genio.cmd b/config/bootscripts/boot-genio.cmd index 0296e3b84a23..b5065d806586 100644 --- a/config/bootscripts/boot-genio.cmd +++ b/config/bootscripts/boot-genio.cmd @@ -84,7 +84,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" diff --git a/config/bootscripts/boot-meson-gx.cmd b/config/bootscripts/boot-meson-gx.cmd index 67e90e4a0824..2d99b902b6db 100644 --- a/config/bootscripts/boot-meson-gx.cmd +++ b/config/bootscripts/boot-meson-gx.cmd @@ -25,7 +25,7 @@ if test "${console}" = "serial"; then setenv consoleargs "console=ttyAML0,115200 if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi if test "${disable_vu7}" = "false"; then setenv usbhidquirks "usbhid.quirks=0x0eef:0x0005:0x0004"; fi diff --git a/config/bootscripts/boot-meson-s4t7.cmd b/config/bootscripts/boot-meson-s4t7.cmd index b5d64394d29c..e0141ec415e7 100644 --- a/config/bootscripts/boot-meson-s4t7.cmd +++ b/config/bootscripts/boot-meson-s4t7.cmd @@ -33,7 +33,7 @@ fi if test "${bootlogo}" = "true"; then setenv plymouthargs "splash plymouth.ignore-serial-consoles" else - setenv plymouthargs "splash=verbose" + setenv plymouthargs "" fi setenv bootargs "${bootargs} root=${rootdev} rootfstype=${rootfstype} rw fsck.repair=yes rootwait ${consoleargs} partition_type=generic loglevel=${verbosity} ${plymouthargs} ${extraargs} ${extraboardargs}" diff --git a/config/bootscripts/boot-meson64.cmd b/config/bootscripts/boot-meson64.cmd index 7f6066eebba4..fe4a9559c54d 100644 --- a/config/bootscripts/boot-meson64.cmd +++ b/config/bootscripts/boot-meson64.cmd @@ -114,7 +114,7 @@ if test -e ${devtype} ${devnum} ${prefix}zImage; then if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 coherent_pool=2M loglevel=${verbosity} ${amlogic} no_console_suspend fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=${hdmimode} cvbsmode=576cvbs max_freq_a55=${max_freq_a55} maxcpus=${maxcpus} voutmode=${voutmode} ${cmode} disablehpd=${disablehpd} cvbscable=${cvbscable} overscan=${overscan} ${hid_quirks} monitor_onoff=${monitor_onoff} ${cec_enable} sdrmode=${sdrmode}" @@ -135,7 +135,7 @@ else if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi if test "${disable_vu7}" = "false"; then setenv usbhidquirks "usbhid.quirks=0x0eef:0x0005:0x0004"; fi diff --git a/config/bootscripts/boot-mvebu.cmd b/config/bootscripts/boot-mvebu.cmd index c7661b353910..8e40962d4d5a 100644 --- a/config/bootscripts/boot-mvebu.cmd +++ b/config/bootscripts/boot-mvebu.cmd @@ -101,7 +101,7 @@ fi if test "${bootlogo}" = "true" ; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi part uuid ${devtype} ${devnum}:${distro_bootpart} l_ubootpart diff --git a/config/bootscripts/boot-nuvoton-ma35d1.cmd b/config/bootscripts/boot-nuvoton-ma35d1.cmd index 7fe7d29580bb..e066f9b78525 100644 --- a/config/bootscripts/boot-nuvoton-ma35d1.cmd +++ b/config/bootscripts/boot-nuvoton-ma35d1.cmd @@ -75,7 +75,7 @@ fi if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # MA35D1 specific: limit kernel memory if needed (for OP-TEE reserved memory) diff --git a/config/bootscripts/boot-odroid-xu4.ini b/config/bootscripts/boot-odroid-xu4.ini index 42a95c35d8d3..3255e63b6a7d 100644 --- a/config/bootscripts/boot-odroid-xu4.ini +++ b/config/bootscripts/boot-odroid-xu4.ini @@ -27,7 +27,7 @@ if test "${console}" = "serial" || test "${console}" = "both"; then setenv conso if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootrootfs "${consoleargs} consoleblank=0 loglevel=${verbosity} root=${rootdev} rootfstype=${rootfstype} rootwait rw" diff --git a/config/bootscripts/boot-onecloud.cmd b/config/bootscripts/boot-onecloud.cmd index b8e44338ef56..422c9772d8bb 100644 --- a/config/bootscripts/boot-onecloud.cmd +++ b/config/bootscripts/boot-onecloud.cmd @@ -46,7 +46,7 @@ if test -n "${consoleargs}"; test $? != 0; then if test "${bootlogo}" = "true"; then setenv consoleargs "${consoleargs} splash plymouth.ignore-serial-consoles" else - setenv consoleargs "${consoleargs} splash=verbose" + setenv consoleargs "${consoleargs}" fi fi diff --git a/config/bootscripts/boot-qemu.cmd b/config/bootscripts/boot-qemu.cmd index 825f01b76d0c..a011258ce9b9 100644 --- a/config/bootscripts/boot-qemu.cmd +++ b/config/bootscripts/boot-qemu.cmd @@ -30,7 +30,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rw rootdelay=5 rootwait rootfstype=${rootfstype} ${consoleargs} loglevel=7 apparmor=0 nousb selinux=0 ${extraargs} ${extraboardargs}" diff --git a/config/bootscripts/boot-qrb2210.cmd b/config/bootscripts/boot-qrb2210.cmd index cae718e90dd0..140c6b12ebed 100644 --- a/config/bootscripts/boot-qrb2210.cmd +++ b/config/bootscripts/boot-qrb2210.cmd @@ -36,7 +36,7 @@ if test "${console}" = "serial" || test "${console}" = "both"; then setenv conso if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of partition the boot script was loaded from diff --git a/config/bootscripts/boot-rk322x.cmd b/config/bootscripts/boot-rk322x.cmd index 6a17f144ad4b..688a950189df 100644 --- a/config/bootscripts/boot-rk322x.cmd +++ b/config/bootscripts/boot-rk322x.cmd @@ -37,7 +37,7 @@ if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "earlyprintk root=${rootdev} console=ttyS2,115200n8 console=tty1 rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" diff --git a/config/bootscripts/boot-rk3506.cmd b/config/bootscripts/boot-rk3506.cmd index d3bdbfaff3fc..622b426d7b43 100644 --- a/config/bootscripts/boot-rk3506.cmd +++ b/config/bootscripts/boot-rk3506.cmd @@ -32,7 +32,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-rk3576.cmd b/config/bootscripts/boot-rk3576.cmd index cf1157a0e173..ed31a5361722 100644 --- a/config/bootscripts/boot-rk3576.cmd +++ b/config/bootscripts/boot-rk3576.cmd @@ -31,7 +31,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-rk35xx.cmd b/config/bootscripts/boot-rk35xx.cmd index d65181e815b7..569d7510eaaf 100644 --- a/config/bootscripts/boot-rk35xx.cmd +++ b/config/bootscripts/boot-rk35xx.cmd @@ -31,7 +31,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-rockchip.cmd b/config/bootscripts/boot-rockchip.cmd index 33c5b456bb1e..a828198de303 100644 --- a/config/bootscripts/boot-rockchip.cmd +++ b/config/bootscripts/boot-rockchip.cmd @@ -32,7 +32,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-rockchip64-ttyS0.cmd b/config/bootscripts/boot-rockchip64-ttyS0.cmd index 905f56d5572b..01f2c54d2251 100644 --- a/config/bootscripts/boot-rockchip64-ttyS0.cmd +++ b/config/bootscripts/boot-rockchip64-ttyS0.cmd @@ -31,7 +31,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-rockchip64.cmd b/config/bootscripts/boot-rockchip64.cmd index c215824a31af..824c0e940eab 100644 --- a/config/bootscripts/boot-rockchip64.cmd +++ b/config/bootscripts/boot-rockchip64.cmd @@ -31,7 +31,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/config/bootscripts/boot-sun50i-next.cmd b/config/bootscripts/boot-sun50i-next.cmd index 0bd8b1b425c2..b3d53ac42c3f 100644 --- a/config/bootscripts/boot-sun50i-next.cmd +++ b/config/bootscripts/boot-sun50i-next.cmd @@ -72,7 +72,7 @@ if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC it was loaded from diff --git a/config/bootscripts/boot-sun50iw9.cmd b/config/bootscripts/boot-sun50iw9.cmd index c55a656f940c..06f5e0f0b8c4 100644 --- a/config/bootscripts/boot-sun50iw9.cmd +++ b/config/bootscripts/boot-sun50iw9.cmd @@ -29,7 +29,7 @@ if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC it was loaded from diff --git a/config/bootscripts/boot-sunxi.cmd b/config/bootscripts/boot-sunxi.cmd index 86f5f7052979..dfbae52c4c17 100644 --- a/config/bootscripts/boot-sunxi.cmd +++ b/config/bootscripts/boot-sunxi.cmd @@ -83,7 +83,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} hdmi.audio=EDID:0 disp.screen0_output_mode=${disp_mode} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=${devtype} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}" diff --git a/config/bootscripts/boot-udoo.cmd b/config/bootscripts/boot-udoo.cmd index f8e1b2758dd3..65d1e7990483 100644 --- a/config/bootscripts/boot-udoo.cmd +++ b/config/bootscripts/boot-udoo.cmd @@ -28,7 +28,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi setenv bootargs "root=${rootdev} rootfstype=${rootfstype} rootwait ${consoleargs} video=mxcfb0:dev=hdmi,${disp_mode},if=RGB24,bpp=32 rd.dm=0 rd.luks=0 rd.lvm=0 raid=noautodetect pci=nomsi ahci_imx.hotplug=1 vt.global_cursor_default=0 loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}" diff --git a/config/bootscripts/boot-xpressreal-t3.cmd b/config/bootscripts/boot-xpressreal-t3.cmd index 39e9ea438daf..79cd16f5dbe6 100644 --- a/config/bootscripts/boot-xpressreal-t3.cmd +++ b/config/bootscripts/boot-xpressreal-t3.cmd @@ -28,7 +28,7 @@ if test "${earlycon}" = "on"; then setenv consoleargs "earlycon=uart8250,mmio32, if test "${bootlogo}" = "true"; then setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}" else - setenv consoleargs "splash=verbose ${consoleargs}" + setenv consoleargs "${consoleargs}" fi # get PARTUUID of first partition on SD/eMMC the boot script was loaded from diff --git a/extensions/grub-riscv64.sh b/extensions/grub-riscv64.sh index b665291eb0ed..161c2cd3dc74 100644 --- a/extensions/grub-riscv64.sh +++ b/extensions/grub-riscv64.sh @@ -112,9 +112,17 @@ configure_grub() { [[ -n "$SERIALCON" ]] && GRUB_CMDLINE_LINUX_DEFAULT+=" console=${SERIALCON}" - [[ "$BOOT_LOGO" == "yes" || "$BOOT_LOGO" == "desktop" && "$BUILD_DESKTOP" == "yes" ]] && - GRUB_CMDLINE_LINUX_DEFAULT+=" quiet splash plymouth.ignore-serial-consoles i915.force_probe=* loglevel=3" || - GRUB_CMDLINE_LINUX_DEFAULT+=" splash=verbose i915.force_probe=*" + # Kernel cmdline. Always pass the graphical-Plymouth flags + # regardless of whether this image is being built as CLI or + # desktop — same reasoning as in extensions/grub.sh: users + # add a desktop later via armbian-config and we can't + # regenerate grub.cfg from there. Plymouth handles the + # "no theme installed" / "no DRM" cases gracefully. + # (No i915.force_probe here — that's an x86 Intel-graphics + # driver knob and is meaningless on riscv64. No 'quiet' / + # 'loglevel=3' either: kernel boot messages stay visible + # underneath the splash so users can see what's happening.) + GRUB_CMDLINE_LINUX_DEFAULT+=" splash plymouth.ignore-serial-consoles" # Enable Armbian Wallpaper on GRUB if [[ "${VENDOR}" == Armbian ]]; then @@ -135,7 +143,7 @@ configure_grub() { GRUB_DISTRIBUTOR="${UEFI_GRUB_DISTRO_NAME}" # On GRUB menu will show up as "Armbian GNU/Linux" (will show up in some UEFI BIOS boot menu (F8?) as "armbian", not on others) GRUB_DISABLE_OS_PROBER=false # Have to be explicit about enabling os-prober GRUB_GFXMODE=1024x768 - GRUB_GFXPAYLOAD=keep + GRUB_GFXPAYLOAD_LINUX=text # See extensions/grub.sh — correct var name is GRUB_GFXPAYLOAD_LINUX, not GRUB_GFXPAYLOAD, and 'text' disables Ubuntu's vt.handoff=7 injection. GRUB_DISABLE_UUID=false # Be explicit about wanting UUID GRUB_DISABLE_LINUX_UUID=false # Be explicit about wanting UUID grubCfgFrag diff --git a/extensions/grub.sh b/extensions/grub.sh index 8e835f0e5a5f..84061ae39d9b 100644 --- a/extensions/grub.sh +++ b/extensions/grub.sh @@ -265,9 +265,29 @@ configure_grub() { [[ -n "$SERIALCON" ]] && GRUB_CMDLINE_LINUX_DEFAULT+=" console=${SERIALCON}" - [[ "$BOOT_LOGO" == "yes" || "$BOOT_LOGO" == "desktop" && "$BUILD_DESKTOP" == "yes" ]] && - GRUB_CMDLINE_LINUX_DEFAULT+=" quiet splash plymouth.ignore-serial-consoles i915.force_probe=* loglevel=3" || - GRUB_CMDLINE_LINUX_DEFAULT+=" splash=verbose i915.force_probe=*" + # Kernel cmdline. We always pass the graphical-Plymouth flags + # (splash plymouth.ignore-serial-consoles) on UEFI x86, + # regardless of whether this image is being built as CLI or + # desktop. Two reasons: + # 1. Users routinely add a desktop later via armbian-config + # and we don't want that to require regenerating grub.cfg. + # The .cfg is baked once at image-build time and stays + # put across desktop installs. + # 2. Plymouth handles the "no theme installed" / "no DRM" + # cases gracefully — the flags are harmless on a CLI + # install. They are NOT harmless when wrong: the previous + # 'splash=verbose' value was rejected by the kernel + # ("Unknown kernel command line parameters splash=verbose" + # in dmesg) AND interpreted by Plymouth as "render the + # verbose/text theme", so a desktop installed later still + # booted to a black/text screen. + # + # Deliberately NO 'quiet' and NO 'loglevel=3' here. Plymouth + # still draws the splash on top of the kernel boot messages, + # but the messages remain visible underneath so users can see + # what their system is doing. Press Esc during boot to drop + # the splash and read the messages directly. + GRUB_CMDLINE_LINUX_DEFAULT+=" splash plymouth.ignore-serial-consoles i915.force_probe=*" # Enable Armbian Wallpaper on GRUB if [[ "${VENDOR}" == Armbian ]]; then @@ -290,7 +310,7 @@ configure_grub() { GRUB_DISABLE_SUBMENU=y # Do not put all kernel options into a submenu, instead, list them all on the main menu. GRUB_DISABLE_OS_PROBER=false # Have to be explicit about enabling os-prober GRUB_FONT="/usr/share/grub/unicode.pf2" # Be explicit about the font to use so Ubuntu does not freak out and mess gfxterm - GRUB_GFXPAYLOAD=keep + GRUB_GFXPAYLOAD_LINUX=text # Note the correct var name is GRUB_GFXPAYLOAD_LINUX, not GRUB_GFXPAYLOAD (the latter is silently ignored). The 'text' value disables Ubuntu's vt.handoff=7 injection: Ubuntu's grub2 10_linux only expands 'vt.handoff=7' inside grub.cfg's gfxmode function when the gfxpayload arg is exactly 'keep'. Setting it to 'text' makes the runtime check fail and the framebuffer console stays bound to fbcon for the entire userspace lifetime — which is what we want, otherwise after Plymouth quits on a CLI install (or after the user uninstalls the desktop), the kernel hands the framebuffer to VT7 waiting for an X server, nothing ever claims it, and the local console goes black even though getty@tty1 is running. GRUB_DISABLE_UUID=false # Be explicit about wanting UUID GRUB_DISABLE_LINUX_UUID=false # Be explicit about wanting UUID grubCfgFrag diff --git a/packages/bsp/common/lib/systemd/system/getty@tty1.service.d/10-noclear.conf b/packages/bsp/common/lib/systemd/system/getty@tty1.service.d/10-noclear.conf index 52671c758d83..6224c8583cbe 100644 --- a/packages/bsp/common/lib/systemd/system/getty@tty1.service.d/10-noclear.conf +++ b/packages/bsp/common/lib/systemd/system/getty@tty1.service.d/10-noclear.conf @@ -1,2 +1,12 @@ [Service] TTYVTDisallocate=no +# Drop the upstream --noclear from ExecStart so agetty wipes the +# screen before painting its issue/login banner. Without this +# override, kernel boot messages stay visible above the login +# prompt on tty1 — Plymouth ran (so we expected a clean screen) +# but agetty's default --noclear preserves whatever was on the +# console at handoff time. The empty ExecStart= line is required +# by systemd to clear the inherited value before we set the new +# one. +ExecStart= +ExecStart=-/sbin/agetty -o '-p -- \\u' - $TERM