Impedir que o console limpe a tela?

11

Ao inicializar no Linux, às vezes há uma ou duas linhas que são limpas rapidamente. Eu acho que alguns deles nem aparecem no dmesg. Se nada mais, quero suprimir a limpeza antes do prompt "login:". Existe um comando do kernel ou sysctl que eu possa definir para evitar isso, para que eu possa lê-los na tela do console após a inicialização?

Paul Hoffman
fonte
/Var/log/kern.log não ajuda? Ou você não tem?
HUB

Respostas:

13

A maioria das informações que você deseja estará no /var/log/dmesge /var/log/messagesdepois que o sistema inicializar, você deve verificar esses arquivos primeiro.

Geralmente, as máquinas Linux executam mingetty nos terminais virtuais. Se você possui um sistema sysv init tradicional, eles são controlados por /etc/inittab. Você pode adicionar a --noclearopção mingetty para impedir a limpeza da tela. Para fazer isso, edite /etc/inittabe altere esta linha:

1:2345:respawn:/sbin/mingetty tty1

para

1:2345:respawn:/sbin/mingetty --noclear tty1

depois reinicie a máquina.

Algumas distribuições linux mais recentes usam substituições init como o Upstart (por exemplo, Ubuntu). Geralmente, eles não usam / etc / inittab e, em vez disso, usam outros arquivos de configuração. Aqui está uma discussão sobre como chamar mingetty funciona no Ubuntu .

Phil Hollenback
fonte
Bem, esqueci de mencionar que realmente me importo com o Ubuntu. O link acima pontos a alguma informação out-of-date, e minha primeira tentativa (basta editar /etc/init/tty1.conf não foi de todo bem sucedido.
Paul Hoffman
Eles usam gettyfrom util-linux, not mingetty, mas isso também funciona com o Debian. Obrigado!
mirabilos
4

Se nada mais ajudou, você pode pegar seu laptop e capturar todo o log do kernel através do console serial, adicionando algo assim aos parâmetros do kernel:

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

Isso fará com que a saída apperar no console serial (no programa do terminal) e no tty padrão. Às vezes, o SOL (Serial Over LAN) está disponível.

CUBO
fonte
3

Após horas pesquisando no Google, encontrei a solução neste tópico e nesta pergunta . Este procedimento funciona Ubuntu 12.04.1 LTScomo também descrito aqui , mas não deve diferir muito para outras distribuições.

Primeiro, adicione console=tty1ao seu GRUB_CMDLINE_LINUX(eu também sugiro adicionar noplymouthao inibir plymouthe sua tela inicial inútil).

#> sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX="console=tty1 noplymouth"

Isso força o log do kernel a ser impresso em tty1vez de tty7evitar a ttytroca antes do prompt de login.

Em seguida, basta entrar /etc/inite editar um ou mais de tty1.conf, tty2.conf, tty3.conf, tty4.conf, tty5.conf, tty6.confou console.conf. Eu editei todos eles adicionando --noclearopção ao gettycomando. Por exemplo, editando tty1.conf:

#> sudo vi /etc/init/tty1.conf

você terá que substituir:

respawn
exec /sbin/getty -8 38400 tty1

com:

respawn
exec /sbin/getty -8 38400 --noclear tty1

Isso é tudo, agora seu sistema deve inicializar em um único ttysem limpá-lo.

Avio
fonte
1

dmesg aqui remonta ao começo do kernel, começando com

[    0.000000] Initializing cgroup subsys cpuset

Talvez essa seja uma mensagem do BIOS ou parte do seu carregador de inicialização? De qualquer forma, existem tantas coisas diferentes que podem deixar a tela em branco, sem saber exatamente onde exatamente ocorreu o processo, é difícil dizer o que fazer sobre isso. A única coisa que resta na tela "Login:"? ou há algum outro material de inicialização acima dele? Se for imediatamente antes do prompt de login e não houver mais nada na tela, talvez /etc/issuehaja um comando de supressão de tela? Caso contrário, você poderá usar algum tipo de buffer de quadro do console que esteja alternando o modo de vídeo. No meu computador, a tela fica em branco quando uma fonte do console é carregada.

DerfK
fonte
TL; DR também /etc/issuepode ser um culpado. Boa dica.
Tino