日晒Linux FrameBuffer控制台

时间:2019-02-10 20:39:08

标签: linux-kernel framebuffer tty

我正在尝试晒干Linux控制台。我已将相关代码跟踪到drivers/tty/vt/vt.c,并将颜色定义更改为solarized:

 unsigned char default_red[] = {
-       0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa,
-       0x55, 0xff, 0x55, 0xff, 0x55, 0xff, 0x55, 0xff
+       0x07, 0xdc, 0x85, 0xb5, 0x26, 0xd3, 0x2a, 0xee,
+       0x00, 0xcb, 0x58, 0x65, 0x83, 0x6c, 0x93, 0xfd
 };

 unsigned char default_grn[] = {
-       0x00, 0x00, 0xaa, 0x55, 0x00, 0x00, 0xaa, 0xaa,
-       0x55, 0x55, 0xff, 0xff, 0x55, 0x55, 0xff, 0xff
+       0x36, 0x32, 0x99, 0x89, 0x8b, 0x36, 0xa1, 0xe8,
+       0x2b, 0x4b, 0x6e, 0x7b, 0x94, 0x71, 0xa1, 0xf6
 };

 unsigned char default_blu[] = {
-       0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xff, 0xff, 0xff, 0xff
+       0x42, 0x2f, 0x00, 0x00, 0xd2, 0x82, 0x98, 0xd5,
+       0x36, 0x16, 0x75, 0x83, 0x96, 0xc4, 0xa1, 0xe3
 };

还可以通过将vm.default{red,grn,blu}参数设置为那些值来引导内核。

无论如何,控制台现在看起来像是st,带有solarized colors,但没有no-bold-colors补丁-一切都是灰色的。

vt.c:1363中是这样的:

const unsigned char color_table[] = { 0, 4, 2, 6, 1, 5, 3, 7,
                                       8,12,10,14, 9,13,11,15 };

由于no-bold-colors修补程序通过不向其添加8来禁用粗体颜色,并且color_table的第二行与第一行+8相同,因此我尝试了此操作:

const unsigned char color_table[] = { 0, 4, 2, 6, 1, 5, 3, 7,
                                       0, 4, 2, 6, 1, 5, 3, 7 };

看起来确实好多了,但仍然没有达到预期的效果。我已将color_table导出为模块参数,以快速测试其他配置。但是我真的不想测试16!组合...

color_table的实际作用是什么?我不了解使用代码的地方(例如vt.c中的1760、4292行)。不只是笨拙的映射表吗?

您对如何解决此问题有任何提示吗?

谢谢!

顺便说一句:我知道有一些用户空间解决方案,但是我想直接在内核中完成。

0 个答案:

没有答案