Différence entre bin, sbin, usr/bin, usr/sbin

Le 30 novembre 2010, David Collier a écrit :

J'ai remarqué que dans busybox, les liens sont divisés en ces quatre répertoires.
Existe-t-il une règle simple pour déterminer dans quel répertoire lequel des liens doit se trouver ...
Par exemple, kill est dans /bin, et killall est dans /usr/bin... Je ne vois aucune logique dans cette division.

Vous savez probablement que Ken Thompson et Dennis Ritchie ont créé Unix sur le PDP-7 en 1969. Ainsi, vers 1971, ils sont passés à un PDP-11 avec une paire de disques RK05 (1,5 mégaoctets chacun).

Lorsque le système d'exploitation a grandi et ne tient plus sur le premier disque (sur lequel se trouvait la racine FS), ils ont déplacé une partie vers le second, où se trouvaient les répertoires personnels (par conséquent, le point de montage s'appelait /usr - du mot utilisateur). Ils y ont dupliqué tous les répertoires nécessaires du système d'exploitation (/bin, /sbin, /lib, /tmp ...) et mis les fichiers sur un nouveau disque, car l'ancien manquait d'espace. Ensuite, ils ont eu un troisième disque, ils l'ont monté dans le répertoire / home et y ont déplacé les répertoires personnels des utilisateurs afin que le système d'exploitation puisse prendre tout l'espace restant sur deux disques, et ceux-ci étaient jusqu'à trois mégaoctets (Ouah!).

Bien sûr, ils ont dû établir une règle selon laquelle "lorsque le système d'exploitation démarre, il doit être capable de monter un deuxième disque dans /usr, donc ne mettez pas de programmes comme mount sur le deuxième disque dans /usr ou vous aurez un problème de poule et d'oeuf." C'est si simple. Et c'était dans Unix V6 il y a 35 ans.

La séparation de /bin et /usr/bin (et de tous ces répertoires) est un héritage de ces événements, un détail d'implémentation des années 70 qui a été copié par les bureaucrates depuis des décennies. Ils ne se sont jamais posé la question pourquoiils viennent de le faire. Cette division a cessé d'avoir un sens avant même la création de Linux, pour plusieurs raisons :

  1. Lors du démarrage, un initrd ou un initramfs est utilisé, ce qui prend en charge des problèmes tels que "nous avons besoin de ce fichier avant celui-là". Ainsi, nous avons déjà système de fichiers temporaire utilisé pour charger tout le reste.
  2. Les bibliothèques partagées (qui ont été ajoutées à Unix par les gars de Berkley) ne vous permettent pas de modifier le contenu de /lib et /usr/lib indépendamment. Ces deux parties doivent correspondre ou elles ne fonctionneront pas. Cela ne s'est pas produit en 1974 car ils avaient une certaine indépendance à l'époque en raison de la liaison statique.
  3. Les disques durs bon marché ont franchi la barrière des 100 mégaoctets vers 1990, et à peu près au même moment, un logiciel de redimensionnement de partition est apparu (partition magic 3.0 est sorti en 1997).

Bien sûr, puisqu'il y a une division, certaines personnes ont trouvé des règles qui la justifient. Par exemple, la partition racine est nécessaire pour toutes sortes de fonctionnalités générales du système d'exploitation et vous devez placer vos fichiers locaux dans /usr. Ou mettez / ce que AT&T distribue, et dans /usr ce que votre distribution, IBM AIX, ou Dec Ultrix, ou SGI Irix a ajouté, et /usr/local contient des fichiers spécifiques à votre système. Et puis quelqu'un a décidé que /usr/local n'était pas le bon endroit pour installer un nouveau logiciel, alors ajoutons /opt ! Je ne serai pas surpris si /opt/local apparaît également ...

Bien sûr, au cours de 30 ans, à cause de cette séparation, toutes sortes de règles intéressantes spécifiques à la distribution sont apparues et ont disparu. Par exemple, "/tmp est effacé au redémarrage, mais /usr/tmp ne l'est pas." (Et dans Ubuntu, il n'y a pas de /usr/tmp en principe, et dans Gentoo /usr/tmp est un lien symbolique vers /var/tmp, qui est maintenant soumis à cette règle, et il n'est pas effacé au redémarrage. Oui, cela était tout avant Il arrive aussi que le FS racine soit en lecture seule, et vous n'avez donc pas besoin d'écrire quoi que ce soit dans /usr non plus, mais vous devez écrire dans /var. fondamentalement ne peut pas être écrit sauf dans /etc, qu'on a parfois tenté de déplacer vers /var ...)

Des bureaucrates comme la Linux Foundation (qui a englouti le Free Standards Group lors de son expansion il y a des années) sont heureux de documenter et de compliquer ces règles sans jamais essayer de comprendre pourquoi elles étaient là. Ce qu'ils ne réalisent pas, c'est que Ken et Dennis viennent de déplacer une partie du système d'exploitation vers leur répertoire personnel car le disque RK05 du PDP-11 était trop petit.

Je suis à peu près sûr que busybox place simplement les fichiers de la même manière qu'il s'est développé historiquement. Il n'y a aucune raison réelle de le faire jusqu'à présent. Personnellement, je crée simplement des liens /bin, /sbin et /lib vers des répertoires similaires dans /usr. Après tout, les personnes qui travaillent avec des logiciels embarqués essaient de comprendre et de simplifier ...

Source: habr.com

Ajouter un commentaire