Differenza tra bin, sbin, usr/bin, usr/sbin

Il 30 novembre 2010, David Collier ha scritto:

Ho notato che in busybox i collegamenti sono divisi in queste quattro directory.
C'è qualche semplice regola per determinare in quale directory quale dei collegamenti dovrebbe trovarsi ...
Ad esempio, kill è in /bin e killall è in /usr/bin... Non vedo alcuna logica in questa divisione.

Probabilmente sai che Ken Thompson e Dennis Ritchie hanno creato Unix sul PDP-7 nel 1969. Quindi, intorno al 1971, passarono a un PDP-11 con un paio di dischi RK05 (1,5 megabyte ciascuno).

Quando il sistema operativo è cresciuto e non si adattava più al primo disco (su cui si trovava il root FS), hanno spostato una parte nel secondo, dove si trovavano le home directory (quindi, il punto di montaggio è stato chiamato /usr - dalla parola utente). Hanno duplicato lì tutte le directory del sistema operativo necessarie (/bin, /sbin, /lib, /tmp ...) e hanno inserito i file su un nuovo disco, perché quello vecchio aveva esaurito lo spazio. Poi avevano un terzo disco, lo montavano nella directory /home e vi spostavano le home directory degli utenti in modo che il sistema operativo potesse occupare tutto lo spazio rimanente su due dischi, e questi erano fino a tre megabyte (Oh!).

Ovviamente, hanno dovuto stabilire una regola che "quando il sistema operativo si avvia, deve essere in grado di montare un secondo disco in /usr, quindi non inserire programmi come mount sul secondo disco in /usr o avrai un problema dell'uovo e della gallina". È così semplice. E questo era in Unix V6 35 anni fa.

La suddivisione di /bin e /usr/bin (e di tutte le directory simili) è un retaggio di quegli eventi, un dettaglio di implementazione degli anni '70 che è stato copiato dai burocrati ormai da decenni. Non hanno mai fatto la domanda perchél'hanno appena fatto. Questa divisione ha cessato di avere senso anche prima della creazione di Linux, per diversi motivi:

  1. Durante l'avvio, viene utilizzato un initrd o initramfs, che si occupa di problemi come "abbiamo bisogno di questo file prima di quello". Quindi, abbiamo già file system temporaneo che viene utilizzato per caricare tutto il resto.
  2. Le librerie condivise (che sono state aggiunte a Unix dai ragazzi di Berkley) non consentono di modificare i contenuti di /lib e /usr/lib in modo indipendente. Queste due parti devono corrispondere o non funzioneranno. Questo non è accaduto nel 1974 perché allora avevano una certa indipendenza grazie al collegamento statico.
  3. I dischi rigidi economici hanno infranto la barriera dei 100 megabyte intorno al 1990 e più o meno nello stesso periodo è apparso il software di ridimensionamento delle partizioni (partition magic 3.0 è uscito nel 1997).

Naturalmente, poiché c'è una divisione, alcune persone hanno escogitato regole che la giustificano. Ad esempio, la partizione root è necessaria per tutti i tipi di funzionalità generali del sistema operativo e devi inserire i tuoi file locali in / usr. Oppure inserisci / ciò che AT&T distribuisce e in /usr ciò che la tua distribuzione, IBM AIX o Dec Ultrix o SGI Irix ha aggiunto e /usr/local contiene file specifici per il tuo sistema. E poi qualcuno ha deciso che /usr/local non era il posto giusto per installare nuovo software, quindi aggiungiamo /opt! Non sarò sorpreso se appare anche /opt/local ...

Ovviamente, nel corso di 30 anni, a causa di questa separazione, sono venute e se ne sono andate di tutti i tipi di interessanti regole specifiche per la distribuzione. Ad esempio, "/tmp viene cancellato al riavvio, ma /usr/tmp no". (E in Ubuntu non c'è /usr/tmp in linea di principio, e in Gentoo /usr/tmp è un collegamento simbolico a /var/tmp, che ora è soggetto a quella regola, e non viene cancellato al riavvio. Sì, questo era tutto prima Succede anche che root FS sia di sola lettura, quindi non devi nemmeno scrivere nulla su /usr, ma devi scrivere su /var. fondamentalmente non può essere scritto se non in /etc, che a volte si è tentato di spostare in /var ...)

Burocrati come la Linux Foundation (che anni fa ha inghiottito il Free Standards Group durante la sua espansione) sono felici di documentare e complicare queste regole senza mai cercare di capire perché fossero lì. Quello di cui non si rendono conto è che Ken e Dennis hanno appena spostato parte del sistema operativo nella loro home directory perché il disco RK05 sul PDP-11 era troppo piccolo.

Sono abbastanza sicuro che busybox metta i file nello stesso modo in cui si è sviluppato storicamente. Non c'è una vera ragione per farlo fino ad ora. Personalmente, mi limito a collegare /bin, /sbin e /lib a directory simili in /usr. Dopotutto, le persone che lavorano con software embedded cercano di capire e semplificare ...

Fonte: habr.com

Aggiungi un commento