/ dev / console
link
No Linux, o console do kernel pode ser configurado usando a opção de inicialização console=
. O código do kernel que chama printk()
pode gravar mensagens para ele, por exemplo quando um dispositivo é carregado ou ocorre um erro. Essas mensagens também são armazenadas em buffer pelo kernel. (Veja também dmesg
). Quando um dispositivo de console é encontrado e iniciado, ele recebe todas as mensagens previamente armazenadas em buffer.
Você pode transmitir console=
várias vezes para configurar vários consoles e as mensagens serão gravadas em todos eles. Aparentemente, você pode selecionar apenas um console de cada "tipo": você não pode usar console=ttyS0
e console=ttyS1
.
A documentação do kernel especifica /dev/console
como um dispositivo de caractere numerado (5,1)
. Abrir este dispositivo de caracteres abre o console "principal", que é o último tty na lista de consoles. O primeiro processo não kernel, chamado init
ou "PID 1", é iniciado com /dev/console
conectado à saída padrão, erro padrão e entrada padrão.
Se nenhum dos consoles for um tty, abrir /dev/console
retornará o erro ENODEV
("No such device"). O kernel irá imprimir uma mensagem, e iniciar init
independentemente. Para um exemplo de console do kernel que não é um dispositivo tty, veja netconsole
, ou meu console favorito a impressora de linha .
Você também pode ver uma lista de consoles tty lendo /sys/class/tty/console/active
. A documentação do systemd aponta que o dispositivo primeiro mostrado é o console principal. A lista está na ordem inversa da linha de comando do kernel. A documentação atual do kernel afirma incorretamente que o último dispositivo mostrado é o principal ou "ativo" console. Por algum motivo, é possível pesquisar este arquivo em busca de alterações (no caso de dispositivos de console serem removidos?).
Dentro de um contêiner systemd-nspawn
, o arquivo /dev/console
padrão é substituído por um pseudo- dispositivo terminal (PTY). Estes seriam melhor descritos como dispositivos terminais virtuais. Eles são criados dinamicamente e também são usados para implementar emuladores de terminal gráficos como o Terminal GNOME, e para acesso remoto como ssh
.
/ dev / tty0
Os nós de dispositivo do Linux TTY tty1
through tty63
são terminais virtuais . Eles também são referidos como VTs ou como consoles virtuais. Eles simulam vários consoles no topo do driver de dispositivo do console físico. Apenas um console virtual é mostrado e controlado por vez. O terminal ativo pode ser comutado, por ex. usando chvt
ou Ctrl + Alt + F1 através de quantas teclas de função você tiver.
Você também pode ler e gravar no VT atual usando /dev/tty0
. tty0
é a consola habitual do kernel, por ex. se você não selecionou um explicitamente. "O sistema primeiro procura uma placa VGA [na qual os VTs são executados] e depois para uma porta serial". Você também pode definir o console para um VT específico, por ex. console=tty1
.
"Se você não tiver uma placa VGA no seu sistema, a primeira porta serial se tornará automaticamente o console." Um "console serial" como ttyS0
é provavelmente a alternativa mais comum a tty0
. Não é possível usar o sistema VT em cima de um console serial.
/ dev / tty
/dev/tty
é um dos três arquivos de dispositivos padrão especificados pelo POSIX ( /dev/
é um dos três nomes de diretório especificados pelo POSIX). A abertura equivale a abrir o terminal de controle do processo atual. O terminal de controle é definido quando um processo abre primeiro um terminal, pelo menos no Linux . Por exemplo, em init
, referir-se-ia a /dev/console
.
O desvinculação do terminal de controle é uma das etapas tradicionalmente necessárias para iniciar um processo em segundo plano, por exemplo, um daemon de registro do sistema . As etapas para se tornar um processo em segundo plano são terrivelmente complicadas, mas, para ser específico, a etapa que se destaca do terminal de controle é o setsid chamada do sistema. Em sistemas mais modernos, o sistema init, e. O systemd inicia o serviço sem nenhum terminal de controle em primeiro lugar.