2010. november 30-án David Collier ezt írta:
Észrevettem, hogy a busybox hivatkozásai négy mappába vannak rendezve.
Van valami egyszerű szabály, amivel meg lehet határozni, hogy melyik mappában kell lennie a hivatkozásoknak...
Például a kill a /bin-ben, míg a killall a /usr/bin-ben van... Nem látom, hogy lenne logika ebben a felosztásban.
Valószínűleg tudod, hogy Ken Thompson és Dennis Ritchie a Unixot a PDP-7-en készítette el 1969-ben. Kb. 1971-ben pedig frissítettek PDP-11-re néhány RK05 lemezzel (mindegyik 1,5 megabájt).
Amikor az operációs rendszer megnőtt, és már nem fért el az első lemezen (ahol a gyökér fájlrendszer volt), a második lemezre helyezték át a részét, ahol a felhasználói mappák (ezért a csatlakozási pont /usr volt, a "user" szóból). Duplikálták ott az operációs rendszer összes szükséges könyvtárát (/bin, /sbin, /lib, /tmp ...) és fájlokat helyeztek át az új lemezre, mert a régin elfogyott a hely. Később kaptak egy harmadik lemezt, amit a /home mappába csatlakoztattak, és átvittek oda a felhasználói könyvtárakat, hogy az operációs rendszer a maradék helyet is elfoghassa a két lemezen, ami teljesen három megabájt volt (wow!).
Természetesen be kellett vezetniük azt a szabályt, hogy 'amikor az operációs rendszer indul, képesnek kell lennie a második lemezt a /usr mappába csatlakoztatni, ezért ne tegyük a mount programokat a második lemezre a /usr-ba, mert problémát kapunk a tojás és a csirke dilemmával'. Ilyen egyszerű. Ez 35 évvel ezelőtt a Unix V6-ra vonatkozott.
A /bin és /usr/bin (és minden hasonló mappa) közötti felosztás a történtek következménye, egy olyan megvalósítási részlet az 70-es évekből, amit azóta évtizedek óta másoltak a bürokraták. Soha nem tették fel a kérdést, miért, egyszerűen csak csinálták így. Ez a felosztás már jóval a Linux létrejötte előtt elvesztette az értelmét, több okból:
- Indításkor initrd vagy initramfs használatos, ami kezeli az olyan problémákat, mint hogy 'ez a fájl korábban szükséges, mint az a'. Így tehát van egy már létezik átmeneti fájlrendszer, amelyet a többi betöltéséhez használnak.
- A megosztott könyvtárak (amelyeket az Unix Berkeley csapata adott hozzá) nem engedik meg, hogy függetlenül módosítsd a tartalmát a \/lib és a \/usr\/lib könyvtáraknak. Ezeknek a részeknek összhangban kell lenniük egymással, különben nem működnek. Ez 1974-ben nem volt probléma, mivel akkor bizonyos függetlenséggel rendelkeztek a statikus linkelés miatt.
- A olcsó merevlemezek 100 megabájtos határt léptek át valamikor 1990 körül, és körülbelül ebben az időben jelentek meg a partíciók átméretezésére szolgáló programok (a Partition Magic 3.0 1997-ben jelent meg).
Természetesen, mivel van megosztás, néhány ember kitalálta a szabályokat, amelyek azt igazolják. Például a gyökérpartíció szükséges mindenféle közös dologhoz az operációs rendszerben, míg a \/usr-ba kell elhelyezni a saját helyi fájljaidat. Vagy a \/-ba teszik, amit az AT&T terjeszt, a \/usr-ba meg azt, amit a disztribúciód, például az IBM AIX, a Dec Ultrix vagy a SGI Irix tett hozzá, míg a \/usr\/local a rendszeredre jellemző fájlokat tartalmazza. Aztán valaki úgy döntött, hogy a \/usr\/local nem megfelelő hely az új szoftverek telepítésére, így adjunk hozzá egy \/opt!-ot! Nem lepődnék meg, ha még a \/opt\/local is megjelenne...
Természetesen az elmúlt 30 évben a megosztás miatt sok érdekes, egyedi disztribúció-specifikus szabály alakult ki és tűnt el. Például: "a \/tmp törlődik a rendszer újraindításakor, míg a \/usr\/tmp nem." (És az Ubuntu rendszerében a \/usr\/tmp alapból nem létezik, míg a Gentoo-n a \/usr\/tmp egy szimbolikus hivatkozás a \/var\/tmp-ra, amelyre ez a szabály vonatkozik, és nem törlődik újraindításkor. Igen, mindez még a tmpfs előtt történt. Továbbá előfordulhat, hogy a gyökér fájlrendszer csak olvasásra elérhető, és akkor a \/usr-be sem kell írni, hanem a \/var-ba kell írni. Vagy a \/ többnyire nem lehet írni, kivéve a \/etc könyvtárat, amit néha megpróbáltak áthelyezni a \/var-ba...)
A bürokrácia, mint például a Linux Alapítvány (amely évek óta bekebelezte a Free Standards Group-ot) örömmel dokumentálja és bonyolítja ezeket a szabályokat, anélkül, hogy megpróbálnák megérteni, miért jöttek létre. Nem sejtik, hogy Ken és Dennis egyszerűen áttették az operációs rendszer egy részét a saját könyvtárukba, mivel az RK05-ös lemez a PDP-11-hez túl kicsi volt.
Majdnem biztos vagyok benne, hogy a busybox egyszerűen úgy helyezi el a fájlokat, ahogy azt a történelem során kialakult. Nincs valós oka annak, hogy ezt még most is így csinálják. Én személy szerint a /bin, /sbin és /lib könyvtárakat egyszerű hivatkozásként kezelem a /usr megfelelő könyvtáraira. Végül is azok az emberek, akik beágyazott szoftverrel foglalkoznak, próbálnak egyszerűsíteni és megérteni…
Forrás: habr.com
