Pe 30 noiembrie 2010, David Collier a scris:
Am observat că în busybox legăturile sunt distribuite în aceste patru directoare.
Există o regulă simplă pentru a determina în care director ar trebui să fie fiecare legătură…
De exemplu, kill se află în /bin, iar killall în /usr/bin… Nu văd nicio logică în această împărțire.
Probabil știți că Ken Thompson și Dennis Ritchie au creat Unix pe PDP-7 în 1969. Așadar, în jurul anului 1971, s-au modernizat la PDP-11 cu câteva discuri RK05 (de câte 1,5 megabai fiecare).
Când sistemul de operare s-a extins și nu a putut să încapă pe primul disc (pe care se afla sistemul de fișiere rădăcină), au mutat o parte pe al doilea, unde se aflau directoarele home (de aici denumirea mount point-ului /usr — de la user). Au duplicat acolo toate directoarele necesare ale sistemului de operare (/bin, /sbin, /lib, /tmp …) și au stocat fișiere pe noul disc pentru că pe cel vechi s-a terminat spațiul. Apoi au obținut un al treilea disc, l-au montat în directorul /home și au mutat acolo directoarele home ale utilizatorilor, astfel încât sistemul de operare să poată ocupa tot spațiul rămas pe cele două discuri, adică în jur de trei megabai (wow!).
Desigur, a trebuit să introducă o regulă: 'atunci când sistemul de operare pornește, trebuie să fie capabil să monteze al doilea disc în directorul /usr, așa că nu trebuie să punem programe precum mount pe al doilea disc în /usr, altfel vom avea problema găinii și a oului'. Așa de simplu. Și aceasta era valabilă pentru Unix V6 acum 35 de ani.
Împărțirea /bin și /usr/bin (și a tuturor directoarelor similare) este o consecință a acelor evenimente, un detaliu de implementare din anii '70, care a fost repetată de birocrați timp de decenii întregi. Ei nu s-au întrebat de ce, au făcut pur și simplu așa. Această împărțire a încetat să mai aibă sens cu mult înainte de a fi creat Linux, din mai multe motive:
- La pornire se folosește initrd sau initramfs, care își asumă problemele de genul 'acest fișier ne trebuie înainte de acel fișier'. Așadar, avem este deja disponibil un sistem de fișiere temporar, care este folosit pentru a porni tot restul.
- Bibliotecile partajate (care au fost adăugate în Unix de către băieții de la Berkley) nu permit modificarea independentă a conținutului din /lib și /usr/lib. Aceste două părți trebuie să fie conforme între ele, altfel nu vor funcționa. Acest lucru nu se întâmpla în 1974, deoarece atunci existau o anumită independență datorită linkării statice.
- Hard disk-urile ieftine au depășit bariera de 100 de megabytes undeva în 1990, iar aproximativ în aceeași perioadă au fost introduse programele pentru redimensionarea partițiilor (partition magic 3.0 a fost lansat în 1997).
Desigur, având în vedere că există împărțire, unii oameni au inventat reguli care o justifică. De exemplu, partiția rădăcină este necesară pentru diferitele elemente comune ale sistemului de operare, iar în /usr ar trebui să se află fișierele tale locale. Sau în / se pune ceea ce distribuie AT&T, iar în /usr - ceea ce a adăugat distribuția ta, IBM AIX, sau Dec Ultrix, sau SGI Irix, iar în /usr/local sunt fișiere specifice sistemului tău. Apoi, cineva a decis că /usr/local nu este un loc potrivit pentru a instala software nou, așa că să adăugăm și /opt! Nu m-aș mira dacă va apărea și /opt/local...
Desigur, în decursul a 30 de ani, datorită acestei împărțiri, au apărut și dispărut tot felul de reguli interesante specifice diferitelor distribuții. De exemplu, „/tmp se curăță la repornire, dar /usr/tmp nu”. (Și în Ubuntu /usr/tmp nu există în principiu, iar în Gentoo /usr/tmp este un link simbolic către /var/tmp, căruia acum i se aplică acea regulă, iar el nu se curăță la repornire. Da, toate acestea au fost înainte de tmpfs. De asemenea, este cazul ca sistemul de fișiere rădăcină să fie disponibil doar în mod read-only, iar atunci în /usr nu trebuie scris nimic, ci trebuie scris în /var. Sau în / în principal nu se poate scrie, cu excepția celor din /etc, care uneori au încercat să fie mutate în /var...)
Birocrații precum Linux Foundation (care au absorbit Free Standards Group în timpul extinderii cu mulți ani în urmă) documentează și complică aceste reguli cu plăcere, fără a încerca să înțeleagă de ce au apărut. Nu au idee că Ken și Dennis au mutat pur și simplu o parte din OS în directorul lor home, pentru că discul RK05 de pe PDP-11 era prea mic.
Sunt aproape sigur că busybox pur și simplu plasează fișierele așa cum s-a făcut istoric. Nu există o reală justificare pentru a face asta și astăzi. Personal, eu doar fac ca /bin, /sbin și /lib să fie linkuri către directoare similare în /usr. Oamenii care lucrează cu software încorporat încearcă să înțeleagă și să simplifice...
Sursa: habr.com
