Pagkakaiba sa pagitan ng bin, sbin, usr/bin, usr/sbin

Noong Nobyembre 30, 2010, isinulat ni David Collier:

Napansin ko na sa busybox ang mga link ay nahahati sa apat na direktoryo na ito.
Mayroon bang ilang simpleng panuntunan upang matukoy kung aling direktoryo kung alin sa mga link ang dapat magsinungaling ...
Halimbawa, ang kill ay nasa /bin, at ang killall ay nasa /usr/bin... Wala akong nakikitang lohika sa dibisyong ito.

Marahil alam mo na sina Ken Thompson at Dennis Ritchie ay lumikha ng Unix sa PDP-7 noong 1969. Kaya, noong mga 1971, nag-upgrade sila sa isang PDP-11 na may isang pares ng RK05 disks (1,5 megabytes bawat isa).

Kapag ang operating system ay lumago at hindi na magkasya sa unang disk (kung saan matatagpuan ang root FS), inilipat nila ang bahagi sa pangalawa, kung saan matatagpuan ang mga direktoryo ng bahay (samakatuwid, ang mount point ay tinawag na / usr - mula sa salita gumagamit). Nadoble nila ang lahat ng kinakailangang mga direktoryo ng OS doon (/bin, /sbin, /lib, /tmp ...) at inilagay ang mga file sa isang bagong disk, dahil ang luma ay naubusan ng espasyo. Pagkatapos ay mayroon silang pangatlong disk, ini-mount nila ito sa direktoryo ng /home at inilipat ang mga direktoryo ng tahanan ng mga gumagamit doon upang makuha ng OS ang lahat ng natitirang espasyo sa dalawang disk, at ang mga ito ay kasing dami ng tatlong megabytes (wow!).

Siyempre, kailangan nilang gumawa ng panuntunan na "kapag nag-boot ang operating system, dapat itong mag-mount ng pangalawang disk sa /usr, kaya huwag maglagay ng mga programa tulad ng mount sa pangalawang disk sa /usr o magkakaroon ka problema sa manok-at-itlog." Ganun kasimple. At iyon ay sa Unix V6 35 taon na ang nakakaraan.

Ang paghahati ng /bin at /usr/bin (at lahat ng naturang direktoryo) ay isang legacy ng mga kaganapang iyon, isang detalye ng pagpapatupad mula sa 70s na kinopya ng mga burukrata sa loob ng mga dekada ngayon. Hindi na sila nagtanong bakitginawa lang nila. Ang dibisyong ito ay tumigil sa pagkakaroon ng kahulugan bago pa man nilikha ang Linux, sa ilang kadahilanan:

  1. Kapag nagbo-boot, ginagamit ang initrd o initramfs, na nangangasiwa sa mga problema tulad ng "kailangan namin ang file na ito bago ang file na iyon." Kaya, mayroon kami mayroon na pansamantalang file system na ginagamit upang i-load ang lahat ng iba pa.
  2. Ang mga nakabahaging aklatan (na idinagdag sa Unix ng mga lalaki sa Berkley) ay hindi nagpapahintulot sa iyo na baguhin ang mga nilalaman ng /lib at /usr/lib nang hiwalay. Dapat magkatugma ang dalawang bahaging ito o hindi gagana ang mga ito. Hindi ito nangyari noong 1974 dahil nagkaroon sila ng ilang kalayaan noon dahil sa static linking.
  3. Sinira ng mga murang hard drive ang 100 megabyte barrier noong 1990, at sa parehong oras, lumitaw ang partition resizing software (lumabas ang partition magic 3.0 noong 1997).

Siyempre, dahil may dibisyon, may mga taong nakabuo ng mga patakaran na nagbibigay-katwiran dito. Tulad ng, ang root partition ay kailangan para sa lahat ng uri ng pangkalahatang mga tampok ng OS, at kailangan mong ilagay ang iyong mga lokal na file sa / usr. O ilagay sa / kung ano ang ipinamamahagi ng AT&T, at sa /usr kung ano ang iyong pamamahagi, IBM AIX, o Dec Ultrix, o SGI Irix na idinagdag, at /usr/local ay naglalaman ng mga file na partikular sa iyong system. At pagkatapos ay may nagpasya na /usr/local ay hindi ang tamang lugar para mag-install ng bagong software, kaya't idagdag natin ang /opt! Hindi na ako magtataka kung lalabas din ang /opt/local ...

Siyempre, sa loob ng 30 taon, dahil sa paghihiwalay na ito, lahat ng uri ng kawili-wiling mga patakarang tukoy sa pamamahagi ay dumating at nawala. Halimbawa, "/tmp ay na-clear sa pag-reboot, ngunit /usr/tmp ay hindi." (At sa Ubuntu walang /usr/tmp sa prinsipyo, at sa Gentoo /usr/tmp ay isang simbolikong link sa /var/tmp, na napapailalim na ngayon sa panuntunang iyon, at hindi ito na-clear sa pag-reboot. Oo, ito was all before Nangyayari rin na ang root FS ay read-only, at pagkatapos ay hindi mo na kailangang magsulat ng kahit ano sa /usr, ngunit kailangan mong sumulat sa /var. pangunahin ay hindi maisusulat maliban sa /etc, na kung minsan ay sinubukang ilipat sa /var ...)

Ang mga burukrata tulad ng Linux Foundation (na nilamon ang Free Standards Group sa panahon ng pagpapalawak nito taon na ang nakakaraan) ay masaya na idokumento at gawing kumplikado ang mga panuntunang ito nang hindi sinusubukang malaman kung bakit sila naroon. Ang hindi nila namamalayan ay inilipat lang nina Ken at Dennis ang bahagi ng OS sa kanilang home directory dahil masyadong maliit ang RK05 disk sa PDP-11.

Sigurado ako na ang busybox ay naglalagay lamang ng mga file sa parehong paraan tulad ng dati. Walang tunay na dahilan para gawin ito hanggang ngayon. Sa personal, gumagawa lang ako ng /bin, /sbin at /lib na link sa mga katulad na direktoryo sa /usr. Pagkatapos ng lahat, sinusubukan ng mga taong nagtatrabaho sa naka-embed na software na maunawaan at pasimplehin ...

Pinagmulan: www.habr.com

Magdagdag ng komento