Diferența dintre bin, sbin, usr/bin, usr/sbin

Pe 30 noiembrie 2010, David Collier a scris:

Am observat că în busybox link-urile sunt împărțite în aceste patru directoare.
Există o regulă simplă pentru a determina în ce director care dintre legături ar trebui să se afle...
De exemplu, kill este în /bin și killall este în /usr/bin... Nu văd nicio logică în această diviziune.

Probabil știți că Ken Thompson și Dennis Ritchie au creat Unix pe PDP-7 în 1969. Deci, în jurul anului 1971, au trecut la un PDP-11 cu o pereche de discuri RK05 (1,5 megaocteți fiecare).

Când sistemul de operare a crescut și nu mai încăpea pe primul disc (pe care se afla rădăcina FS), au mutat o parte în al doilea, unde se aflau directoarele de acasă (prin urmare, punctul de montare a fost numit / usr - din cuvânt utilizator). Au duplicat acolo toate directoarele necesare ale sistemului de operare (/bin, /sbin, /lib, /tmp ...) și au pus fișierele pe un disc nou, deoarece cel vechi a rămas fără spațiu. Apoi au avut un al treilea disc, l-au montat în directorul /home și au mutat acolo directoarele de acasă ale utilizatorilor, astfel încât sistemul de operare să poată ocupa tot spațiul rămas pe două discuri, iar acestea au fost până la trei megaocteți (Wow!).

Desigur, au trebuit să facă o regulă că „când sistemul de operare pornește, trebuie să poată monta un al doilea disc în /usr, așa că nu puneți programe precum mount pe al doilea disc în /usr sau veți avea o problemă cu găina și ouă”. Este atat de simplu. Și asta a fost în Unix V6 acum 35 de ani.

Împărțirea /bin și /usr/bin (și toate astfel de directoare) este o moștenire a acelor evenimente, un detaliu de implementare din anii 70 care a fost copiat de birocrați de zeci de ani. Nu au pus niciodată întrebarea de cetocmai au făcut-o. Această diviziune a încetat să aibă sens chiar înainte de a fi creat Linux, din mai multe motive:

  1. La pornire, se folosește un initrd sau initramfs, care se ocupă de probleme precum „avem nevoie de acest fișier înainte de acela”. Astfel, avem deja au sistem de fișiere temporar care este folosit pentru a încărca orice altceva.
  2. Bibliotecile partajate (care au fost adăugate la Unix de către cei de la Berkley) nu vă permit să schimbați independent conținutul /lib și /usr/lib. Aceste două părți trebuie să se potrivească sau nu vor funcționa. Acest lucru nu s-a întâmplat în 1974, deoarece aveau o anumită independență pe atunci datorită legăturilor statice.
  3. Hard disk-urile ieftine au spart bariera de 100 de megaocteți în jurul anului 1990 și, cam în același timp, a apărut software-ul de redimensionare a partițiilor (partition magic 3.0 a apărut în 1997).

Desigur, din moment ce există o diviziune, unii oameni au venit cu reguli care o justifică. De exemplu, partiția rădăcină este necesară pentru tot felul de caracteristici generale ale sistemului de operare și trebuie să puneți fișierele locale în / usr. Sau introduceți în / ce distribuie AT&T și în /usr ce a adăugat distribuția dvs., IBM AIX sau Dec Ultrix sau SGI Irix, iar /usr/local conține fișiere specifice sistemului dvs. Și apoi cineva a decis că /usr/local nu este locul potrivit pentru a instala software-ul nou, așa că să adăugăm /opt! Nu voi fi surprins dacă apare și /opt/local...

Desigur, de-a lungul a 30 de ani, din cauza acestei separări, au apărut și au dispărut tot felul de reguli interesante specifice distribuției. De exemplu, „/tmp este șters la repornire, dar /usr/tmp nu”. (Și în Ubuntu nu există /usr/tmp în principiu, iar în Gentoo /usr/tmp este o legătură simbolică către /var/tmp, care acum este supus acelei reguli și nu este șters la repornire. Da, aceasta a fost tot înainte. Se întâmplă, de asemenea, că rădăcina FS este doar pentru citire, iar apoi nu trebuie să scrieți nimic nici în /usr, dar trebuie să scrieți în /var. fundamental nu poate fi scris decât în ​​/etc, care s-a încercat uneori să fie mutat în /var ...)

Birocrati precum Linux Foundation (care a înghițit Free Standards Group în timpul expansiunii sale cu ani în urmă) sunt bucuroși să documenteze și să complice aceste reguli fără să încerce vreodată să-și dea seama de ce au fost acolo. Ceea ce ei nu realizează este că Ken și Dennis tocmai au mutat o parte din sistemul de operare în directorul lor de acasă, deoarece discul RK05 de pe PDP-11 era prea mic.

Sunt destul de sigur că busybox pune fișiere în același mod ca în trecut. Nu există niciun motiv real pentru a face acest lucru până acum. Personal, fac doar /bin, /sbin și /lib link către directoare similare în /usr. La urma urmei, oamenii care lucrează cu software încorporat încearcă să înțeleagă și să simplifice...

Sursa: www.habr.com

Adauga un comentariu