Estou trabalhando em um sistema embarcado (baseado em Ubuntu 12.04 LTS
) e personalizando seu kernel. Estou tendo algum problema com upstart
, mountall
e plymouth
. Suponho que nada insolúvel, mas o verdadeiro problema é que não consigo diagnosticar corretamente o que está acontecendo porque o kernel (ou talvez plymouth
) altera o modo de vídeo no meio do processo de inicialização. Isso limpa completamente linhas inteiras de log e evita qualquer depuração de configurações incorretas do kernel.
Minha Grub2
configuração parece estar ok com:
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="acpi=force noplymouth"
GRUB_GFXMODE=1024x768x32
GRUB_GFXPAYLOAD_LINUX=keep
Aqui estão alguns resultados relevantes de lspci
:
00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
E aqui está a parte relevante da configuração do meu kernel:
CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_DRM=y
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_I915=y
CONFIG_DRM_I915_KMS=y
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_VESA=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
Todos os outros kernels personalizados/estoques inicializam bem com essa Grub2
configuração. O que eu gostaria de ter é um único fluxo de mensagens em um único console (mantendo uma resolução de tela) desde o logotipo de inicialização até o prompt de login. Alguém sabe o que preciso ajustar para conseguir isso?
Responder1
Parece que finalmente alcancei uma framebuffer
configuração razoável. Estas são as configurações relevantes dentro do meu kernel .config
:
CONFIG_AGP=y
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_VESA=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y
e esta é a diff
diferença entre a configuração antiga e a nova framebuffer
:
#> diff oldcfg.txt newcfg.txt
--- oldcfg.txt 2012-10-01 17:30:01.000000000 +0200
+++ newcfg.txt 2012-10-01 17:29:43.000000000 +0200
@@ -2,20 +2,14 @@
CONFIG_AGP_INTEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
-CONFIG_DRM=y
-CONFIG_DRM_KMS_HELPER=y
-CONFIG_DRM_I915=y
-CONFIG_DRM_I915_KMS=y
CONFIG_VIDEO_OUTPUT_CONTROL=y
CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_VESA=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=640
Esta configuração produz uma Knoppix
saída de inicialização semelhante a -. Ainda não entendo quem ou o que limpa a tela antes do prompt de login aparecer, mas estou bastante satisfeito por enquanto. Atualizarei esta resposta se conseguir identificar o culpado.
EDIT: encontrou o (dois) culpado (s).
Depois de horas pesquisando no Google, encontrei a solução emeste tópicoeessa questão. Este procedimento funciona Ubuntu 12.04.1 LTS
conforme também descritoaqui, mas não deve diferir muito para outras distribuições.
Primeiro, adicioneconsole=tty1
ao seu GRUB_CMDLINE_LINUX
(eu também sugiro adicionarnoplymouth
para inibir plymouth
e sua tela inicial inútil).
#> sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX="console=tty1 noplymouth"
Isso força o log do kernel a ser impresso tty1
em vez de tty7
e evita a tty
troca antes do prompt de login.
Em seguida, basta entrar /etc/init
e editar um ou mais de tty1.conf
, tty2.conf
, tty3.conf
, tty4.conf
, tty5.conf
, tty6.conf
ou console.conf
. Eu editei todos eles adicionando--noclear
opção para o getty
comando. Por exemplo, editando tty1.conf
:
#> sudo vi /etc/init/tty1.conf
você terá que substituir:
respawn
exec /sbin/getty -8 38400 tty1
com:
respawn
exec /sbin/getty -8 38400 --noclear tty1
Isso é tudo, agora seu sistema deve inicializar de uma só vez, tty
sem limpá-lo.
Responder2
Desconecte o console virtual logo no início do processo de inicialização.
echo 0 > /sys/class/vtconsole/vtcon$console_index/bind
$console_index -> 0,1,2
echo 0 > /sys/class/vtconsole/vtcon0/bind para /dev/tty0
echo 0 > /sys/class/vtconsole/vtcon1/bind para /dev/tty1