Итак, ваша консоль имеет два типа сообщений:
- генерируется ядром (через printk);
- генерируется пользовательским пространством (обычно вашей системой инициализации).
Сообщения ядра всегда хранятся в буфере kmsg, видимом через dmesg
. Они также часто копируются в ваш системный журнал. (Это также относится к сообщениям в пользовательском пространстве /dev/kmsg
, но они довольно редки.)
Между тем, когда userspace записывает свой причудливый текст состояния загрузки в /dev/console
или /dev/tty1
, он вообще нигде не сохраняется. Просто идет на экран и все. Поэтому я думаю, что практически любое решение - за исключением предложения последовательной консоли Rowan - в конечном итоге будет либо очень специфичным для дистрибутива (из-за того, что каждая система инициализации выполняет регистрацию по-разному), либо «инвазивным хаком», который включает в себя взлом strace или ядра или что-то подобное.
В лучшем случае ваша система инициализации сама записывает все важные события в системный журнал (/ var / log / messages или тому подобное). Например:
systemd[1]: Starting BIRD routing daemon... bird[478296]: /etc/bird.conf, line 2: syntax error systemd[1]: bird.service: Control process exited, code=exited status=1 systemd[1]: Failed to start BIRD routing daemon.
(systemd и upstart также регистрируют сервисы stdout / stderr; многие другие системы инициализации просто перенаправляют его на консоль или в никуда).