ein*_*lum 6 linux console display screen-resolution boot
我正在我的一个盒子上安装 Debian Wheezy (7.0rc1)。由于我不会在这里讨论的原因,我不希望在启动期间(或之后)将帧缓冲区用于控制台显示。为了避免这种情况,我补充说:
GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=keep
Run Code Online (Sandbox Code Playgroud)
到/etc/default/grub
。事实上,我在 grub 中获得了文本模式,并且在启动的前几秒钟内。但是,控制台会切换到那个地狱般的帧缓冲区!:
[ 4.407402] Console: switching to colour frame buffer device 128x48
[ 4.408544] fb0: nouveaufb frame buffer device
Run Code Online (Sandbox Code Playgroud)
(这是摘自/var/log/dmesg
。)
我在/etc/init.d
脚本的任何地方都找不到它的踪迹。我想,也许它是与内核模块加载-我没有发现什么有趣的/etc/modules
或/etc/modprobe.d
两种。
那么,这种情况何时/何地发生?我怎样才能避免这种切换?
显然,Linux 内核甚至在init 进程运行之前就设置了显示模式。现在,内核从引导加载程序中获取参数- 所以要做的是设置参数告诉它不要切换显示模式。然而,这还不是全部:在设置显示模式之后,还有一个字体设置本身就会使您的显示变得很糟糕;在 Debian Wheezy 上,这是由 完成的/etc/init.d/console-setup
,因此您还必须考虑它究竟做了什么。
为了更加协调,你应该做的是:
在 中/etc/default/grub
,添加行
GRUB_CMDLINE_LINUX="nomodeset"
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经有一个GRUB_CMDLINE_LINUX
设置,请附加nomodeset
到它。
在/etc/default/console-setup
,替换
FONTFACE="Fixed"
Run Code Online (Sandbox Code Playgroud)
和
FONTFACE="VGA"
Run Code Online (Sandbox Code Playgroud)
或者,不要/etc/init.d/console-setup
在 rcS 非级别中运行(例如使用update-rc.d
命令)。
据我所知,“VGA”字体与您已经拥有的字体相同,因此如果您选择此字体,则更改字体不应有任何影响。但是,我不完全确定这是否普遍正确,因此也许您最好完全避免字体更改。