Назад | Перейти на главную страницу

Запретить консоли очищать экран?

При загрузке в 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 в нем есть команда гашения экрана? В противном случае вы можете использовать какой-то консольный буфер кадра, который переключает режим видео. На моем компьютере экран гаснет при загрузке консольного шрифта.