我有一台 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
现在它在启动时再次正确初始化。
不过,这似乎有点奇怪,该模块之前是自动加载的,而我不需要做任何事情。