Eu tenho dois computadores, ambos executando o Debian Bookworm e atualizados no mesmo grau com o software mais recente instalado. Ambas as máquinas são configuradas para inicializar em terminais de texto, o que elas precisam fazer antes de iniciar o X.
O problema é que um computador inicializa em /dev/tty0
vez de, /dev/tty1
o que significa que o comando xinit que funciona no Computador 2 não funciona no Computador 1.
O kernel do computador 1 inicializa /dev/tty0
com estas permissões:
crw------- 1 ben tty 4, 0 May 23 16:46 /dev/tty0
crw--w---- 1 root tty 4, 1 May 23 16:46 /dev/tty1
crw------- 1 ben tty 4, 2 May 23 16:13 /dev/tty2
O kernel do computador 2 inicializa /dev/tty1
com estas permissões:
crw--w---- 1 root tty 4, 0 May 23 05:55 /dev/tty0
crw--w---- 1 ben tty 4, 1 May 23 16:29 /dev/tty1
crw------- 1 ben tty 4, 2 May 23 16:13 /dev/tty2
O comando para iniciar o X que funciona no Computador 2, mas não no Computador 1 é:
xinit /home/ben/.xinitrc -- /usr/bin/X :0 vt1
O usuário ben não tem permissão no Computador 1 para acessar tty1
, então X falha com uma no permission
mensagem.
Para iniciar o X no Computador 1, o usuário ben precisa alterar o xinit
comando para usar vt2
e navegar para tty2
executá-lo.
O aspecto misterioso para mim é que /dev/tty1
não está disponível no Computador 1.
O computador 1 mostra os terminais como:
Ctrl+ alt+ F1consegue/dev/tty0
Ctrl+ alt+ F2consegue/dev/tty2
Ctrl+ alt+ F3consegue/dev/tty3
enquanto no Computador 2 mostra os terminais como:
Ctrl+ alt+ F1consegue/dev/tty0
Ctrl+ alt+ F2consegue/dev/tty1
Ctrl+ alt+ F3consegue/dev/tty2
Em uma tentativa de inicializar /dev/tty1
no Computador 1, adicionei a opção de kernel de console=/dev/tty1
. A máquina congelou com uma tela em branco e o cursor piscando no canto superior esquerdo. Ele precisava de um disco de resgate para reescrever o grub.cfg
arquivo e apagar a opção para poder inicializar corretamente.
Systemd mostra a mesma active and running
saída em [email protected]
ambas as máquinas.
Minha dúvida é: como configurar a máquina para que /dev/tty1
apareça no Computador 1 e, assim, inicializar o Computador 1 dev/tty1
em vez de /dev/tty0
?
Pergunto aqui por não ter encontrado uma resposta em outro lugar.
Edições: Obrigado a todos os entrevistados!
cat /proc/fb gera o mesmo em ambas as máquinas: 0 nouveaudrmfb.
Acho que poderia criar um script para alterar a propriedade de tty0 e tty1 na inicialização, mas parece uma solução alternativa. Nenhuma outra máquina aqui precisaria disso.
O nó do dispositivo
/dev/tty0
age como um link físico para "qualquer que seja o console virtual atualmente selecionado", embora seja realmente implementado no código do driver do console virtual.Como um
console=
valor de opção de inicialização,/dev/tty0
significa "Desejo usar o console físico KVM usual (com todo o seu conjunto de consoles virtuais) como um console do sistema". Como você descobriu, uma opção de inicializaçãoconsole=/dev/tty1
não é válida (pelo menos em hardware x86):Normalmente
root
possuirá quaisquer dispositivos tty desconectados, e um usuário conectado terá a propriedade de seu dispositivo tty atribuído a eles pelo processo de login. Um logout deve devolver o dispositivo tty à propriedade deroot
. Mas se o usuárioben
conseguiu obter a propriedade de/dev/tty0
, isso pode significar que ele pode usá-lo (por exemplo, fazendo login em uma conexão SSH) para injetar coisas na sessão de quem estiver conectado localmente em qualquer console virtual real (/dev/tty[1..N]
) .A propriedade de
/dev/tty0
nunca deve mudar da propriedade raiz.Você pode ver os processos em execução
tty0
, comfuser /dev/tty0
execução como root? Não deve haver nenhum normalmente.Existe um
[email protected]
definido? Se for, isso pode estar causando problemas:/dev/tty0
nunca deve ser usado para logins regulares.