Mais duas coisas: a migração do Linux para a empresa & outros servidores grandes estavam expondo a static /dev
a ser quebrada. O avanço da tecnologia, tanto no consumidor quanto na empresa, estava expondo a static / dev como uma brincadeira. [Esta resposta preenche mais o histórico, não particularmente porque o devfs foi substituído pelo udev].
Exaustão de Major & Espaço Numérico Menor
/dev
arquivos são identificados dentro do kernel por seus números maiores e menores. O kernel nunca se importou com o nome (e você poderia, por exemplo, mv /dev/sda /dev/disk-1
e continuar a trabalhar - embora os programas do curso não saibam onde encontrá-lo).
Com um /dev
estático, você precisa alocar um número maior / menor para cada dispositivo em potencial que possa existir. Esses números precisam ser únicos globalmente, já que são enviados como parte de distros, não criados sob demanda. O problema é que eles são números de 8 bits - o intervalo é de 0 a 255.
Originalmente, por exemplo, o Linux começou com 8,0 sendo sda, 8,1 sendo sda1, 8,16 sendo sdb, etc. Mas as pessoas continuaram adicionando mais e mais discos às máquinas, especialmente quando você considera coisas como o canal de fibra . Então, em algum momento, números maiores de 65 a 71 foram adicionados para mais discos. Mais tarde, grandes números 128–135. E ainda assim as pessoas continuaram querendo mais discos ...
E os formatos de tabelas de partições como o GPT surgiram, suportando mais partições por disco. E, claro, outros dispositivos estavam comendo o espaço numérico: vários controladores RAID, gerenciamento de volume lógico, etc.
O resultado final pode ser visto na Lista de dispositivos LANANA Linux . Se você olhar para a lista 2.6 (a única que ainda existe), muitos dos números maiores do bloco até 200 (máx: 255) são usados. Claramente, os números teriam acabado.
Mudar para números maiores não foi fácil. Altera o kernel ABI. Dependendo do sistema de arquivos, ele altera o layout do disco. Mas, é claro, a maioria desses dispositivos não existia em nenhum sistema, mesmo um que estivesse (por exemplo) sem discos SCSI provavelmente tinha muitas coisas gratuitas - provavelmente não precisa de um disco rígido IBM XT, por exemplo.
Com um /dev
dinâmico, a distro não precisa enviar os números dos dispositivos. Eles não precisam mais ser globalmente únicos. Eles nem precisam ser únicos nas botas.
Os nomes dos dispositivos eram imprevisíveis
Costumava ser muito fácil atribuir um número a tudo. Uma placa tinha dois canais IDE; Cada canal IDE suportava um mestre e um escravo. Você pode atribuir na ordem do canal e na ordem do mestre-então-escravo. Então hda
se torna primeiro canal, mestre; hdb
primeiro canal, escravo; hdc
segundo canal, mestre; Esses eram previsíveis e estáveis. Eles podem mudar se você adicionar uma nova unidade, ou remover uma, mas sem alteração de hardware, eles são estáticos.
Você pode colocar /dev/hda1
no seu /etc/fstab
e ter certeza de que ele continuará funcionando, pelo menos com alterações de hardware ausentes.
IDE funcionou assim. Nada depois disso.
O SATA parece ser simples: uma porta, um disco. Mas não é assim; permite multiplicadores de porta. E isso permite hot-swap. Ainda assim, alterações de hardware ausentes, você ainda pode manter o mapeamento funcionando.
O USB é muito pior. Não só permite hot swap, é típico. As pessoas conectam drives flash USB o tempo todo. Além disso, os dispositivos podem demorar um pouco para serem investigados e, na verdade, podem ser alterados sempre que quiserem (por exemplo, quando você ativa ou desativa o modo de armazenamento USB no telefone). Firewire é semelhante. Com nem você pode realmente chegar a um mapeamento estável.
Os discos conectados à rede não têm nenhuma ordem de porta inerente. A única ordem que o kernel usa é a ordem em que aparecem. O mesmo acontece com os volumes lógicos.
A busca pela velocidade de inicialização também piorou as coisas. Originalmente, o kernel ficaria feliz em ficar sentado e esperar bastante tempo por, por exemplo, todos os dispositivos USB para inicializar. Para testar completamente todos os barramentos SCSI, etc. Esses testes foram feitos em tarefas em segundo plano; boot não iria mais esperar por eles. Os dispositivos são adicionados conforme as sondas são concluídas.
Assim, o kernel ficou com, mais ou menos, "qualquer ordem em que aparecem". Isso significa que muitos tipos de dispositivos podem e mudam a ordem de cada inicialização - o que estava em uma inicialização /dev/sdb
estava em outra inicialização /dev/sdc
. Isso torna a idéia de uma piada /dev
a estática.
Resumo
Quando você toma a combinação de estática /dev
se tornando cada vez mais insignificante devido a ordens de sondagem de dispositivo imprevisíveis e continua alocando números principais / secundários estáticos levando a um trabalho substancial para não acabar, fica claro por que os desenvolvedores do Linux optaram por mudar para um% dinâmico/dev
.