Diferenza entre bin, sbin, usr/bin, usr/sbin

O 30 de novembro de 2010, David Collier escribiu:

Notei que en busybox as ligazóns están divididas nestes catro directorios.
Hai algunha regra sinxela para determinar en que directorio cal das ligazóns debería estar...
Por exemplo, kill está en /bin e killall está en /usr/bin... Non vexo ningunha lóxica nesta división.

Probablemente saibas que Ken Thompson e Dennis Ritchie crearon Unix no PDP-7 en 1969. Entón, ao redor de 1971, actualizaron a un PDP-11 cun par de discos RK05 (1,5 megabytes cada un).

Cando o sistema operativo creceu e xa non encaixa no primeiro disco (no que se atopaba a raíz FS), trasladaron parte ao segundo, onde se atopaban os directorios de inicio (polo tanto, o punto de montaxe chamábase / usr - da palabra usuario). Duplicaron alí todos os directorios do SO necesarios (/bin, /sbin, /lib, /tmp...) e puxeron os ficheiros nun disco novo, porque o antigo quedou sen espazo. Despois tiñan un terceiro disco, montárono no directorio /home e moveron alí os directorios de inicio dos usuarios para que o SO puidese ocupar todo o espazo restante en dous discos, e estes foron ata tres megabytes (vai!).

Por suposto, tiñan que facer unha regra que "cando o sistema operativo arranque, debe poder montar un segundo disco en /usr, así que non coloque programas como mount no segundo disco en /usr ou terás un problema de galiña e ovo". Así de sinxelo. E iso foi en Unix V6 hai 35 anos.

A división de /bin e /usr/bin (e todos os directorios deste tipo) é un legado deses eventos, un detalle de implementación dos anos 70 que foi copiado polos burócratas desde hai décadas. Nunca fixeron a pregunta por quesó o fixeron. Esta división deixou de ter sentido mesmo antes de que se crease Linux, por varias razóns:

  1. Ao arrancar, úsase un initrd ou initramfs, que se ocupa de problemas como "necesitamos este ficheiro antes que ese". Así, temos xa ten sistema de ficheiros temporal que se usa para cargar todo o demais.
  2. As bibliotecas compartidas (que foron engadidas a Unix polos mozos de Berkley) non che permiten cambiar o contido de /lib e /usr/lib de forma independente. Estas dúas partes deben coincidir ou non funcionarán. Isto non ocorreu en 1974 porque tiñan certa independencia daquela debido á conexión estática.
  3. Os discos duros baratos romperon a barreira dos 100 megabytes ao redor de 1990, e ao mesmo tempo apareceu o software de cambio de tamaño das particións (partition magic 3.0 saíu en 1997).

Por suposto, dado que hai división, algunhas persoas elaboraron unhas normas que a xustifican. Por exemplo, a partición raíz é necesaria para todo tipo de funcións xerais do sistema operativo e necesitas poñer os teus ficheiros locais en / usr. Ou pon / o que AT&T distribúe e en /usr o que a túa distribución, IBM AIX ou Dec Ultrix, ou SGI Irix engadiu, e /usr/local contén ficheiros específicos do teu sistema. E entón alguén decidiu que /usr/local non era o lugar axeitado para instalar software novo, así que engademos /opt! Non me sorprenderá se tamén aparece /opt/local...

Por suposto, ao longo de 30 anos, debido a esta separación, apareceron e desapareceron todo tipo de regras específicas de distribución interesantes. Por exemplo, "/tmp borrarase ao reiniciar, pero /usr/tmp non". (E en Ubuntu non hai /usr/tmp en principio, e en Gentoo /usr/tmp hai unha ligazón simbólica a /var/tmp, que agora está suxeita a esa regra, e non se borra ao reiniciar. Si, isto era todo antes Tamén ocorre que o FS raíz é de só lectura, e entón tampouco necesitas escribir nada en /usr, senón que necesitas escribir en /var. basicamente non se pode escribir excepto en /etc, que ás veces se intentou mover a /var...)

Burócratas como a Fundación Linux (que tragou o Grupo de Estándares Libres durante a súa expansión hai anos) están encantados de documentar e complicar estas regras sen nunca tentar descubrir por que estaban alí. O que non se dan conta é que Ken e Dennis só moveron parte do sistema operativo ao seu directorio persoal porque o disco RK05 do PDP-11 era demasiado pequeno.

Estou bastante seguro de que busybox só coloca os ficheiros do mesmo xeito que históricamente. Non hai ningunha razón real para facelo ata agora. Persoalmente, só fago que /bin, /sbin e /lib enlacen a directorios similares en /usr. Despois de todo, as persoas que traballan con software incorporado intentan entender e simplificar...

Fonte: www.habr.com

Engadir un comentario