Como posso fazer com que meu console do framebuffer funcione?

1

Eu tenho um MacBook da Apple que está executando um sistema Linux From Scratch que eu construí. É um sistema mínimo, apenas inicializando em um prompt bash, sem o X Window System instalado. O chip gráfico é um Intel GMA 950, que usa o driver i915. Anteriormente, eu tinha que inicializar no console framebuffer; no entanto, eu ajustei algumas das definições de configuração do kernel no outro dia e agora o console do framebuffer parece não carregar mais (embora a tela fique preta e seja reinicializada durante a inicialização).

Estupidamente, eu não salvei o arquivo de configuração do kernel para a configuração que eu estava trabalhando, embora eu tenha uma impressão do comando lsmod 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

Então, você pode ver que fbcon (que é o driver para o console framebuffer) foi carregado.

No entanto, a saída de lsmod para a nova compilação do kernel (onde o console não está sendo carregado) é 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á sendo carregado?

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 estar na configuração anterior). Acredito que a segunda linha significa que deveria estar definindo fbcon para o dispositivo de exibição principal por padrão.

Atualização:

Carreguei o módulo manualmente, usando modprobe fbcon e deu certo - todo o texto apareceu na tela. Eu ainda tenho que descobrir por que ele não foi carregado na inicialização e como posso fazer isso.

Além disso, executei cat $(readlink -f /sys/class/graphics/fb0/name) e imprimi inteldrmfb . Então, parece que está usando um framebuffer embutido no driver Intel i915.

    
por Time4Tea 03.12.2017 / 00:04

1 resposta

0

Para postar uma resposta para minha própria pergunta:

O motivo pelo qual não estava funcionando foi porque o módulo fbcon não estava sendo carregado durante a inicialização, mesmo que ele tenha sido construído e instalado. Executando modprobe fbcon para carregar o módulo imediatamente fez o console aparecer na minha tela. Eu adicionei fbcon a /etc/sysconfig/modules e está inicializando corretamente na inicialização novamente agora.

Parece um pouco estranho, porém, que o módulo esteja carregando automaticamente antes, sem que eu precise fazer nada.

    
por 04.12.2017 / 19:23