Linux-Kernel

如何讓我的幀緩衝控制台工作?

  • December 4, 2017

我有一台執行我建構的 Linux From Scratch 系統的 Apple MacBook。這是一個最小的系統,只是啟動到一個 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

fbfbdevi915drmintel_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 驅動程序的幀緩衝區。

要發布我自己的問題的答案:

它不工作的原因是因為fbcon模組在引導期間沒有被載入,即使它已經被建構和安裝。立即執行modprobe fbcon載入模組使控制台出現在我的螢幕上。我已經添加fbcon/etc/sysconfig/modules它現在再次在啟動時正確初始化。

不過,這似乎有點奇怪,該模組之前是自動載入的,而我無需做任何事情。

引用自:https://unix.stackexchange.com/questions/408447