Il 30 novembre 2010, David Collier scrisse:
Ho notato che in busybox i link sono distribuiti in queste quattro directory.
Esiste una regola semplice per determinare in quale directory dovrebbe trovarsi ciascun link…
Per esempio, kill si trova in /bin, mentre killall è in /usr/bin… Non vedo alcuna logica in questa suddivisione.
Probabilmente sapete che Ken Thompson e Dennis Ritchie crearono Unix su PDP-7 nel 1969. A 1971, quindi, passarono a PDP-11 con un paio di dischi RK05 (da 1,5 megabyte ciascuno).
Quando il sistema operativo crebbe e non riusciva più a stare sul primo disco (dove si trovava il file system root), spostarono parte su un secondo, dove si trovavano le directory home (per questo il punto di montaggio si chiamava /usr — dall'inglese user). Duplica tutto il necessario del sistema operativo ( /bin, /sbin, /lib, /tmp …) e accumulavano file sul nuovo disco, perché il vecchio era pieno. Poi ebbero un terzo disco, lo montarono nella directory /home e spostarono lì le directory home degli utenti, in modo che il sistema operativo potesse utilizzare tutto lo spazio rimanente sui due dischi, che erano ben tre megabyte (wow!).
Naturalmente dovettero stabilire una regola che "quando il sistema operativo si avvia, deve essere in grado di montare il secondo disco nella directory /usr, quindi non bisogna mettere programmi come mount sul secondo disco in /usr, altrimenti avremo un problema di gallina e uovo". È così semplice. E questo si applicava a Unix V6 35 anni fa.
La separazione di /bin e /usr/bin (e di tutte le directory simili) è una conseguenza di quegli eventi, un dettaglio di implementazione degli anni '70 che è stato replicato dai burocrati per decenni. Non hanno mai posto la domanda perché, hanno semplicemente fatto così. Questa separazione ha perso significato ancor prima che Linux fosse creato, per vari motivi:
- Durante l'avvio viene utilizzato initrd o initramfs, che si occupa di problemi come "questo file ci serve prima di quell'altro". Così abbiamo già un file system temporaneo, che viene utilizzato per avviare tutto il resto.
- Le librerie condivise (aggiunte in Unix dai ragazzi di Berkley) non permettono di modificare indipendentemente i contenuti di /lib e /usr/lib. Queste due parti devono corrispondere l'una all'altra, altrimenti non funzioneranno. Questo non accadeva nel 1974, poiché all'epoca avevano una certa indipendenza grazie al collegamento statico.
- I dischi rigidi economici hanno superato il traguardo dei 100 megabyte intorno al 1990 e più o meno nello stesso periodo sono apparse le prime applicazioni per modificare le dimensioni delle partizioni (partition magic 3.0 è stata rilasciata nel 1997).
Naturalmente, poiché esisteva una divisione, alcune persone hanno ideato regole che la giustificano. Del tipo: la partizione radice è necessaria per tutte le cose generali del sistema operativo, mentre /usr dovrebbe contenere i propri file locali. Oppure in / si mettono le cose fornite da AT&T, mentre in /usr ci sono quelle aggiunte dalla tua distribuzione, IBM AIX, o Dec Ultrix, o SGI Irix, mentre in /usr/local si trovano i file specifici per il tuo sistema. E poi qualcuno ha deciso che /usr/local non era il posto giusto per installare nuovi software, quindi aggiungiamo anche /opt! Non mi stupirei se apparisse anche /opt/local...
Naturalmente, in 30 anni, a causa di questa divisione, sono emerse e scomparse varie regole interessanti specifiche per ciascuna distribuzione. Ad esempio, "tmp viene svuotato al riavvio, mentre /usr/tmp no". (E in Ubuntu, /usr/tmp non esiste affatto, mentre in Gentoo, /usr/tmp è un collegamento simbolico a /var/tmp, su cui ora si applica quella regola e non viene svuotato al riavvio. Sì, tutto ciò è accaduto prima di tmpfs. E ci sono anche situazioni in cui il filesystem root è montato solo in sola lettura, quindi non si deve scrivere in /usr, ma in /var. Oppure in / principalmente non è possibile scrivere, salvo che in /etc, che a volte si è tentato di spostare in /var...)
I burocrati come la Linux Foundation (che ha assorbito il Free Standards Group durante l'espansione anni fa) documentano e complicano volentieri queste regole, senza nemmeno cercare di capire perché siano nate. Non si rendono conto che Ken e Dennis hanno semplicemente spostato parte del sistema operativo nelle loro directory home, perché il disco RK05 sul PDP-11 era troppo piccolo.
Sono praticamente certo che busybox posizioni i file esattamente come si è storicamente sviluppato. Non c'è un vero motivo per farlo ancora oggi. Personalmente, faccio semplicemente /bin, /sbin e /lib collegamenti alle directory analoghe in /usr. Dopotutto, le persone che lavorano con il software embedded cercano di capire e semplificare…
Fonte: habr.com
