I have an Apple MacBook that is running a Linux From Scratch system that I have built. It is a minimal system, just booting into a bash prompt, with no X Window System installed. The graphics chip is an Intel GMA 950, which uses the i915 driver. Previously, I had it booting up into the framebuffer console; however, I tweaked some of the kernel configuration settings the other day and now the framebuffer console doesn't seem to load up any more (although the screen goes black and then resets during boot).
Stupidly, I didn't save the kernel config file for the setup I had working, although I do have a printout of the lsmod
command for that setup, which shows which kernel modules were loaded:
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
So, you can see that fbcon (which is the driver for the framebuffer console) was loaded.
However, the output of lsmod
for the newer kernel build (where the console isn't loading) is as follows:
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 are all there, but fbcon isn't.
Does anyone know of a possible reason why fbcon isn't loading up?
Edit: (to answer a question in the comments)
The output of grep CONFIG_FRAMEBUFFER_CONSOLE .config
is:
$ grep CONFIG_FRAMEBUFFER_CONSOLE .config
CONFIG_FRAMEBUFFER_CONSOLE=m
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
fbcon
is configured as a module (as it seemed to be in the previous setup). I believe the second line means that it should be setting fbcon to the primary display device by default.
Update:
I loaded the module manually, using modprobe fbcon
and it worked - all of the text appeared on the screen. I still have to figure out why it didn't load on boot though and how I can make it do that.
Also, I ran cat $(readlink -f /sys/class/graphics/fb0/name)
and that printed inteldrmfb
. So, it appears it is using a framebuffer that is built in to the i915 Intel driver.
grep CONFIG_FRAMEBUFFER_CONSOLE .config
..config
is the current linux config file that has no fbcon.