Este livro oferece uma boa introdução ao Linux ttys e fgrep ing por register_console no drivers/char/*.c do kernel do Linux mostra o que está acontecendo com o console Linux. Existem muitas implementações do console do sistema disponíveis no kernel do Linux. Uma instalação específica do Linux pode decidir qual dispositivo específico deve servir como o console. Pode ser especificado passando parâmetros do kernel na inicialização, ou possivelmente outras técnicas existem. A implementação tty é a padrão e, possivelmente, de padrão, mas outros também existem, como serial-console .
/dev/console tem seu próprio major dedicado: menor. Por quê? Porque o próprio kernel é um grande usuário do dispositivo do kernel quando relata mensagens de emergência lá. Há struct tty_driver *console_driver objeto do kernel apontando para rotinas necessárias. Então, por que não fornecer uma interface também para programas de usuários? Não faço ideia se /dev/console , para a configuração padrão, é realmente equivalente a /dev/tty0 ou se há algumas diferenças.
Agora, sobre o controle de tarefas em tty0 . Como seria possível se tty0 realmente não emulasse um terminal, mas apenas apontasse para um tty que está atualmente ativo ? O kernel do Linux impede que os processos sejam anexados a tty0 , um “dispositivo” que colide intermitentemente com tty1 ,… tty7 e assim por diante. Como tty0 não pode controlar processos, não há controle de trabalho possível (a propósito, para qual finalidade legítima pode tty0 alimentar um shell?). Mas isso não tem nada a ver com a possibilidade de controlar trabalhos que são executados em consoles virtuais específicos . Outros tty s numerados são, de fato, terminais legítimos para qualquer finalidade de um aplicativo de console.