Eu tenho um Apple MacBook que está executando um sistema Linux From Scratch que eu construí. É um sistema mínimo, apenas inicializando em um prompt bash, sem nenhum X Window System instalado. O chip gráfico é um Intel GMA 950, que usa o driver i915. Anteriormente, eu inicializava no console do framebuffer; no entanto, ajustei algumas das definições de configuração do kernel outro dia e agora o console framebuffer parece não carregar mais (embora a tela fique preta e redefina durante a inicialização).
Estupidamente, não salvei o arquivo de configuração do kernel para a configuração que estava funcionando, embora eu tenha uma impressão do lsmod
comando para essa configuração, que mostra quais módulos do kernel foram carregados:
Module Size Used by
ccm 20480 6
hid_generic 16384 0
isight_firmware 16384 0
usbhid 32768 0
i915 1343488 1
i2c_algo_bit 16384 1 i915
arc4 16384 2
fbcon 49152 70
bitblit 16384 1 fbcon
fbcon_rotate 16384 1 bitblit
fbcon_ccw 16384 1 fbcon_rotate
fbcon_ud 20480 1 fbcon_rotate
fbcon_cw 16384 1 fbcon_rotate
softcursor 16384 4 fbcon_ud,fbcon_cw,fbcon_ccw,bitblit
drm_kms_helper 114688 1 i915
ath9k 81920 0
cfbfillrect 16384 1 drm_kms_helper
ath9k_common 16384 1 ath9k
syscopyarea 16384 1 drm_kms_helper
cfbimgblt 16384 1 drm_kms_helper
ath9k_hw 389120 2 ath9k,ath9k_common
sysfillrect 16384 1 drm_kms_helper
sysimgblt 16384 1 drm_kms_helper
mac80211 405504 1 ath9k
fb_sys_fops 16384 1 drm_kms_helper
cfbcopyarea 16384 1 drm_kms_helper
drm 282624 3 i915,drm_kms_helper
ath 28672 3 ath9k_hw,ath9k,ath9k_common
pata_acpi 16384 0
intel_agp 16384 0
coretemp 16384 0
video 36864 1 i915
uhci_hcd 40960 0
pcspkr 16384 0
backlight 16384 2 video,i915
ehci_pci 16384 0
ehci_hcd 73728 1 ehci_pci
ata_piix 36864 0
rng_core 16384 0
intel_gtt 20480 2 intel_agp,i915
fb 65536 8 fbcon_ud,fbcon_cw,fbcon_ccw,bitblit,softcursor,i915,fbcon,drm_kms_helper
agpgart 32768 3 intel_agp,intel_gtt,drm
evdev 24576 0
fbdev 16384 2 fb,fbcon
mac_hid 16384 0
Assim, você pode ver que o fbcon (que é o driver para o console framebuffer) foi carregado.
No entanto, a saída lsmod
para a versão mais recente do kernel (onde o console não está carregando) é a seguinte:
Module Size Used by
hid_generic 12288 0
arc4 12288 2
i915 1314816 0
usbhid 28672 0
prime_numbers 12288 1 i915
i2c_algo_bit 12288 1 i915
drm_kms_helper 98304 1 i915
cfbfillrect 12288 1 drm_kms_helper
syscopyarea 12288 1 drm_kms_helper
cfbimgblt 12288 1 drm_kms_helper
pata_acpi 12288 0
sysfillrect 12288 1 drm_kms_helper
ath9k 73728 0
ath9k_common 12288 1 ath9k
ath9k_hw 368640 2 ath9k,ath9k_common
sysimgblt 12288 1 drm_kms_helper
fb_sys_fops 12288 1 drm_kms_helper
cfbcopyarea 12288 1 drm_kms_helper
mac80211 356352 1 ath9k
coretemp 12288 0
ata_piix 32768 0
ath 24576 3 ath9k_hw,ath9k,ath9k_common
drm 241664 3 i915,drm_kms_helper
uhci_hcd 36864 0
video 32768 1 i915
intel_agp 12288 0
pcspkr 12288 0
intel_gtt 16384 2 intel_agp,i915
fb 57344 2 i915,drm_kms_helper
ehci_pci 12288 0
ehci_hcd 65536 1 ehci_pci
agpgart 28672 3 intel_agp,intel_gtt,drm
rng_core 12288 0
fbdev 12288 1 fb
backlight 12288 2 video,i915
evdev 20480 0
mac_hid 12288 0
fb , fbdev , i915 , drm , intel_agp estão todos lá, mas fbcon não.
Alguém sabe de uma possível razão pela qual o fbcon não está carregando?
Editar: (para responder a uma pergunta nos comentários)
A saída de grep CONFIG_FRAMEBUFFER_CONSOLE .config
é:
$ grep CONFIG_FRAMEBUFFER_CONSOLE .config
CONFIG_FRAMEBUFFER_CONSOLE=m
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
fbcon
está configurado como um módulo (como parecia na configuração anterior). Acredito que a segunda linha significa que ele deve definir o fbcon como o dispositivo de exibição principal por padrão.
Atualizar:
Carreguei o módulo manualmente, usando modprobe fbcon
e funcionou - todo o texto apareceu na tela. Ainda tenho que descobrir por que ele não carregou na inicialização e como posso fazer isso.
Além disso, eu corri cat $(readlink -f /sys/class/graphics/fb0/name)
e imprimi inteldrmfb
. Portanto, parece que está usando um framebuffer integrado ao driver i915 Intel.
Para postar uma resposta à minha própria pergunta:
A razão pela qual não estava funcionando era porque o
fbcon
módulo não estava sendo carregado durante a inicialização, mesmo tendo sido construído e instalado. Corrermodprobe fbcon
para carregar o módulo imediatamente fez o console aparecer na minha tela. Eu adicioneifbcon
e/etc/sysconfig/modules
está inicializando corretamente na inicialização novamente agora.Parece um pouco estranho, porém, que o módulo estava carregando automaticamente antes, sem que eu tivesse que fazer nada.