Предотвратить консоль от очистки экрана?

11

При загрузке в Linux иногда есть одна или две строки, которые быстро очищаются. Я думаю, что некоторые из них даже не появляются в dmesg. Если ничего другого, я хочу отключить очистку перед приглашением «login:». Есть ли какая-либо команда ядра или sysctl, которую я могу установить, чтобы предотвратить это, чтобы я мог читать их на экране консоли после загрузки?

Пол Хоффман
источник
Разве /var/log/kern.log не помогает? Или у тебя его нет?
HUB

Ответы:

13

Большая часть информации, которую вы хотите, будет в /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 .

Фил Холленбек
источник
Ну, я забыл упомянуть, что я действительно забочусь об Ubuntu. Ссылка выше указывает на некоторую устаревшую информацию и мою первую попытку (просто отредактируйте /etc/init/tty1.conf совсем не удачно.
Пол Хоффман,
Они используют gettyот util-linux, mingettyно это работает и с Debian. Спасибо!
Мирабилось
10

С systemd все иначе. Смотрите статью Хватит очищать мою чертову консоль . Короче говоря:

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

Tino
источник
4

Если ничего не помогло, вы можете взять свой ноутбук и захватить весь журнал ядра через последовательную консоль, добавив что-то вроде этого в параметры ядра:

console=tty0 console=ttyS0,9600n8 console=tty0

Это приведет к выводу на apperar на последовательной консоли (в вашей терминальной программе) и на стандартном tty. Иногда SOL (Serial Over LAN) доступен.

HUB
источник
3

После долгих поисков я нашел решение в этой теме и в этом вопросе . Эта процедура работает 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без очистки.

Avio
источник
1

dmesg здесь восходит к самому началу ядра, начиная с

[    0.000000] Initializing cgroup subsys cpuset

Возможно, это какое-то сообщение BIOS или часть вашего загрузчика? В любом случае, существует так много разных вещей, которые могут очистить экран, не зная, где именно в процессе это произошло, трудно сказать, что с этим делать. Единственное, что осталось на экране "Логин:"? или над ним есть еще какие-нибудь загрузочные материалы? Если это происходит непосредственно перед приглашением на вход в систему и на экране больше ничего нет, то, возможно, в нем /etc/issueесть команда отключения экрана? В противном случае вы могли бы использовать какой-то консольный буфер кадров, который переключает режим видео. На моем компьютере экран не отображается при загрузке консольного шрифта.

DerfK
источник
TL; DR /etc/issueтоже может быть виновником. Хороший намек.
Тино