Forskellen mellem bin, sbin, usr/bin, usr/sbin

Den 30. november 2010 skrev David Collier:

Jeg har bemærket, at i busybox er links opdelt i disse fire mapper.
Er der en simpel regel til at bestemme i hvilken mappe, hvilke af linkene der skal ligge ...
For eksempel er kill i /bin, og killall er i /usr/bin... Jeg kan ikke se nogen logik i denne division.

Du ved sikkert, at Ken Thompson og Dennis Ritchie skabte Unix på PDP-7 i 1969. Så omkring 1971 opgraderede de til en PDP-11 med et par RK05-diske (1,5 megabyte hver).

Da styresystemet voksede og ikke længere passede ind på den første disk (som rod-FS var placeret på), flyttede de en del til den anden, hvor hjemmebibliotekerne var placeret (derfor blev monteringspunktet kaldt / usr - fra ordet bruger). De duplikerede alle de nødvendige OS-mapper der (/bin, /sbin, /lib, /tmp ...) og lagde filerne på en ny disk, fordi den gamle løb tør for plads. Så havde de en tredje disk, de monterede den i /home-mappen og flyttede brugernes hjemmemapper dertil, så OS kunne tage al den resterende plads på to diske, og disse var tre megabyte (wow!).

Selvfølgelig skulle de lave en regel om, at "når operativsystemet starter, skal det være i stand til at montere en anden disk i /usr, så lad være med at sætte programmer som mount på den anden disk i /usr, ellers har du et kylling-og-æg-problem." Så enkelt er det. Og det var i Unix V6 for 35 år siden.

Opdelingen af ​​/bin og /usr/bin (og alle sådanne mapper) er en arv fra disse begivenheder, en implementeringsdetalje fra 70'erne, som er blevet kopieret af bureaukrater i årtier nu. De stillede aldrig spørgsmålet hvorforde gjorde det bare. Denne opdeling holdt op med at give mening, selv før Linux blev oprettet, af flere grunde:

  1. Ved opstart bruges en initrd eller initramfs, som tager sig af problemer som "vi har brug for denne fil før den." Således har vi har allerede midlertidigt filsystem, der bruges til at indlæse alt andet.
  2. Delte biblioteker (som blev tilføjet til Unix af fyrene på Berkley) tillader dig ikke at ændre indholdet af /lib og /usr/lib uafhængigt. Disse to dele skal matche, ellers virker de ikke. Dette skete ikke i 1974, fordi de havde en vis uafhængighed dengang på grund af statiske forbindelser.
  3. Billige harddiske brød 100 megabyte-barrieren omkring 1990, og omkring samme tid dukkede software til partitionsændringer op (partition magic 3.0 udkom i 1997).

Selvfølgelig, da der er en opdeling, er nogle mennesker kommet med regler, der retfærdiggør det. Ligesom rodpartitionen er nødvendig for alle mulige generelle OS-funktioner, og du skal sætte dine lokale filer i / usr. Eller indsæt / hvad AT&T distribuerer, og i /usr hvad din distribution, IBM AIX eller Dec Ultrix eller SGI Irix tilføjede, og /usr/local indeholder filer, der er specifikke for dit system. Og så besluttede nogen, at /usr/local ikke var det rigtige sted at installere ny software, så lad os tilføje /opt! Jeg vil ikke blive overrasket, hvis /opt/local også vises ...

Selvfølgelig er der i løbet af 30 år, på grund af denne adskillelse, alle mulige interessante distributionsspecifikke regler kommet og gået. For eksempel, "/tmp ryddes ved genstart, men /usr/tmp er ikke." (Og i Ubuntu er der i princippet ingen /usr/tmp, og i Gentoo er /usr/tmp et symbolsk link til /var/tmp, som nu er underlagt den regel, og det slettes ikke ved genstart. Ja, dette var alt før Det sker også, at root FS er skrivebeskyttet, og så behøver du heller ikke skrive noget til /usr, men du skal skrive til /var. dybest set kan ikke skrives undtagen i /etc, som nogle gange blev forsøgt flyttet til /var ...)

Bureaukrater som Linux Foundation (som slugte Free Standards Group under dens ekspansion for år siden) er glade for at dokumentere og komplicere disse regler uden nogensinde at forsøge at finde ud af, hvorfor de var der. Hvad de ikke er klar over er, at Ken og Dennis lige har flyttet en del af operativsystemet til deres hjemmebibliotek, fordi RK05-disken på PDP-11 var for lille.

Jeg er ret sikker på, at busybox bare lægger filerne på samme måde, som det historisk har udviklet sig. Der er ingen reel grund til at gøre det indtil nu. Personligt laver jeg bare /bin, /sbin og /lib link til lignende mapper i /usr. Når alt kommer til alt, prøver folk, der arbejder med indlejret software at forstå og forenkle ...

Kilde: www.habr.com

Tilføj en kommentar