Erinevus bin, sbin, usr/bin, usr/sbin

30. november 2010 David Collier kirjutas:

Märkasin, et busyboxi lingid on jaotatud neljale direktorile.
Kas on mingi lihtne reegel, et määrata, millises direktorist peaks iga link olema...
Näiteks, kill on /bin, ja killall on /usr/bin... Ma ei näe selles jaotuses mingit loogikat.

Tõenäoliselt teate, et Ken Thompson ja Dennis Ritchie lõid Unix PDP-7-l 1969. aastal. Umbes 1971. aastal nad uuendasid PDP-11-le koos paariga RK05 kettaga (igaühe suurus oli 1,5 megabaiti).

Kui operatsioonisüsteem kasvas ja ei mahtunud enam esimesesse kettasse (kus asus juur-FS), tõid nad osa info teisest kettast, kuhu olid paigutatud kodudirektorid (seetõttu nimetati monteerimiskohta /usr — sõnast user). Nad kopeerisid sinna kõik vajalikud OS direktorid (/bin, /sbin, /lib, /tmp ...) ja paigutasid failid uuele kettale, kuna vanas polnud enam ruumi. Siis tuli kolmas ketas, mille nad monteerisid direktorisse /home ning viisid sinna kasutajate kodudirektorid, et OS saaks kasutada kõiki allesjäänud kohti kahel kettal, mille suurus oli kolm megabaiti (woow!).

Muidugi pidid nad sisse viima reegli, et "kui operatsioonisüsteem laeb, peab see olema võimeline monteerima teise ketta direktorisse /usr, seega ei tohiks programme nagu mount panna teisele kettale /usr, muidu saame kanamune probleemi." Nii lihtne see oligi. Ja see kehtis Unix V6 kohta 35 aastat tagasi.

/bin ja /usr/bin (ja kõik sarnased direktorid) on tagajärg nendele sündmustele, rakenduse üksikasjalik teostus 70-ndatest, mida on bürokraadid järginud aastakümneid. Nad ei küsinud kunagi miks, nad lihtsalt tegid nii. See jaotus kaotas tähenduse juba enne Linuxi loomist, mitmel põhjusel:

  1. Käivitamisel kasutatakse initrd või initramfs, mis tegeleb probleemidega nagu "see fail on vajalik varem kui see". Nii et meil on juba olemas ajutine failisüsteem, mida kasutatakse kogu ülejäänud laadimiseks.
  2. Jagatud teegid (mis lisati Unixi Berkley meeskonna poolt) ei luba teil iseseisvalt muuta sisu /lib ja /usr/lib. Need kaks osa peavad omavahel kokku sobima, vastasel juhul nad ei tööta. Seda ei juhtunud 1974. aastal, kuna toona oli neil teatud sõltumatus staatilise linkimise tõttu.
  3. Odavad kõvakettad ületasid 100 megabaidi piiri kuskil 1990. aastal ja umbes sel ajal ilmusid ka partiide suuruse muutmise programmid (partition magic 3.0 ilmus 1997. aastal).

Muidugi, kuna eristus on olemas, on mõned inimesed mõelnud reeglid, mis seda õigustavad. Näiteks, juurerood on vajalik igasuguste OS-i ühiste asjade jaoks, ja /usr-sse tuleb panna oma kohalikud failid. Või / sisaldab seda, mille AT&T levitab, ja /usr sisaldab seda, mille sinu jaotus, IBM AIX, või Dec Ultrix, või SGI Irix on lisanud, ning /usr/local sisaldab faile, mis on spetsiifilised sinu süsteemile. Siis keegi otsustas, et /usr/local ei ole sobiv koht uue tarkvara paigaldamiseks, nii et lisame veel /opt! Ma ei üllatuks, kui ilmub ka /opt/local...

Muidugi, 30 aasta jooksul on sellise eristumise tõttu ilmnenud ja kadunud igasuguseid huvitavaid reegleid, mis on spetsiifilised erinevatele jaotustele. Näiteks "tmp kaust tühjendatakse taaskäivitamisel, samas kui /usr/tmp - ei". (Ja Ubuntus ei ole /usr/tmp põhimõtteliselt olemas, samas kui Gentoo's on /usr/tmp sümboolne link /var/tmp-le, millele see reegel kehtib ja mida taaskäivitamisel ei tühjendata. Jah, see kõik oli juba enne tmpfs-i). Ja mõnikord on nii, et juurfailisüsteem on ainult lugemiseks ja siis ei pea ka /usr-s kirjutama, vaid tuleb kirjutada /var-sse. Või / peamiselt ei tohi kirjutada, välja arvatud see, et /etc-s, mida mõnikord prooviti /var-sse viia...)

Bürokraadid nagu Linux Foundation (kes neelas Free Standards Groupi laienemise ajal aastaid tagasi) dokumenteerivad ja keerukaks muudavad neid reegleid, isegi püüdmata mõista, miks need tekkisid. Nad ei saavuta, et Ken ja Dennis lihtsalt tõid osa OS-ist oma kodukausta, kuna RK05 ketas PDP-11-l oli liiga väike.

Olen praktiliselt kindel, et busybox paigutab faile samamoodi nagu see ajalooliselt on olnud. Ei ole mingit reaalset põhjust seda seni nii teha. Isiklikult teen ma lihtsalt /bin, /sbin ja /lib viidatud sarnastele kataloogidele /usr. Lõppude lõpuks püüavad inimesed, kes töötavad sisse ehitatud tarkvaraga, aru saada ja asju lihtsustada...

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster