我正在尝试晒干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行)。不只是笨拙的映射表吗?
您对如何解决此问题有任何提示吗?
谢谢!
顺便说一句:我知道有一些用户空间解决方案,但是我想直接在内核中完成。