30. november 2010 kirjutas David Collier:
Märkasin, et busybox'i lingid on jagatud nelja kausta.
Kas on mingi lihtne reegel, et määrata ära, millises kaustas milline link peaks olema…
Näiteks, kill asub /bin, aga killall on /usr/bin… Ma ei näe sellises jagamises mingit loogikat.
Tõenäoliselt tead, et Ken Thompson ja Dennis Ritchie lõid Unix-i PDP-7-l 1969. aastal. Umbes 1971. aastal nad uuendasid PDP-11-le koos paari RK05 kettaga (igaüks 1,5 megabaiti).
Kui operatsioonisüsteem kasvas ja ei mahtunud enam esimesesse ketta, kus asus juure faili süsteem, siis nad viisid osa teise, kuhu paigutati kodukaustad (seetõttu nimetati mount-punkti /usr — sõnast user). Nad kopeerisid sinna kõik vajalikud OS kaustad (/bin, /sbin, /lib, /tmp …) ja ladustasid faile uuele kettale, kuna vanal oli ruum otsa saanud. Siis ilmus neile kolmas ketas, nad montisid selle /home kausta ja viimistlesid sinna kasutajate kodukaustad, et OS saaks ära kasutada kogu ülejäänud ruumi kahes ketas, ja see oli kolm megabaiti (wow!).
Muidugi pidid nad kehtestama reegli, et "kui operatsioonisüsteem käivitatakse, peab see olema võimeline liitma teise ketta kausta /usr, seega ei tohi paigutada selliseid programme nagu mount teisele kettale kausta /usr, muidu saame munade ja kana probleemi". Nii lihtne see on. Ja see kehtis Unix V6 kohta 35 aastat tagasi.
Kaalumine /bin ja /usr/bin (ja kõigi sarnaste kaustade) vahel on selle asja tagajärg, detailide teostamine 70-ndatest, mida bürokraadid on lihtsalt aastakümnete jooksul kopeerinud. Nad ei küsinud kunagi küsimusi, miks, nad lihtsalt tegid nii. See kaalumine kaotas mõtte juba enne Linuxi loomist, mitmel põhjusel:
- Käivitamisel kasutatakse initrd või initramfs-i, mis tegeleb probleemidega, nagu "see fail on meil vajalik enne seda". Seega, meil on juba olemas. ajutine failisüsteem, mida kasutatakse kõigi muude koormamiseks.
- Jagatud raamatukogud (mis lisati Unixi Berkley meestelt) ei luba teil iseseisvalt muuta sisu /lib ja /usr/lib. Need kaks osa peavad üksteisega vastama, vastasel juhul ei toimi need. Seda ei juhtunud 1974. aastal, kuna tol ajal oli neil mingi sõltumatus staatilise sidumise tõttu.
- Odavad kõvakettad ületasid 100 megabaidi piiri kuskil 1990. aastal ja umbes sel ajal ilmusid ka partitsioonide muutmise programmid (Partition Magic 3.0 ilmus 1997. aastal).
Muidugi, kuna jagamine on olemas, on mõned inimesed välja mõelnud reeglid, mis seda õigustavad. Näiteks, juurkataloog istub, et hoida igasuguseid OS-i ühiseid asju, ja /usr alla tuleb panna teie kohalikud failid. Või paigaldatakse / AT&T levitatud asjad, ja /usr — mida teie jaotamine, IBM AIX või Dec Ultrix või SGI Irix on lisanud, samal ajal kui /usr/local alla asetatakse teie süsteemile spetsiifilised failid. Siis keegi otsustas, et /usr/local ei ole sobiv koht uue tarkvara installimiseks, nii et lisame ka /opt! Ma ei oleks üllatunud, kui ilmub ka /opt/local...
Muidugi on 30 aasta jooksul sellise jaotuse tõttu tekkinud ja kadunud erinevaid eripäraseid reegleid, mis on spetsiifilised teatud jaotustele. Näiteks «/tmp puhastatakse pärast taaskäivitamist, kuid /usr/tmp mitte». (Ja Ubuntu puhul ei ole /usr/tmp üldse olemas, Gentoo-s on aga /usr/tmp sümboolne link /var/tmp-le, millele see reegel laieneb ja mida ei puhastata taaskäivitamise ajal. Jah, see kõik oli veel enne tmpfs-i. Ja juhtub ka, et juur FS on ainult kirjutamisvõimetu, ning siis ei tohi ka /usr alla kirjutada, vaid tuleb kirjutada /var-i. Või / peamiselt ei tohi kirjutada, välja arvatud need, mis on /etc-s, mida mõnikord üritati /var-i viia…)
Bürokraadid nagu Linux Foundation (kes neelasid Free Standards Groupi laienemise käigus aastaid tagasi) rõõmustavad nende reeglite dokumenteerimise ja keerukuse üle, isegi mõistmata, miks need tekkisid. Nad ei arva, et Ken ja Dennis lihtsalt viisid osa operatsioonisüsteemist oma kodukausta, kuna RK05 ketas PDP-11-l oli liiga väike.
Ma olen praktiliselt kindel, et busybox paigutab faile lihtsalt ajaloolistel põhjustel. Pole mingeid reaalseid põhjuseid, miks seda siiani teha. Isiklikult teen lihtsalt /bin, /sbin ja /lib linkideks vastavatesse kataloogidesse /usr. Lõppude lõpuks püüavad inimesed, kes tegelevad sisseehitatud tarkvaraga, asjadest paremini aru saada ja neid lihtsustada…
Allikas: habr.com
