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

30. november 2010 skrev David Collier:

Jeg bemærkede, at i busybox er links opdelt i disse fire mapper.
Er der nogen enkel regel for at afgøre, i hvilken mappe hvilket link skal være ...
For eksempel ligger kill i /bin, mens killall ligger i /usr/bin ... Jeg ser ikke nogen logik i en sådan opdeling.

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 (hver på 1,5 megabyte).

Da operativsystemet voksede og ikke længere kunne være på den første disk (hvor rod-FS var placeret), flyttede de en del til den anden, hvor hjemmemapperne var (derfor blev monteringspunktet kaldt /usr — fra ordet user). De duplikerede alle nødvendige mapper fra OS ( /bin, /sbin, /lib, /tmp ...) og begyndte at lægge filer på den nye disk, fordi der ikke var mere plads på den gamle. Så fik de en tredje disk, de monterede den i mappen /home og flyttede hjemmemapperne for brugerne dertil, så OS kunne tage al den resterende plads på de to diske, hvilket var hele tre megabyte (wow!).

Selvfølgelig måtte de indføre reglen om, at "når operativsystemet starter, skal det kunne montere den anden disk i mappen /usr, så programmer som mount ikke skal placeres på den anden disk i /usr, da vi ville få kylling-og-æg-problemet." Så enkelt var det. Og dette gjaldt Unix V6 for 35 år siden.

Opdelingen af /bin og /usr/bin (og alle lignende mapper) er en følge af disse begivenheder, en implementeringsdetalje fra 70'erne, der stadig i flere årtier er blevet kopieret af bureaukrater. De stillede aldrig spørgsmålet hvorfor, de gjorde bare sådan. Denne opdeling mistede mening længe før Linux blev skabt, af flere grunde:

  1. Ved opstart bruges initrd eller initramfs, der tager sig af problemer som "denne fil er nødvendig før den anden." Så vi har allerede et midlertidigt filsystem, der bruges til at starte alt det andet.
  2. Delte biblioteker (tilføjet til Unix af Berkley-folkene) tillader dig ikke at ændre indholdet i /lib og /usr/lib uafhængigt. Disse to dele skal samsvare med hinanden, ellers vil de ikke fungere. Dette var ikke tilfældet i 1974, da de havde en vis uafhængighed på grund af statisk linking.
  3. Billige hårde diske brød 100 megabyte-barrieren omkring 1990, og omtrent samtidig blev der introduceret programmer til at ændre partitionstørrelser (Partition Magic 3.0 blev lanceret i 1997).

Naturligvis, da der var en opdeling, opfandt nogle mennesker regler, der retfærdiggjorde det. For eksempel, rodpartitionen er nødvendig til forskellige fælles dele af OS, mens dine lokale filer skal ligge i /usr. Eller i / placeres det, som AT&T distribuerer, mens /usr indeholder det, som din distribution, IBM AIX, eller Dec Ultrix, eller SGI Irix har tilføjet, og i /usr/local ligger filer, der er specifikke for dit system. Og så besluttede nogen, at /usr/local ikke var et passende sted at installere ny software, så lad os tilføje /opt! Jeg ville ikke blive overrasket, hvis der også dukkede en /opt/local op...

Selvfølgelig har der i løbet af 30 år som følge af denne opdeling været interessante regler, der er kommet og gået for forskellige distributioner. For eksempel, '/tmp renses ved genstart, mens /usr/tmp ikke gør.' (Og i Ubuntu findes /usr/tmp slet ikke, mens /usr/tmp i Gentoo er et symbolsk link til /var/tmp, som nu følger den regel, og den renses ikke ved genstart. Ja, det hele skete før tmpfs. Og der er også tilfælde, hvor rod-FS kun er tilgængelig til læsning, i hvilket tilfælde der heller ikke skal skrives noget i /usr, men derimod i /var. Eller i / hovedsageligt kan ikke skrives, bortset fra i /etc, som nogle gange er blevet forsøgt flyttet til /var...)

Bureaukrater som Linux Foundation (som absorberede Free Standards Group under deres ekspansion for mange år siden) dokumenterer og komplicerer gladeligt disse regler uden at forsøge at forstå, hvorfor de opstod. De fatter ikke, at Ken og Dennis bare flyttede dele af OS til deres hjemmemappe, fordi RK05-disken på PDP-11 var for lille.

Jeg er praktisk talt sikker på, at busybox blot placerer filer på samme måde, som det historisk set er blevet gjort. Der er ikke nogen reel grund til at fortsætte med det. Personligt laver jeg bare /bin, /sbin og /lib som links til de tilsvarende biblioteker i /usr. Folk, der arbejder med indlejret software, forsøger at forstå og forenkle…

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster