Verskil tussen bin, sbin, usr/bin, usr/sbin

Op 30 November 2010 het David Collier geskryf:

Ek het opgemerk dat in busybox die skakels in hierdie vier gidse verdeel is.
Is daar 'n eenvoudige reël om te bepaal in watter gids watter van die skakels moet lê ...
Byvoorbeeld, kill is in /bin, en killall is in /usr/bin... Ek sien geen logika in hierdie afdeling nie.

Jy weet waarskynlik dat Ken Thompson en Dennis Ritchie in 7 Unix op die PDP-1969 geskep het. So, rondom 1971, het hulle opgegradeer na 'n PDP-11 met 'n paar RK05-skywe (1,5 megagrepe elk).

Toe die bedryfstelsel gegroei het en nie meer op die eerste skyf pas nie (waarop die wortel FS geleë was), het hulle 'n deel na die tweede geskuif, waar die tuisgidse geleë was (daarom is die bergpunt genoem / usr - van die woord gebruiker). Hulle het al die nodige OS-gidse daar gedupliseer (/bin, /sbin, /lib, /tmp ...) en die lêers op 'n nuwe skyf gesit, want die ou een het nie meer spasie gehad nie. Toe het hulle 'n derde skyf, hulle het dit in die /home-gids gemonteer en die gebruikers se tuisgidse daarheen geskuif sodat die OS al die oorblywende spasie op twee skywe kon neem, en dit was soveel as drie megagrepe (Sjoe!).

Natuurlik moes hulle 'n reël maak dat "wanneer die bedryfstelsel selflaai, dit 'n tweede skyf in /usr moet kan monteer, dus moenie programme soos mount op die tweede skyf in /usr plaas nie, anders sal jy 'n hoender-en-eierprobleem." Dis so eenvoudig. En dit was 6 jaar gelede in Unix V35.

Die verdeling van /bin en /usr/bin (en al sulke gidse) is 'n nalatenskap van daardie gebeure, 'n implementeringsdetail uit die 70's wat nou al dekades lank deur burokrate gekopieer word. Hulle het nooit die vraag gevra nie hoekomhulle het dit net gedoen. Hierdie afdeling het om verskeie redes opgehou om sin te maak selfs voordat Linux geskep is:

  1. By selflaai word 'n initrd of initramfs gebruik, wat sorg vir probleme soos "ons benodig hierdie lêer voor daardie een." So, ons het het reeds tydelike lêerstelsel wat gebruik word om alles anders te laai.
  2. Gedeelde biblioteke (wat deur die ouens by Berkley by Unix gevoeg is) laat jou nie toe om die inhoud van /lib en /usr/lib onafhanklik te verander nie. Hierdie twee dele moet ooreenstem of hulle sal nie werk nie. Dit het nie in 1974 gebeur nie, want hulle het destyds 'n mate van onafhanklikheid gehad as gevolg van statiese skakeling.
  3. Goedkoop hardeskywe het die 100 megagreep-grens rondom 1990 gebreek, en ongeveer dieselfde tyd het sagteware vir die grootte van partisie verskyn (partition magic 3.0 het in 1997 verskyn).

Natuurlik, aangesien daar 'n verdeeldheid is, het sommige mense met reëls vorendag gekom wat dit regverdig. Soos, die wortelpartisie is nodig vir allerhande algemene OS-kenmerke, en jy moet jou plaaslike lêers in / usr plaas. Of plaas in / wat AT&T versprei, en in /usr wat jou verspreiding, IBM AIX, of Dec Ultrix, of SGI Irix bygevoeg het, en /usr/local bevat lêers spesifiek vir jou stelsel. En toe besluit iemand /usr/local is nie die regte plek om nuwe sagteware te installeer nie, so kom ons voeg /opt! Ek sal nie verbaas wees as /opt/local ook verskyn nie ...

Natuurlik, oor die loop van 30 jaar, as gevolg van hierdie skeiding, het allerhande interessante verspreidingspesifieke reëls gekom en gegaan. Byvoorbeeld, "/tmp word uitgevee tydens herlaai, maar /usr/tmp is nie." (En in Ubuntu is daar in beginsel geen /usr/tmp nie, en in Gentoo is /usr/tmp 'n simboliese skakel na /var/tmp, wat nou onderhewig is aan daardie reël, en dit word nie uitgevee met herselflaai nie. Ja, hierdie was alles voor Dit gebeur ook dat die wortel FS leesalleen is, en dan hoef jy ook niks aan /usr te skryf nie, maar jy moet na /var skryf. basies kan nie geskryf word nie, behalwe in /etc, wat soms probeer is om geskuif te word na /var ...)

Burokrate soos die Linux-stigting (wat die Free Standards Group tydens sy uitbreiding jare gelede ingesluk het) is gelukkig om hierdie reëls te dokumenteer en te kompliseer sonder om ooit te probeer uitvind hoekom hulle daar was. Wat hulle nie besef nie, is dat Ken en Dennis net 'n deel van die bedryfstelsel na hul tuisgids geskuif het omdat die RK05-skyf op die PDP-11 te klein was.

Ek is redelik seker dat busybox net lêers op dieselfde manier plaas as wat dit histories gedoen het. Daar is tot nou toe geen werklike rede om dit te doen nie. Persoonlik maak ek net /bin, /sbin en /lib skakel na soortgelyke gidse in /usr. Mense wat met ingebedde sagteware werk, probeer immers verstaan ​​en vereenvoudig ...

Bron: will.com

Voeg 'n opmerking