Skip to main content
deleted 157 characters in body
Source Link
seamux
  • 168
  • 2
  • 11

After noticing that /dev/fb0 didn't exist despite having loaded fbcon and a framebuffer device module, I figured it out:

  1. Build i915 as a loadable module instead of built-in and make sure that legacy fbdev support is enabled. (Building it as a loadable module is perhaps not necessary, I only did it to ensure I could blacklist/unload i915, but the key is to select legacy fbdev support.)
  2. Enable framebuffer console (fbcon) and build it as a module.
  3. Select a suitable framebuffer device and build its driver as a module. VESA (uvesafb) works fine.
  4. Ensure that tty is also enabled.
  5. Edit /src/kernel/drivers/gpu/drm/i915/i915_drv.c and remove or comment out all if loops that refer to conflicting framebuffer modules (just search for "conflict", on 4.4.250-R89 kernel source there are 3 of these loops), otherwise you'dyou might encounter an error during make. Apparently the i915 driver for ChromeOS doesn't want you to have a framebuffer console.
  6. Build kernel and modules. Install to Linux.
  7. Add fbcon and uvesafb (or a framebuffer device of your choice) to /etc/initramfs-tools/modules to load them at boot (they do not load by default). Alternatively, you can load themit manually when you need to use TTY emulation.
  8. Update initramfs and grub. Reboot. You should be able to see kernel boot messages and use Ctrl+Fn to access TTYn.

After noticing that /dev/fb0 didn't exist despite having loaded fbcon and a framebuffer device module, I figured it out:

  1. Build i915 as a loadable module instead of built-in and make sure that legacy fbdev support is enabled. (Building it as a loadable module is perhaps not necessary, I only did it to ensure I could blacklist/unload i915, but the key is to select legacy fbdev support.)
  2. Enable framebuffer console (fbcon) and build it as a module.
  3. Select a suitable framebuffer device and build its driver as a module. VESA (uvesafb) works fine.
  4. Ensure that tty is also enabled.
  5. Edit /src/kernel/drivers/gpu/drm/i915/i915_drv.c and remove or comment out all if loops that refer to conflicting framebuffer modules (just search for "conflict", on 4.4.250-R89 kernel source there are 3 of these loops), otherwise you'd encounter an error during make. Apparently the i915 driver for ChromeOS doesn't want you to have a framebuffer console.
  6. Build kernel and modules. Install to Linux.
  7. Add fbcon and uvesafb (or a framebuffer device of your choice) to /etc/initramfs-tools/modules to load them at boot (they do not load by default). Alternatively, you can load them manually when you need to use TTY emulation.
  8. Update initramfs and grub. Reboot. You should be able to see kernel boot messages and use Ctrl+Fn to access TTYn.

After noticing that /dev/fb0 didn't exist despite having loaded fbcon and a framebuffer device module, I figured it out:

  1. Build i915 as a loadable module instead of built-in and make sure that legacy fbdev support is enabled. (Building it as a loadable module is perhaps not necessary, I only did it to ensure I could blacklist/unload i915, but the key is to select legacy fbdev support.)
  2. Enable framebuffer console (fbcon) and build it as a module.
  3. Ensure that tty is also enabled.
  4. Edit /src/kernel/drivers/gpu/drm/i915/i915_drv.c and remove or comment out all if loops that refer to conflicting framebuffer modules (just search for "conflict", on 4.4.250-R89 kernel source there are 3 of these loops), otherwise you might encounter an error during make. Apparently the i915 driver for ChromeOS doesn't want you to have a framebuffer console.
  5. Build kernel and modules. Install to Linux.
  6. Add fbcon to /etc/initramfs-tools/modules to load them at boot (they do not load by default). Alternatively, you can load it manually when you need to use TTY emulation.
  7. Update initramfs and grub. Reboot. You should be able to see kernel boot messages and use Ctrl+Fn to access TTYn.
Source Link
seamux
  • 168
  • 2
  • 11

After noticing that /dev/fb0 didn't exist despite having loaded fbcon and a framebuffer device module, I figured it out:

  1. Build i915 as a loadable module instead of built-in and make sure that legacy fbdev support is enabled. (Building it as a loadable module is perhaps not necessary, I only did it to ensure I could blacklist/unload i915, but the key is to select legacy fbdev support.)
  2. Enable framebuffer console (fbcon) and build it as a module.
  3. Select a suitable framebuffer device and build its driver as a module. VESA (uvesafb) works fine.
  4. Ensure that tty is also enabled.
  5. Edit /src/kernel/drivers/gpu/drm/i915/i915_drv.c and remove or comment out all if loops that refer to conflicting framebuffer modules (just search for "conflict", on 4.4.250-R89 kernel source there are 3 of these loops), otherwise you'd encounter an error during make. Apparently the i915 driver for ChromeOS doesn't want you to have a framebuffer console.
  6. Build kernel and modules. Install to Linux.
  7. Add fbcon and uvesafb (or a framebuffer device of your choice) to /etc/initramfs-tools/modules to load them at boot (they do not load by default). Alternatively, you can load them manually when you need to use TTY emulation.
  8. Update initramfs and grub. Reboot. You should be able to see kernel boot messages and use Ctrl+Fn to access TTYn.