我正在 Chromebook (Eve) 上运行 Linux (Debian 10),使用股票 Chrome OS 内核 (4.4.x) 稍作修改。除了无法通过Ctrl+ Alt+访问 TTY 控制台之外,一切都运行(大部分)正常Fn,这会按预期切换帧缓冲区(即 Ctrl+F1切换到 DM 和Crtl+F2切换到桌面),但似乎没有任何用于 TTY 仿真的帧缓冲区显示(屏幕只是冻结在Ctrl+ 上,F3但桌面可以通过Crtl+恢复F2)。鉴于启动时没有显示日志,我猜这是内核配置问题。内核配置中已经启用了与TTY、console、framebuffer相关的驱动选项,tty
设备列在/dev
. 我尝试使用库存的 Debian 10 配置编译 Chrome OS 内核(对于那些没有重叠的配置和默认配置)并且 TTY 控制台确实可用(但显然其他一些东西不起作用),所以它不是不是从 Chrome OS 内核中写出来的东西。
我比较了 Eve 和 Debian 之间的库存配置,并指出了在相同配置项上选择不同选项的位置(其中有 532 个),并注意到以下差异:
CONFIG_ITEM Debian Eve
CONFIG_AGP_AMD64 y is not set
CONFIG_AGP_SIS y is not set
CONFIG_AGP_VIA y is not set
CONFIG_VGA_SWITCHEROO y is not set
CONFIG_DRM_FBDEV_EMULATION y is not set
CONFIG_DRM_LOAD_EDID_FIRMWARE y is not set
CONFIG_DRM_DP_CEC y is not set
CONFIG_DRM_VGEM is not set y
CONFIG_DRM_UDL is not set y
CONFIG_DRM_CIRRUS_QEMU is not set m
CONFIG_FIRMWARE_EDID y is not set
CONFIG_FB_BOOT_VESA_SUPPORT y is not set
CONFIG_FB_CFB_FILLRECT y is not set
CONFIG_FB_CFB_COPYAREA y is not set
CONFIG_FB_CFB_IMAGEBLIT y is not set
CONFIG_FB_SYS_FILLRECT y is not set
CONFIG_FB_SYS_COPYAREA y is not set
CONFIG_FB_SYS_IMAGEBLIT y is not set
CONFIG_FB_SYS_FOPS y is not set
CONFIG_FB_TILEBLITTING y is not set
CONFIG_FB_VESA y is not set
CONFIG_FB_EFI y is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION y is not set
但是在我编译内核并将这些设置从 Debian 复制到库存的 Eve 配置后,没有任何变化。其他东西有问题,感谢帮助。
在注意到 /dev/fb0 尽管已加载fbcon
和帧缓冲设备模块但并不存在后,我想通了:
i915
为可加载模块而不是内置模块,并确保fbdev
启用旧版支持。(可能没有必要将其构建为可加载模块,我这样做只是为了确保我可以列入 blacklist/unload i915
,但关键是选择旧版fbdev
支持。)fbcon
) 并将其构建为模块。/src/kernel/drivers/gpu/drm/i915/i915_drv.c
并删除或注释掉所有if
引用冲突帧缓冲模块的循环(只需搜索“冲突”,在 4.4.250-R89 内核源代码中就有 3 个这样的循环),否则您可能会在 make 过程中遇到错误。显然i915
,ChromeOS的驱动程序不希望您拥有帧缓冲区控制台。fbcon
到/etc/initramfs-tools/modules
以在启动时加载它们(默认情况下它们不加载)。或者,您可以在需要使用 TTY 仿真时手动加载它。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句