如何让我的帧缓冲控制台正常工作?

如何让我的帧缓冲控制台正常工作?

我有一台 Apple MacBook,正在运行我构建的 Linux From Scratch 系统。这是一个最小的系统,只是启动到 bash 提示符,没有安装 X Window 系统。图形芯片是Intel GMA 950,使用i915驱动程序。以前,我让它启动到帧缓冲区控制台;然而,前几天我调整了一些内核配置设置,现在帧缓冲区控制台似乎不再加载(尽管屏幕变黑,然后在启动过程中重置)。

愚蠢的是,我没有保存我正在工作的设置的内核配置文件,尽管我确实有lsmod该设置的命令的打印输出,其中显示了加载了哪些内核模块:

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

所以,你可以看到FBCON(这是帧缓冲区控制台的驱动程序)已加载。

但是,较新内核构建(控制台未加载)的输出lsmod如下:

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

脸书,FBDEV,i915,数字版权管理,英特尔_agp都在那里,但是FBCON不是。

有谁知道可能的原因FBCON没有加载吗?

编辑:(回答评论中的问题)

的输出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被配置为一个模块(就像在之前的设置中一样)。我相信第二行意味着它应该默认将 fbcon 设置为主显示设备。

更新:

我手动加载模块,使用它modprobe fbcon并且它工作了 - 所有文本都出现在屏幕上。我仍然需要弄清楚为什么它在启动时没有加载以及如何让它做到这一点。

另外,我运行cat $(readlink -f /sys/class/graphics/fb0/name)并打印了inteldrmfb.因此,它似乎正在使用 i915 Intel 驱动程序中内置的帧缓冲区。

答案1

发布我自己的问题的答案:

它不起作用的原因是因为该fbcon模块在启动期间没有被加载,即使它已经构建并安装了。立即运行modprobe fbcon加载模块使控制台出现在我的屏幕上。我已经添加了fbcon/etc/sysconfig/modules现在它在启动时再次正确初始化。

不过,这似乎有点奇怪,该模块之前是自动加载的,而我不需要做任何事情。

相关内容