非 systemd 系统启动时控制台也会输出绿色的 ok, 该功能来自哪个模块?

如果没有使用 quiet 等类似的内核参数,启动时可以看到控制台输出许多信息。如果一切正常,就显示绿色的 [ OK ], 如果出错了,就显示红色的 [FAILED]. 这个功能应该是 systemd 提供的吧?因为我定位到了相关代码:

在以上文件搜索 ANSI_HIGHLIGHT_RED 就会看到相关的代码。但假如用 sysvinit 替换掉 systemd, 启动时依然会输出类似信息,只是变成了小写。之前 systemd 的绿色 [ OK ] 变成了小写的绿色 [ ok ].

我检索了一下 sysvinit 的代码,却没找到相应的关键词。那么这时候的绿色 [ ok ] 究竟来自哪个程序?难道是 systemd 的残留阴魂?我又在虚拟机里安装 Devuan 测试了一下,那是修改 Debian 去掉 systemd 的发行版。发现它启动时也有绿色 [ ok ], 具体哪里来的?我想定位到相关的代码看一下。

1 个赞

你是想问谁输出的信息,还是彩色功能是谁提供的?

如果是前者,这只是 systemd 和 sysvinit 打印的彩色字符转义序列;

如果是后者,那就是提供虚拟终端的 linux kernel 驱动,对于 x86 平台,曾经使用的是 VGA 字符模式,现在应该都是基于 framebuffer 的终端模拟器了。