linux-metal: cero-parpadeo — deferred-takeover + cmdline quiet (ADR 0010 paso 4)

CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y (fbcon no toca el framebuffer
hasta el primer output ⇒ pantalla negra desde la firmware hasta que mirada abre
el DRM). Cmdline horneada: quiet loglevel=3 vt.global_cursor_default=0, sin el
earlyprintk=efi,keep ignore_loglevel de bringup (forzaban salida y rompían el
deferred-takeover). Orden de consola: ttyS0 ÚLTIMO ⇒ /dev/console=serie ⇒ la
shell de arje-zero sale por serial, no pinta tty0 (pantalla). CONFIG_LOGO ya off.

Fix diagnosticado por captura de framebuffer en OVMF-GOP. Rebuild en curso.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 20:18:16 -04:00
co-authored by Claude Opus 4.8
parent e80f15b6bc
commit 548f30b3ef
+11 -1
View File
@@ -24,6 +24,15 @@
# va horneado: console=tty0 (pantalla) + initrd=/initramfs.cpio.gz (el EFI-stub lo carga de
# la ESP; file.c convierte '/'→'\'). En boot BIOS, GRUB provee su propio cmdline (se
# antepone el embebido, inocuo) y su propio initrd ⇒ ambas ramas conviven.
# - Cero-parpadeo (ADR 0010 paso 4): FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y (fbcon NO toca el
# framebuffer hasta el primer output ⇒ pantalla negra desde la firmware hasta que mirada
# abre el DRM master) + cmdline `quiet loglevel=3 vt.global_cursor_default=0` (sin texto de
# boot ni cursor). Se quitó el `earlyprintk=efi,keep ignore_loglevel` de bringup (forzaba
# salida sobre el FB gráfico, rompía el deferred-takeover). CONFIG_LOGO ya estaba off.
# ORDEN DE CONSOLA: ttyS0 va ÚLTIMO ⇒ /dev/console = serie ⇒ la shell/getty de arje-zero
# sale por el serial, NO por tty0 (pantalla) — si tty0 fuera /dev/console, arje pintaría el
# prompt sobre el FB gráfico y rompería el cero-parpadeo. tty0 queda registrado pero mudo.
# Diagnosticado por captura de framebuffer en OVMF-GOP (2026-07-10).
#
# Conserva TODO lo que hammer necesita (de linux.toml): E1000/OVERLAY_FS(+subfeatures)/USER_NS/
# NAMESPACES/FANOTIFY/VIRTIO* ⇒ esta misma imagen sigue booteando en QEMU (para poder testear el boot
@@ -69,6 +78,7 @@ scripts/config -d MODULE_SIG -d MODULE_SIG_ALL -d DEBUG_INFO_BTF -d DEBUG_INFO -
-e DRM -e DRM_SIMPLEDRM -e SYSFB_SIMPLEFB -e FB -e FB_EFI \
-e DRM_I915 -e DRM_FBDEV_EMULATION \
-e FRAMEBUFFER_CONSOLE -e FRAMEBUFFER_CONSOLE_DETECT_PRIMARY \
-e FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER \
-e EFI -e EFI_STUB -e EFI_PARTITION -e EFIVAR_FS -e CMDLINE_BOOL \
-e VFAT_FS -e FAT_FS -e MSDOS_FS -e NLS_CODEPAGE_437 -e NLS_ISO8859_1 -e NLS_UTF8 \
-e ISO9660_FS -e JOLIET \
@@ -81,7 +91,7 @@ scripts/config -d MODULE_SIG -d MODULE_SIG_ALL -d DEBUG_INFO_BTF -d DEBUG_INFO -
-d SOUND -d SND -d MEDIA_SUPPORT -d INFINIBAND -d BT -d NFC -d CAN \
-d WATCHDOG -d THUNDERBOLT -d FIREWIRE -d DEBUG_WX \
-d XFS_FS -d BTRFS_FS -d F2FS_FS -d JFS_FS -d REISERFS_FS -d GFS2_FS -d NTFS3_FS && \
scripts/config --set-str CMDLINE "console=ttyS0,115200 console=tty0 earlyprintk=efi,keep ignore_loglevel efi=novamap initrd=/initramfs.cpio.gz rdinit=/init" && \
scripts/config --set-str CMDLINE "console=tty0 console=ttyS0,115200 quiet loglevel=3 vt.global_cursor_default=0 efi=novamap initrd=/initramfs.cpio.gz rdinit=/init" && \
make ARCH=x86_64 olddefconfig
"""
compile = "make ARCH=x86_64 CC=gcc HOSTCC=gcc -j\"$(nproc)\" bzImage"