Por que o Fedora tem dois arquivos 'ptmx'?

1

Eu sei que o arquivo /dev/ptmx é usado para gerar um arquivo mestre para um pseudo-terminal. Mas descobri que o Fedora tem outro arquivo ptmx ( /dev/pts/ptmx ):

Qual é o propósito deste segundo arquivo?

    
por Steve 19.05.2017 / 19:46

2 respostas

4

A razão, como muitas coisas no mundo da computação, é a história e a compatibilidade com versões anteriores.

De volta a 2.4. * kernels, antes de existir udev (a atual solução de sistema de arquivos virtual para /dev ) no Linux, havia duas soluções concorrentes, a "maneira tradicional Unix" de ter os dispositivos em um diretório real um sistema de arquivos raiz e devfs , a primeira solução de sistema de arquivos virtual para /dev .

O problema era que o autor de devfs tinha construído um esquema de nomenclatura completamente novo para vários dispositivos, e as pessoas se sentiam bastante strongs sobre isso: alguns queriam migrar para o novo esquema e abolir o antigo, outros não ver a necessidade de migração. Algumas distribuições usaram os dispositivos estáticos antigos, outras escolheram devfs .

Nesse ponto, havia um número fixo de dispositivos pseudo-TTY criados no momento da instalação. (By the way, isso ainda é possível, se a opção CONFIG_LEGACY_PTYS é definida durante a compilação de seu kernel.)

Em seguida, foram introduzidos os dispositivos PTY alocados dinamicamente no estilo Unix98. Implementá-los em um diretório /dev estático exigia um sistema de arquivos virtual para /dev/pts , e isso ficou conhecido como o sistema de arquivos devpts . Além disso, ter isso como um sistema de arquivos separado provavelmente tornaria possível aplicá-lo sobre o dinâmico devfs também sem duplicação de código.

Os dispositivos PTY dinamicamente alocados rapidamente se tornaram a escolha preferida, porque ter /dev confuso com centenas de dispositivos PTY alocados estaticamente, a maioria dos quais nunca poderia ser usada na vida útil do sistema, era claramente sem sentido.

Depois veio o Linux 2.6 e udev com ele. Ele rapidamente tornou obsoletos as duas soluções estáticas /dev e devfs . Por motivos de compatibilidade com versões anteriores, devpts filesystem ainda existia, mas agora a mesma funcionalidade poderia ser movida de volta para o sistema de arquivos /dev principal, já que agora ela era inteiramente baseada em RAM.

Hoje, por exemplo, o Debian 9 ainda monta devpts filesystem para /dev/pts para compatibilidade legada, mas atribui /dev/pts/ptmx zero de permissões por padrão - isso é um sinal de que o sistema de arquivos devpts está provavelmente sendo substituído e ser removido em algum momento futuro.

# ls -l /dev/ptmx /dev/pts/ptmx
crw-rw-rw- 1 root tty  5, 2 Nov 22 11:47 /dev/ptmx
c--------- 1 root root 5, 2 Nov 12 14:59 /dev/pts/ptmx

Se algum programa ainda precisar de /dev/pts/ptmx , isso poderá ser permitido ajustando as permissões padrão, mas isso permitirá que as pessoas saibam quais programas ainda estão usando o nome de dispositivo obsoleto mais antigo.

    
por 22.11.2017 / 10:51
0

Quando um processo é aberto / dev / ptmx (usando posix_openpt () ), ele obtém um descritor de arquivo para um mestre pseudo-terminal (PTM) e um dispositivo pseudoterminal-escravo (PTS) é criado no diretório / dev / pts.

Quando o mestre é aberto, o escravo é bloqueado. Você pode obter o nome do escravo e definir suas permissões, e então desbloquear o escravo. Isso permite o controle do escravo antes que seja acessível.

O escravo emula um dispositivo terminal de texto real, o mestre fornece os meios pelos quais um processo de emulador de terminal controla o escravo.

O escravo é uma implementação virtual de um terminal físico e o mestre é uma implementação virtual da tipagem humana nesse terminal; o computador trata os caracteres enviados ao escravo da mesma forma como se um humano os tivesse digitado em um terminal real (limitado pela configuração de permissão quando o mestre foi criado).

    
por 22.11.2017 / 08:39