При загрузке в Linux иногда одна или две строки быстро очищаются. Я думаю, что некоторые из них даже не появляются в dmesg. По крайней мере, я хочу подавить очистку перед приглашением «login:». Есть ли команда ядра или sysctl, которую я могу установить, чтобы предотвратить это, чтобы я мог прочитать их на экране консоли после загрузки?
Большая часть нужной информации будет в /var/log/dmesg
и /var/log/messages
после загрузки системы вы должны сначала проверить эти файлы.
Обычно машины с Linux работают Mingetty для виртуальных терминалов. Если у вас традиционная система инициализации sysv, они контролируются /etc/inittab
. Вы можете добавить --noclear
опция mingetty, чтобы предотвратить очистку экрана. Для этого отредактируйте /etc/inittab
и измените эту строку:
1:2345:respawn:/sbin/mingetty tty1
к
1:2345:respawn:/sbin/mingetty --noclear tty1
затем перезагрузите машину.
Некоторые новые дистрибутивы Linux используют замены init, такие как Upstart (например, Ubuntu). Обычно они не используют / etc / inittab, а вместо этого используют другие файлы конфигурации. Вот обсуждение того, как вызов mingetty работает в Ubuntu.
С systemd дела обстоят иначе. См. Статью Прекратите очищать консоль My God Damned. Коротко:
mkdir /etc/systemd/system/getty@.service.d
cat >/etc/systemd/system/getty@.service.d/noclear.conf <<EOF
[Service]
TTYVTDisallocate=no
EOF
systemctl daemon-reload
Проверьте результат с помощью systemctl cat getty@tty1.service
Если ничего не помогло, вы можете взять свой ноутбук и записать весь журнал ядра через последовательную консоль, добавив что-то вроде этого в параметры ядра:
console=tty0 console=ttyS0,9600n8 console=tty0
Это приведет к тому, что вывод будет отображаться на последовательной консоли (в вашей программе терминала) и на стандартном tty. Иногда доступен SOL (Serial Over LAN).
После нескольких часов поиска в Google я нашел решение в эта тема и этот вопрос. Эта процедура работает для Ubuntu 12.04.1 LTS
как также описано Вот, но он не должен сильно отличаться для других дистрибутивов.
Сначала добавьте console=tty1
на ваш GRUB_CMDLINE_LINUX
(Также предлагаю добавить noplymouth
подавлять plymouth
и его бесполезный экран-заставка).
#> sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX="console=tty1 noplymouth"
Это заставляет печатать журнал ядра на tty1
вместо того tty7
и избегать tty
переключитесь перед запросом на вход.
Тогда просто войдите в /etc/init
и отредактируйте один или несколько из tty1.conf
, tty2.conf
, tty3.conf
, tty4.conf
, tty5.conf
, tty6.conf
или console.conf
. Я отредактировал их все, добавив --noclear
вариант для getty
команда. Например, редактирование tty1.conf
:
#> sudo vi /etc/init/tty1.conf
вам нужно будет заменить:
respawn
exec /sbin/getty -8 38400 tty1
с участием:
respawn
exec /sbin/getty -8 38400 --noclear tty1
Вот и все, теперь ваша система должна загрузиться за один tty
без очистки.
dmesg
здесь восходит к самому началу ядра, начиная с
[ 0.000000] Initializing cgroup subsys cpuset
Может, это какое-то сообщение в биосе или часть вашего загрузчика? В любом случае, есть так много разных вещей, которые могут сделать экран пустым, и не зная, где именно в процессе это произошло, трудно сказать, что с этим делать. Единственное, что осталось на экране «Логин:»? или над ним есть еще какие-то загрузки? Если он находится непосредственно перед приглашением входа в систему и на экране больше ничего не отображается, возможно, /etc/issue
в нем есть команда гашения экрана? В противном случае вы можете использовать какой-то консольный буфер кадра, который переключает режим видео. На моем компьютере экран гаснет при загрузке консольного шрифта.