Różnica między bin, sbin, usr/bin, usr/sbin

30 listopada 2010 roku David Collier napisał:

Zauważyłem, że w busyboksie linki są podzielone na te cztery katalogi.
Czy jest jakaś prosta zasada określająca, w którym katalogu powinien znajdować się który z linków...
Na przykład kill jest w /bin, a killall w /usr/bin... Nie widzę logiki w tym podziale.

Prawdopodobnie wiesz, że Ken Thompson i Dennis Ritchie stworzyli Uniksa na PDP-7 w 1969 roku. Tak więc około 1971 roku dokonali aktualizacji do PDP-11 z parą dysków RK05 (1,5 megabajta każdy).

Kiedy system operacyjny urósł i nie mieścił się już na pierwszym dysku (na którym znajdował się główny FS), przenieśli część na drugi, gdzie znajdowały się katalogi domowe (dlatego punkt montowania nazwano /usr - od słowa użytkownik). Zduplikowali tam wszystkie niezbędne katalogi systemu operacyjnego (/bin, /sbin, /lib, /tmp ...) i umieścili pliki na nowym dysku, ponieważ na starym zabrakło miejsca. Potem mieli trzeci dysk, zamontowali go w katalogu /home i przenieśli tam katalogi domowe użytkowników, aby system operacyjny mógł zająć całą pozostałą przestrzeń na dwóch dyskach, a te były trzy megabajty (Wow!).

Oczywiście musieli wprowadzić zasadę, że „kiedy system operacyjny się uruchamia, musi być w stanie zamontować drugi dysk w /usr, więc nie umieszczaj programów takich jak mount na drugim dysku w /usr, bo będziesz miał problem z jajkiem i kurą”. To takie proste. I to było w Unix V6 35 lat temu.

Podział /bin i /usr/bin (i wszystkich podobnych katalogów) jest dziedzictwem tych wydarzeń, szczegółem implementacji z lat 70., który od dziesięcioleci jest kopiowany przez biurokratów. Nigdy nie zadali pytania dlaczegopo prostu to zrobili. Podział ten przestał mieć sens jeszcze przed powstaniem Linuksa z kilku powodów:

  1. Podczas uruchamiania używany jest initrd lub initramfs, który rozwiązuje problemy typu „potrzebujemy tego pliku przed tamtym”. Tak więc mamy ma już tymczasowy system plików, który jest używany do ładowania wszystkiego innego.
  2. Biblioteki współdzielone (które zostały dodane do systemu Unix przez ludzi z Berkley) nie pozwalają na niezależną zmianę zawartości /lib i /usr/lib. Te dwie części muszą do siebie pasować, inaczej nie będą działać. Tak się nie stało w 1974 roku, ponieważ mieli wtedy pewną niezależność dzięki statycznemu łączeniu.
  3. Tanie dyski twarde przekroczyły barierę 100 megabajtów około 1990 roku i mniej więcej w tym samym czasie pojawiło się oprogramowanie do zmiany rozmiaru partycji (w 3.0 roku ukazała się Partition Magic 1997).

Oczywiście, skoro istnieje podział, niektórzy wymyślili zasady, które go uzasadniają. Na przykład partycja główna jest potrzebna do wszelkiego rodzaju ogólnych funkcji systemu operacyjnego i musisz umieścić swoje pliki lokalne w /usr. Albo wpisz / co dystrybuuje AT&T, aw /usr co dodała twoja dystrybucja, IBM AIX, Dec Ultrix lub SGI Irix, a /usr/local zawiera pliki specyficzne dla twojego systemu. A potem ktoś zdecydował, że /usr/local nie jest właściwym miejscem do instalowania nowego oprogramowania, więc dodajmy /opt! Nie zdziwię się, jeśli pojawi się też /opt/local…

Oczywiście w ciągu 30 lat, z powodu tej separacji, pojawiały się i znikały wszelkiego rodzaju interesujące zasady specyficzne dla dystrybucji. Na przykład „/tmp jest czyszczony po ponownym uruchomieniu, ale /usr/tmp nie”. (A w Ubuntu w zasadzie nie ma /usr/tmp, aw Gentoo /usr/tmp jest dowiązaniem symbolicznym do /var/tmp, które teraz podlega tej regule i nie jest czyszczone przy ponownym uruchomieniu. Tak, to było wszystko wcześniej Zdarza się również, że główny FS jest tylko do odczytu, a wtedy nie trzeba też nic pisać do /usr, ale trzeba pisać do /var. przeważnie nie może być zapisany z wyjątkiem /etc, który czasami próbowano przenieść do /var ...)

Biurokraci tacy jak Linux Foundation (która wiele lat temu pochłonęła Free Standards Group podczas jej ekspansji) z przyjemnością dokumentują i komplikują te zasady, nawet nie próbując dowiedzieć się, dlaczego tam są. Nie zdają sobie jednak sprawy z tego, że Ken i Dennis właśnie przenieśli część systemu operacyjnego do swojego katalogu domowego, ponieważ dysk RK05 w PDP-11 był za mały.

Jestem prawie pewien, że busybox po prostu umieszcza pliki w taki sam sposób, jak rozwijał się historycznie. Do tej pory nie ma prawdziwego powodu, aby to robić. Osobiście po prostu robię /bin, /sbin i /lib linki do podobnych katalogów w /usr. W końcu ludzie, którzy pracują z oprogramowaniem wbudowanym, starają się zrozumieć i uprościć ...

Źródło: www.habr.com

Dodaj komentarz