Dallimi midis bin, sbin, usr/bin, usr/sbin

Më 30 nëntor 2010, David Collier shkroi:

Vura re se në busybox lidhjet janë të ndara në këto katër drejtori.
A ka ndonjë rregull të thjeshtë për të përcaktuar se në cilin direktori se cila nga lidhjet duhet të shtrihet ...
Për shembull, kill është në /bin, dhe killall është në /usr/bin... Unë nuk shoh ndonjë logjikë në këtë ndarje.

Ju ndoshta e dini se Ken Thompson dhe Dennis Ritchie krijuan Unix në PDP-7 në 1969. Pra, rreth vitit 1971, ata u përmirësuan në një PDP-11 me një palë disqe RK05 (1,5 megabajt secila).

Kur sistemi operativ u rrit dhe nuk përshtatej më në diskun e parë (në të cilin ndodhej rrënja FS), ata kaluan një pjesë në të dytin, ku ndodheshin drejtoritë e shtëpisë (prandaj, pika e montimit u quajt /usr - nga fjala përdorues). Ata kopjuan të gjitha drejtoritë e nevojshme të OS atje (/bin, /sbin, /lib, /tmp ...) dhe i vendosën skedarët në një disk të ri, sepse të vjetrit i mbaroi hapësira. Pastaj ata patën një disk të tretë, ata e montuan atë në drejtorinë /home dhe i zhvendosën direktoritë kryesore të përdoruesve atje në mënyrë që OS të mund të merrte të gjithë hapësirën e mbetur në dy disqe, dhe këto ishin sa tre megabajt (Uau!).

Natyrisht, ata duhej të vendosnin një rregull që "kur sistemi operativ niset, ai duhet të jetë në gjendje të montojë një disk të dytë në /usr, kështu që mos vendosni programe si mont në diskun e dytë në /usr, përndryshe do të keni një problem me pulën dhe vezët." Është kaq e thjeshtë. Dhe kjo ishte në Unix V6 35 vjet më parë.

Ndarja e /bin dhe /usr/bin (dhe të gjitha drejtorive të tilla) është një trashëgimi e atyre ngjarjeve, një detaj implementimi nga vitet '70 që është kopjuar nga burokratët për dekada tani. Ata kurrë nuk e bënë pyetjen pseata thjesht e bënë atë. Kjo ndarje pushoi së pasuri kuptim edhe para se të krijohej Linux, për disa arsye:

  1. Gjatë nisjes, përdoret një initrd ose initramfs, i cili kujdeset për probleme të tilla si "ne kemi nevojë për këtë skedar para atij." Kështu, ne kemi tashmë kanë sistemi i skedarëve të përkohshëm që përdoret për të ngarkuar gjithçka tjetër.
  2. Bibliotekat e përbashkëta (të cilat janë shtuar në Unix nga djemtë në Berkley) nuk ju lejojnë të ndryshoni përmbajtjet e /lib dhe /usr/lib në mënyrë të pavarur. Këto dy pjesë duhet të përputhen ose nuk do të funksionojnë. Kjo nuk ndodhi në 1974 sepse ata kishin njëfarë pavarësie në atë kohë për shkak të lidhjeve statike.
  3. Hard disqet e lirë thyen barrierën prej 100 megabajt rreth vitit 1990 dhe në të njëjtën kohë u shfaq softueri për ndryshimin e madhësisë së ndarjeve (partition magic 3.0 doli në 1997).

Sigurisht, duke qenë se ka një ndarje, disa njerëz kanë nxjerrë rregulla që e justifikojnë atë. Për shembull, ndarja rrënjësore është e nevojshme për të gjitha llojet e veçorive të përgjithshme të OS, dhe ju duhet të vendosni skedarët tuaj lokalë në / usr. Ose vendosni / çfarë shpërndan AT&T dhe në /usr çfarë ka shtuar shpërndarja juaj, IBM AIX, ose Dec Ultrix, ose SGI Irix, dhe /usr/local përmban skedarë specifikë për sistemin tuaj. Dhe më pas dikush vendosi se /usr/local nuk ishte vendi i duhur për të instaluar softuer të ri, kështu që le të shtojmë /opt! Nuk do të habitem nëse shfaqet edhe /opt/local ...

Sigurisht, gjatë 30 viteve, për shkak të kësaj ndarjeje, të gjitha llojet e rregullave interesante specifike të shpërndarjes kanë ardhur dhe janë zhdukur. Për shembull, "/tmp pastrohet në rindezje, por /usr/tmp jo." (Dhe në Ubuntu nuk ka asnjë /usr/tmp në parim, dhe në Gentoo /usr/tmp është një lidhje simbolike me /var/tmp, e cila tani i nënshtrohet atij rregulli dhe nuk pastrohet gjatë rindezjes. Po, kjo ishte e gjitha më parë Ndodh gjithashtu që rrënja FS të jetë vetëm për lexim, dhe atëherë nuk keni nevojë të shkruani asgjë as në /usr, por duhet të shkruani në /var. në thelb nuk mund të shkruhet përveçse në /etc, e cila ndonjëherë u përpoq të zhvendosej në /var ...)

Burokratët si Fondacioni Linux (i cili gëlltiti Free Standards Group gjatë zgjerimit të tij vite më parë) janë të lumtur t'i dokumentojnë dhe ndërlikojnë këto rregulla pa u përpjekur kurrë të kuptojnë pse ishin atje. Ajo që ata nuk e kuptojnë është se Ken dhe Dennis sapo zhvendosën një pjesë të OS në drejtorinë e tyre kryesore sepse disku RK05 në PDP-11 ishte shumë i vogël.

Jam shumë i sigurt se busybox thjesht i vendos skedarët në të njëjtën mënyrë siç është zhvilluar historikisht. Nuk ka asnjë arsye reale për ta bërë këtë deri më tani. Personalisht, unë thjesht bëj lidhjen /bin, /sbin dhe /lib me drejtoritë e ngjashme në /usr. Në fund të fundit, njerëzit që punojnë me softuer të integruar përpiqen të kuptojnë dhe thjeshtojnë ...

Burimi: www.habr.com

Shto një koment