Ero bin, sbin, usr/bin, usr/sbin välillä

30. marraskuuta 2010 David Collier kirjoitti:

Huomasin, että busyboxissa linkit on jaettu näihin neljään hakemistoon.
Onko olemassa jotain yksinkertaista sääntöä sen määrittämiseksi, missä hakemistossa minkä linkin tulisi sijaita?
Esimerkiksi kill on /bin:ssä ja killall /usr/bin... En näe tässä jaossa mitään logiikkaa.

Tiedät varmaan, että Ken Thompson ja Dennis Ritchie loivat Unixin PDP-7:lle vuonna 1969. Joten vuoden 1971 tienoilla he päivittivät PDP-11:een, jossa oli pari RK05-levyä (1,5 megatavua kukin).

Kun käyttöjärjestelmä kasvoi eikä enää mahdu ensimmäiselle levylle (jolla juuri FS sijaitsi), osa siirrettiin toiselle, jossa kotihakemistot sijaitsivat (siksi liitoskohtaa kutsuttiin sanasta /usr käyttäjä). He kopioivat sinne kaikki tarvittavat käyttöjärjestelmähakemistot (/bin, /sbin, /lib, /tmp ...) ja laittoivat tiedostot uudelle levylle, koska vanhasta loppui tila. Sitten heillä oli kolmas levy, he kiinnittivät sen /home-hakemistoon ja siirsivät käyttäjien kotihakemistot sinne, jotta käyttöjärjestelmä voisi viedä kaiken jäljellä olevan tilan kahdelta levyltä, ja nämä olivat kolme megatavua (Vau!).

Tietenkin heidän piti tehdä sääntö, että "kun käyttöjärjestelmä käynnistyy, sen on kyettävä liittämään toinen levy tiedostoon /usr, joten älä laita ohjelmia, kuten mount toiselle levylle /usr-kansioon, tai sinulla on kana ja muna -ongelma." Se on niin yksinkertaista. Ja se oli Unix V6:ssa 35 vuotta sitten.

Tiedostojen /bin ja /usr/bin (ja kaikki tällaiset hakemistot) jakaminen on näiden tapahtumien perintöä, toteutusyksityiskohta 70-luvulta, jota byrokraatit ovat kopioineet jo vuosikymmeniä. He eivät koskaan esittäneet kysymystä miksihe vain tekivät sen. Tämä jako lakkasi toimimasta jo ennen Linuxin luomista useista syistä:

  1. Käynnistyksen aikana käytetään initrd- tai initramfs-tiedostoa, joka hoitaa ongelmia, kuten "tarvitsemme tämän tiedoston ennen sitä". Näin ollen meillä on on jo väliaikainen tiedostojärjestelmä, jota käytetään kaiken muun lataamiseen.
  2. Jaetut kirjastot (jotka Berkleyn kaverit lisäsivät Unixiin) eivät anna sinun muuttaa /lib- ja /usr/lib-tiedostoja itsenäisesti. Näiden kahden osan on vastattava toisiaan, tai ne eivät toimi. Tätä ei tapahtunut vuonna 1974, koska heillä oli silloin jonkin verran itsenäisyyttä staattisen linkityksen vuoksi.
  3. Halvat kiintolevyt rikkoivat 100 megatavun rajan noin vuonna 1990, ja samoihin aikoihin ilmestyi osion koonmuutosohjelmisto (partition magic 3.0 julkaistiin vuonna 1997).

Tietenkin, koska jako on olemassa, jotkut ihmiset ovat keksineet sääntöjä, jotka oikeuttavat sen. Kuten, juuriosio tarvitaan kaikenlaisiin yleisiin käyttöjärjestelmän ominaisuuksiin, ja sinun on asetettava paikalliset tiedostot / usr -kansioon. Tai laita kohtaan / mitä AT&T jakelee ja /usr-kansioon mitä jakelusi, IBM AIX tai Dec Ultrix tai SGI Irix on lisännyt, ja /usr/local sisältää järjestelmäkohtaisia ​​tiedostoja. Ja sitten joku päätti, että /usr/local ei ollut oikea paikka uuden ohjelmiston asentamiseen, joten lisätään /opt! En ihmettele, jos myös /opt/local tulee näkyviin...

Tietysti 30 vuoden aikana tämän erottelun takia kaikenlaisia ​​mielenkiintoisia jakelukohtaisia ​​sääntöjä on tullut ja mennyt. Esimerkiksi "/tmp tyhjennetään uudelleenkäynnistyksen yhteydessä, mutta /usr/tmp ei." (Ja Ubuntussa ei periaatteessa ole /usr/tmp:tä, ja Gentoossa /usr/tmp on symbolinen linkki hakemistoon /var/tmp, joka on nyt tämän säännön alainen, eikä sitä tyhjennetä uudelleenkäynnistyksen yhteydessä. Kyllä, tämä oli kaikki ennen. Tapahtuu myös niin, että juuri FS on vain luku -muotoinen, jolloin sinun ei tarvitse kirjoittaa mitään tiedostoon /usr, mutta sinun on kirjoitettava tiedostoon /var. pohjimmiltaan ei voi kirjoittaa paitsi tiedostoon /etc, jota joskus yritettiin siirtää kansioon /var...)

Byrokraatit, kuten Linux Foundation (joka nielaisi Free Standards Groupin laajentuessaan vuosia sitten) dokumentoivat ja monimutkaistavat mielellään näitä sääntöjä yrittämättä koskaan selvittää, miksi ne olivat olemassa. He eivät ymmärrä, että Ken ja Dennis siirsivät vain osan käyttöjärjestelmästä kotihakemistoonsa, koska PDP-05:n RK11-levy oli liian pieni.

Olen melko varma, että busybox vain laittaa tiedostot samalla tavalla kuin se on historiallisesti kehittynyt. Toistaiseksi siihen ei ole todellista syytä. Henkilökohtaisesti teen vain linkin /bin, /sbin ja /lib vastaaviin hakemistoihin /usr:ssä. Loppujen lopuksi ihmiset, jotka työskentelevät sulautettujen ohjelmistojen kanssa, yrittävät ymmärtää ja yksinkertaistaa ...

Lähde: will.com

Lisää kommentti