Der Unterschied zwischen bin, sbin, usr/bin, usr/sbin

Am 30. November 2010 schrieb David Collier:

Ich habe bemerkt, dass die Links in busybox auf diese vier Verzeichnisse verteilt sind.
Gibt es eine einfache Regel, um festzustellen, in welchem Verzeichnis welcher Link liegen sollte ...
Zum Beispiel liegt kill in /bin, wÀhrend killall in /usr/bin liegt ... Ich sehe keinen Sinn in dieser Aufteilung.

Sie wissen wahrscheinlich, dass Ken Thompson und Dennis Ritchie 1969 Unix auf dem PDP-7 erstellt haben. Im Jahr 1971 haben sie auf den PDP-11 mit ein paar RK05-Platten (jeweils 1,5 Megabyte) umgestellt.

Als das Betriebssystem gewachsen ist und nicht mehr auf die erste Platte passte (auf der sich das Root-Dateisystem befand), haben sie einen Teil auf die zweite geladen, wo sich die Home-Verzeichnisse befanden (deshalb hieß der EinhĂ€ngepunkt /usr — von user). Sie haben dort alle notwendigen Verzeichnisse des Betriebssystems ( /bin, /sbin, /lib, /tmp ...) dupliziert und Dateien auf die neue Platte gelegt, weil auf der alten der Speicherplatz ausgegangen ist. Dann bekamen sie eine dritte Platte, die sie im Verzeichnis /home einhĂ€ngten und die Home-Verzeichnisse der Benutzer dorthin verschoben, damit das Betriebssystem den gesamten verbleibenden Platz auf den beiden Platten nutzen konnte, und das waren ganz genau drei Megabyte (Wow!).

NatĂŒrlich mussten sie eine Regel einfĂŒhren, dass "wenn das Betriebssystem bootet, es in der Lage sein muss, die zweite Platte im Verzeichnis /usr einzuhĂ€ngen, deshalb sollten Programme wie mount nicht auf die zweite Platte im /usr gelegt werden, sonst haben wir das HĂŒhner-und-Ei-Problem." So einfach ist das. Und das galt fĂŒr Unix V6 vor 35 Jahren.

Die Aufteilung von /bin und /usr/bin (und allen Ă€hnlichen Verzeichnissen) ist eine Folge dieser Ereignisse, ein Implementierungsdetail aus den 70er Jahren, das bis heute, ĂŒber Jahrzehnte hinweg, von BĂŒrokraten kopiert wurde. Sie haben nie die Frage gestellt warum, sie haben einfach so gehandelt. Diese Aufteilung hatte ohnehin keinen Sinn mehr, lange bevor Linux geschaffen wurde, aus mehreren GrĂŒnden:

  1. Beim Booten wird initrd oder initramfs verwendet, das sich um Probleme wie "Diese Datei brauchen wir frĂŒher als jene." kĂŒmmert. So haben wir gibt es bereits ein temporĂ€res Dateisystem, das zum Laden des Restes verwendet wird.
  2. Geteilte Bibliotheken (die von den Berkley-Jungs in Unix hinzugefĂŒgt wurden) erlauben es Ihnen nicht, die Inhalte von /lib und /usr/lib unabhĂ€ngig zu Ă€ndern. Diese beiden Teile mĂŒssen zu einander passen, sonst funktionieren sie nicht. Das war 1974 nicht der Fall, da sie damals eine gewisse UnabhĂ€ngigkeit durch statisches Linking hatten.
  3. GĂŒnstige Festplatten haben um 1990 die 100-Megabyte-Barriere ĂŒberwunden und ungefĂ€hr zur gleichen Zeit erschienen Programme zur GrĂ¶ĂŸenĂ€nderung von Partitionen (Partition Magic 3.0 wurde 1997 veröffentlicht).

NatĂŒrlich, da es eine Trennung gibt, haben einige Leute Regeln entwickelt, die sie rechtfertigen. Zum Beispiel ist die Root-Partition fĂŒr verschiedene allgemeine Dinge des Betriebssystems notwendig, wĂ€hrend in /usr Ihre lokalen Dateien abgelegt werden sollten. Oder in / wird das platziert, was von AT&T verbreitet wird, wĂ€hrend in /usr das kommt, was Ihr Distribution, IBM AIX oder Dec Ultrix, oder SGI Irix hinzugefĂŒgt haben, und in /usr/local liegen dateispezifische Dateien fĂŒr Ihr System. Und dann kam jemand auf die Idee, dass /usr/local kein geeigneter Ort ist, um neue Software zu installieren, also lassen Sie uns noch /opt hinzufĂŒgen! Ich wĂŒrde mich nicht wundern, wenn noch /opt/local hinzukĂ€me...

NatĂŒrlich haben sich in den letzten 30 Jahren aufgrund dieser Trennung viele interessante, distributionsspezifische Regeln entwickelt und wieder verschwunden. Zum Beispiel: „/tmp wird beim Neustart gelöscht, aber /usr/tmp nicht“. (Und in Ubuntu gibt es /usr/tmp ĂŒberhaupt nicht, wĂ€hrend in Gentoo /usr/tmp eine symbolische VerknĂŒpfung zu /var/tmp ist, auf die jetzt jene Regel zutrifft, und sie wird beim Neustart nicht gelöscht. Ja, das alles war noch vor tmpfs. Und es kann auch vorkommen, dass das Root-Dateisystem nur schreibgeschĂŒtzt zugĂ€nglich ist, und dann sollte ebenfalls nichts in /usr geschrieben werden, sondern in /var. Oder in / hauptsĂ€chlich kann man nichts schreiben, abgesehen von /etc, das manchmal in /var verschoben zu werden versucht...)

BĂŒrokraten wie die Linux Foundation (die vor Jahren die Free Standards Group ĂŒbernommen haben) dokumentieren und komplizieren diese Regeln gerne, ohne zu versuchen zu verstehen, warum sie entstanden sind. Sie ahnen nicht, dass Ken und Dennis einfach einen Teil des Betriebssystems in ihr Home-Verzeichnis verschoben haben, weil die RK05-Platte auf dem PDP-11 zu klein war.

Ich bin mir ziemlich sicher, dass busybox Dateien einfach so anordnet, wie es historisch gewachsen ist. Es gibt keinen wirklichen Grund, das bis heute so zu handhaben. Ich persönlich mache einfach /bin, /sbin und /lib zu Links auf die entsprechenden Verzeichnisse in /usr. Menschen, die mit eingebetteter Software arbeiten, versuchen in der Regel, die Dinge zu verstehen und zu vereinfachen


Quelle: habr.com

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster