AtŔķirība starp bin, sbin, usr/bin, usr/sbin

30. gada 2010. novembrī Deivids Koljers rakstīja:

Es pamanīju, ka busybox saites ir sadalītas Ŕajos četros direktorijos.
Vai ir kāds vienkārÅ”s noteikums, lai noteiktu, kurā direktorijā ir jāatrodas saitēm?
Piemēram, kill ir /bin, un killall ir /usr/bin... Neredzu nekādu loÄ£iku Å”ajā sadalÄ«jumā.

JÅ«s droÅ”i vien zināt, ka Kens Tompsons un Deniss Ričijs izveidoja Unix uz PDP-7 1969. gadā. Tātad, ap 1971. gadu viņi jaunināja uz PDP-11 ar pāris RK05 diskiem (katrs 1,5 megabaiti).

Kad operētājsistēma pieauga un vairs neietilpa pirmajā diskā (kurā atradās saknes FS), viņi daļu pārcēla uz otro, kur atradās mājas direktoriji (tāpēc pievienoÅ”anas punkts tika saukts par / usr - no vārda lietotājs). Viņi tur dublēja visus nepiecieÅ”amos OS direktorijus (/bin, /sbin, /lib, /tmp ...) un ielika failus jaunā diskā, jo vecajā pietrÅ«ka vietas. Tad viņiem bija treÅ”ais disks, viņi to uzstādÄ«ja /home direktorijā un tur pārvietoja lietotāju mājas direktorijus, lai OS varētu aizņemt visu atlikuÅ”o vietu divos diskos, un tie bija pat trÄ«s megabaiti (wow!).

Protams, viņiem bija jāizstrādā noteikums, ka "operētājsistēmas sāknÄ“Å”anas laikā tai ir jāspēj uzstādÄ«t otru disku mapē /usr, tāpēc nelieciet tādas programmas kā mount otrajā diskā mapē /usr, pretējā gadÄ«jumā jums bÅ«s vistas un olu problēma." Tas ir tik vienkārÅ”i. Un tas bija Unix V6 pirms 35 gadiem.

/bin un /usr/bin (un visu Ŕādu direktoriju) sadalÄ«Å”ana ir Å”o notikumu mantojums, 70. gadu ievieÅ”anas detaļa, ko birokrāti ir kopējuÅ”i jau vairākus gadu desmitus. Viņi nekad nav uzdevuÅ”i jautājumu kāpēcviņi vienkārÅ”i to izdarÄ«ja. Å im sadalÄ«jumam vairs nebija jēgas pat pirms Linux izveides vairāku iemeslu dēļ:

  1. SāknÄ“Å”anas laikā tiek izmantots initrd vai initramfs, kas novērÅ” tādas problēmas kā "mums ir nepiecieÅ”ams Å”is fails pirms Ŕī." Tādējādi mums ir jau ir pagaidu failu sistēma, kas tiek izmantota, lai ielādētu visu pārējo.
  2. Koplietotās bibliotēkas (kuras Unix pievienoja Berklija puiÅ”i) neļauj atseviŔķi mainÄ«t /lib un /usr/lib saturu. Å Ä«m divām daļām ir jāsakrÄ«t, pretējā gadÄ«jumā tās nedarbosies. Tas nenotika 1974. gadā, jo viņiem toreiz bija zināma neatkarÄ«ba, pateicoties statiskajai saitei.
  3. Ap 100. gadu lēti cietie diski pārkāpa 1990 megabaitu barjeru, un aptuveni tajā paŔā laikā parādÄ«jās nodalÄ«jumu izmēru maiņas programmatÅ«ra (partition Magic 3.0 iznāca 1997. gadā).

Protams, tā kā ir dalÄ«jums, daži cilvēki ir izdomājuÅ”i noteikumus, kas to attaisno. Tāpat kā saknes nodalÄ«jums ir nepiecieÅ”ams visu veidu vispārÄ«gajām OS funkcijām, un vietējie faili ir jāievieto mapē / usr. Vai arÄ« ievietojiet / ko AT&T izplata, un /usr, ko jÅ«su izplatÄ«Å”ana, IBM AIX vai Dec Ultrix vai SGI Irix pievienoja, un /usr/local satur jÅ«su sistēmai raksturÄ«gus failus. Un tad kāds nolēma, ka /usr/local nav Ä«stā vieta jaunas programmatÅ«ras instalÄ“Å”anai, tāpēc pievienosim /opt! Es nebrÄ«nÄ«Å”os, ja parādÄ«sies arÄ« /opt/local ...

Protams, 30 gadu laikā Ŕīs atdalÄ«Å”anas dēļ ir raduÅ”ies un aizgājuÅ”i visādi interesanti izplatÄ«Å”anai specifiski noteikumi. Piemēram, "/tmp tiek notÄ«rÄ«ts atsāknÄ“Å”anas laikā, bet /usr/tmp nav." (Un Ubuntu principā nav /usr/tmp, un Gentoo /usr/tmp ir simboliska saite uz /var/tmp, uz kuru tagad attiecas Å”is noteikums, un tā netiek notÄ«rÄ«ta pārstartÄ“Å”anas laikā. Jā, Ŕī bija viss pirms Gadās arÄ« tā, ka saknes FS ir tikai lasāma, un tad arÄ« /usr nekas nav jāraksta, bet jāraksta uz /var. bÅ«tÄ«bā nevar rakstÄ«t, izņemot /etc, kuru dažreiz mēģināja pārvietot uz /var ...)

Birokrāti, piemēram, Linux fonds (kas aprija BrÄ«vo standartu grupu savas paplaÅ”ināŔanās laikā pirms gadiem), labprāt dokumentē un sarežģī Å”os noteikumus, nekad nemēģinot noskaidrot, kāpēc tie tur bija. Viņi neapzinās, ka Kens un Deniss tikko pārvietoja daļu OS uz savu mājas direktoriju, jo PDP-05 RK11 disks bija pārāk mazs.

Esmu diezgan pārliecināts, ka Busybox vienkārÅ”i ievieto failus tādā paŔā veidā, kā tas ir bijis vēsturiski. LÄ«dz Å”im nav Ä«sta iemesla to darÄ«t. PersonÄ«gi es vienkārÅ”i izveidoju /bin, /sbin un /lib saiti uz lÄ«dzÄ«giem direktorijiem /usr. Galu galā cilvēki, kas strādā ar iegulto programmatÅ«ru, cenÅ”as saprast un vienkārÅ”ot ...

Avots: www.habr.com

Pievieno komentāru