como alterar o console tty após a inicialização?

2

o comando dmesg | grep console retorna:

Kernel command line: console=ttys6,115200 root=/dev/mmcblk1p2 
rootwait rw
console [ttys6] enabled

Eu quero mudar isso para ttys3 após a inicialização. É possível?

    
por J.R. 12.10.2017 / 15:49

2 respostas

1

A página man do tty_ioctl lista o ioctl TIOCCONS. Quando aplicado a um descritor de arquivo aberto de um tty, ele redirecionará a saída futura destinada a /dev/console para esse tty.

Você pode usar isso em um script perl simples. Crie e chmod +x um arquivo mysetconsole segurando o seguinte:

#!/usr/bin/perl
# https://unix.stackexchange.com/a/397790/119298
# see man tty_ioctl for TIOCCONS
# and perldoc IO::Tty::Constant
require "sys/ioctl.ph";
use IO::Tty::Constant qw(TIOCCONS);
ioctl(STDIN,TIOCCONS,0) or die $!;

Supondo que você pode abrir o dispositivo desejado, use-o simplesmente como

sudo ./mysetconsole </dev/ttys3

Você não poderá usá-lo novamente até definir o console de volta para /dev/console , com

sudo sh -c './mysetconsole </dev/console'

Você pode receber avisos de perl sobre _FORTIFY_SOURCE , que podem ser ignorados. Você precisará do pacote rpm perl-IO-Tty ou debian package libio-pty-perl . Se preferir, basta procurar a definição de TIOCCONS nos arquivos de inclusão do sistema. Eu encontrei o meu em:

/usr/include/asm-generic/ioctls.h: #define TIOCCONS      0x541D

Seu script perl pode ser apenas

#!/usr/bin/perl
# https://unix.stackexchange.com/a/397790/119298
sub TIOCCONS{ return 0x541D; }
ioctl(STDIN,TIOCCONS(),0) or die $!;
    
por 12.10.2017 / 22:11
0

Resposta breve: use chvt Long anwser: Como o Linux configura os TTYs na inicialização depende da distribuição. Poderia ser / etc / inittab ou poderia ser /etc/rc.local Em sistemas systemd é automático baseado em configurações em logind.conf

    
por 13.10.2017 / 21:35