Dos cosas más: el paso de Linux a la empresa y otros servidores grandes estaba exponiendo la electricidad estática /dev
. La tecnología avanzada, tanto en el consumidor como en la empresa, estaba exponiendo static / dev como una broma. [Esta respuesta llena más de la historia de fondo, no particularmente por qué devfs fue reemplazado por udev].
Agotamiento del espacio numérico mayor y menor
/dev
los archivos se identifican dentro del núcleo por sus números mayores y menores. El núcleo nunca se ha preocupado por el nombre (y usted podría, por ejemplo, mv /dev/sda /dev/disk-1
y continuaría funcionando, aunque, por supuesto, los programas no sabrían dónde encontrarlo).
Con una estática /dev
, debe asignar un número mayor / menor para cada dispositivo potencial que pueda existir. Estos números deben ser únicos a nivel mundial, ya que se envían como parte de distribuciones, no creados a pedido. El problema es que cada uno de ellos es un número de 8 bits, el rango es 0-255.
Originalmente, por ejemplo, Linux comenzó con 8,0 siendo sda, 8,1 siendo sda1, 8,16 siendo sdb, etc. Pero la gente seguía agregando más y más discos a las máquinas, especialmente cuando consideraba cosas como el canal de fibra. Entonces, en algún momento, se agregaron los números principales 65-71 para más discos. Más tarde, los principales números 128-135. Y sin embargo, la gente seguía queriendo más discos ...
Y surgieron formatos de tabla de particiones como GPT, que admiten más particiones por disco. Y, por supuesto, otros dispositivos estaban consumiendo el espacio numérico: varios controladores RAID, gestión lógica de volumen, etc.
El resultado final se puede ver en la lista de dispositivos LANANA Linux . Si observa la lista 2.6 (la única que sigue allí), se utilizan muchos de los números principales de bloque hasta 200 (máx .: 255). Claramente, los números se habrían agotado.
Cambiar a números más grandes no fue fácil. Cambia el núcleo ABI. Dependiendo del sistema de archivos, cambia el diseño en disco. Pero, por supuesto, la mayoría de esos dispositivos no existían en ningún sistema, incluso uno que (por ejemplo) se estaba quedando sin discos SCSI probablemente tenía muchas cosas libres, probablemente no necesitaba un disco duro IBM XT, por ejemplo.
Con una dinámica /dev
, la distribución no tiene que enviar los números de dispositivo. Ya no tienen que ser globalmente únicos. Ni siquiera tienen que ser únicos en las botas.
Los nombres de los dispositivos eran impredecibles.
Solía ser muy fácil asignar un número a todo. Una placa tenía dos canales IDE; cada canal IDE soportaba un maestro y un esclavo. Puede asignar en orden de canal y orden maestro-luego-esclavo. Entonces se hda
convierte en el primer canal, maestro; hdb
primer canal, esclavo; hdc
segundo canal, maestro; etc. Eran predecibles y estables. Pueden cambiar si agrega una nueva unidad o quita una, pero a falta de un cambio de hardware, eran estáticos.
Puede poner /dev/hda1
su /etc/fstab
y estar seguro de que seguirá funcionando, al menos sin cambios de hardware.
IDE funcionó así. Nada después de eso.
SATA parece ser simple: un puerto, un disco. Pero no es así; Permite multiplicadores de puertos. Y permite el intercambio en caliente. Aún así, a falta de cambios de hardware, aún puede mantener el mapeo funcionando.
El USB es mucho peor. No solo permite el intercambio en caliente, es típico. Las personas conectan unidades flash USB todo el tiempo. Además, los dispositivos pueden tardar un tiempo en sondear, y en realidad pueden cambiar cada vez que lo deseen (por ejemplo, al encender o apagar el modo de almacenamiento USB en su teléfono). Firewire es similar. Con ninguno de los dos puede realmente llegar a un mapeo estable.
Los discos conectados a la red no tienen ningún orden de puertos inherente. El único orden que utiliza el núcleo es el orden en que aparecieron. Lo mismo ocurre con los volúmenes lógicos.
La búsqueda de la velocidad de arranque también empeoró las cosas. Originalmente, el núcleo se sentaría felizmente y esperaría un tiempo bastante largo para, por ejemplo, que todos los dispositivos USB se inicialicen. Para sondear completamente todos los buses SCSI, etc. Esas sondas se convirtieron en tareas en segundo plano; la bota ya no los esperaría. Los dispositivos se agregan a medida que se completan las sondas.
Así que el núcleo se quedó con, más o menos, "cualquier orden en que aparezcan". Esto significaba que muchos tipos de dispositivos pueden cambiar y cambiaron el orden de cada arranque; lo que estaba en un arranque /dev/sdb
estaba en otro arranque /dev/sdc
. Esto hace que la idea de una estática sea /dev
una broma.
Resumen
Cuando toma la combinación de estática /dev
cada vez más sin sentido debido a órdenes de sondeo de dispositivos impredecibles, y continúa asignando números mayores / menores estáticos que conducen a un trabajo sustancial para que no se agote, queda claro por qué los desarrolladores de Linux eligieron cambiar a una dinámica /dev
.
/dev
no abordan (de manera fácil o conveniente) cosas como una persona que conecta un adaptador de red USB o adaptadores de red virtuales que se agregan o quitan mientras el sistema está en funcionamiento. Sin embargo, nada le impide desinstalarudev
y volver a la/dev
ruta del directorio estático antiguo .