/
La directory principale, dove tutto inizia
/bin
Contiene binari (programmi) che devono essere presenti per l’avvio e l’esecuzione del sistema.A differenza di / sbin, la directory bin contiene diversi comandi utili che sono utili sia all’amministratore di sistema che agli utenti non privilegiati. Di solito contiene shell come bash, csh, ecc …. e comandi comunemente usati come cp, mv, rm, cat, ls. Per questo motivo e in contrasto con / usr / bin, i binari in questa directory sono considerati essenziali. La ragione di ciò è che contiene programmi di sistema essenziali che devono essere disponibili anche se è montata solo la partizione contenente /. Questa situazione può verificarsi se è necessario riparare altre partizioni ma non si ha accesso alle directory condivise (ad es. Si è in modalità utente singolo e quindi non si ha accesso alla rete). Contiene inoltre programmi da cui dipendono gli script di avvio.
/boot
Contiene il kernel Linux, l’immagine del disco RAM iniziale (per i driver necessari all’avvio) e il caricatore di avvio. I file interessanti includono / boot / grub / grub.conf o menu.lst, che
viene utilizzato per configurare il caricatore di avvio e / boot / vmlinuz (o qualcosa di simile), il kernel Linux. La funzione fondamentale di un boot loader è dunque caricare ed eseguire un kernel di sistema operativo, unitamente ai processi e servizi secondari. Nella maggior parte dei casi, questo richiede di accedere alla memoria di massa, per leggere il kernel di sistema operativo, e potenzialmente altri file. Nei casi più semplici, il boot loader contiene l’indirizzo dei blocchi di disco in cui sono memorizzati i file da caricare, e deve quindi essere aggiornato se questi file vengono modificati. L’accesso al disco spesso avviene attraverso le funzioni fornite dal firmware (il BIOS nei sistemi PC IBM compatibili). Alcuni boot loader posseggono la capacità di interpretare uno o più file system per trovare i file da caricare. In questo caso, possono anche caricare un file di configurazione dal disco, o permettere ad un utente avanzato di esplorare il disco alla ricerca di file da caricare. Alcuni boot loader sono in grado di utilizzare le funzionalità fornite da alcune schede di rete (tipicamente ethernet) per scaricare un kernel dalla rete, tipicamente via TFTP. Ogni sistema operativo installato anzi ogni volume avviabile (esistono infatti anche ambienti di ripristino o simili) ha uno specifico boot loader o, meglio, il file di configurazione di avvio (per Windows 10 si chiama BCD, ad esempio) contiene le istruzioni di avvio specifiche che devono essere lette dal boot loader per ogni volume avviabile. Funzionalità aggiuntive presenti in alcuni boot loader:
-
Molti kernel supportano la possibilità di ricevere parametri di avvio per configurare il loro comportamento; il boot loader si occupa di passarli al kernel, e in alcuni casi permette all’utente di editare questi parametri.
-
Alcuni kernel prevedono che altri file siano resi disponibili al kernel durante il boot (per esempio nei sistemi Unix-like è comune l’uso di initrd, un piccolo file system memorizzato in un file). Il caricamento di questi file viene gestito dal bootloader.
-
Un boot loader può mostrare all’utente un menù di possibili kernel da caricare, con relativi parametri, permettendo all’utente di scegliere quale sistema operativo avviare.
-
Un boot loader può richiedere una password per consentire l’avvio del sistema.
/dev
Questa è una directory speciale che contiene nodi di dispositivo. “Tutto è un file” si applica anche ai dispositivi. Qui è dove il kernel mantiene un elenco di tutti i dispositivi che comprende. La directory / dev contiene i file speciali per tutti i dispositivi. I file del dispositivo vengono creati durante l’installazione e successivamente con lo script / dev / MAKEDEV. /Dev/MAKEDEV.local è uno script scritto dall’amministratore di sistema che crea file o collegamenti ai dispositivi solo locali (ovvero quelli che non fanno parte del MAKEDEV standard, come i file dei dispositivi per alcuni driver di dispositivo non standard). Questo elenco che segue non è affatto esaustivo o dettagliato come potrebbe essere. Molti di questi file di dispositivo dovranno essere compilati nel kernel per l’hardware.
/ Dev / dsp
Processore di segnale digitale. Fondamentalmente questo costituisce l’interfaccia tra il software che produce il suono e la tua scheda audio. È un dispositivo a caratteri sul nodo principale 14 e secondario 3.
/ Dev / fd0
Il primo floppy drive. Se sei abbastanza fortunato da avere diverse unità, queste verranno numerate in sequenza. È un dispositivo a caratteri sul nodo principale 2 e sullo 0 minore.
/ Dev / fb0
Il primo dispositivo framebuffer. Un framebuffer è uno strato di astrazione tra software e hardware grafico. Ciò significa che le applicazioni non devono conoscere il tipo di hardware in uso, ma semplicemente come comunicare con l’API (Application Programming Interface) del driver framebuffer, che è ben definita e standardizzata. Il framebuffer è un dispositivo a caratteri ed è sul nodo principale 29 e sullo 0 minore.
/ Dev / hda
/ dev / hda è l’unità IDE principale sul controller IDE primario. / dev / hdb l’unità slave sul controller primario. / dev / hdc e / dev / hdd sono rispettivamente i dispositivi master e slave sul controller secondario. Ogni disco è diviso in partizioni. Le partizioni 1-4 sono partizioni primarie e le partizioni 5 e successive sono partizioni logiche all’interno di partizioni estese. Pertanto, il file del dispositivo che fa riferimento a ciascuna partizione è composto da più parti. Ad esempio / dev / hdc9 fa riferimento alla partizione 9 (una partizione logica all’interno di un tipo di partizione estesa) sull’unità IDE master sul controller IDE secondario. I numeri di nodo maggiore e minore sono alquanto complessi. Per il primo controller IDE tutte le partizioni sono dispositivi a blocchi sul nodo principale 3. L’unità master hda è su 0 minore e l’unità slave hdb è su 64 minore. Per ogni partizione all’interno dell’unità aggiungere il numero di partizione al numero di nodo secondario minore per la guida. Ad esempio / dev / hdb5 è maggiore 3, minore 69 (64 + 5 = 69). Le unità sull’interfaccia secondaria vengono gestite allo stesso modo, ma con il nodo principale 22.
/ Dev / ht0
La prima unità nastro IDE. Le unità successive sono numerate ht1 ecc. Sono dispositivi a caratteri sul nodo principale 37 e iniziano dal nodo secondario 0 per ht0 1 per ht1 ecc.
/ Dev / js0
Il primo joystick analogico. I joystick successivi sono numerati js1, js2 ecc. I joystick digitali sono chiamati djs0, djs1 e così via. Sono dispositivi a caratteri sul nodo principale 15. I joystick analogici iniziano dal nodo secondario 0 e arrivano fino a 127 (più che sufficienti anche per i giocatori più fanatici). I joystick digitali iniziano dal nodo secondario 128.
/ Dev / lp0
Il primo dispositivo stampante parallelo. Le stampanti successive sono numerate lp1, lp2 ecc. Sono dispositivi a caratteri nella modalità principale 6 e nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / loop0
Il primo dispositivo di loopback. I dispositivi di loopback sono usati per montare filesystem che non si trovano su altri dispositivi a blocchi come i dischi. Ad esempio, se si desidera montare un’immagine CD ROM iso9660 senza masterizzarla su CD, è necessario utilizzare un dispositivo di loopback per farlo. Questo di solito è trasparente per l’utente ed è gestito dal comando mount. Fare riferimento alle pagine del manuale per mount e losetup. I dispositivi di loopback sono dispositivi a blocchi sul nodo principale 7 e con nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / md0
Primo gruppo metadisco. I metadisk sono correlati ai dispositivi RAID (Redundant Array of Independent Disks). Per ulteriori dettagli, consultare il RAID HOWTO più recente presso l’LDP. Questo può essere trovato su http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html. I dispositivi metadisk sono dispositivi a blocchi sul nodo principale 9 con nodi minori che iniziano da 0 e numerati in sequenza.
/ Dev / mixer
Questo fa parte del driver OSS (Open Sound System). Fare riferimento alla documentazione OSS su http://www.opensound.com per maggiori dettagli. È un dispositivo a caratteri sul nodo principale 14, nodo secondario 0.
/ Dev / null
Il cestino della spazzatura. Un buco nero in cui è possibile inviare dati per non vederli mai più. Tutto ciò che viene inviato a / dev / null scomparirà. Ciò può essere utile se, ad esempio, si desidera eseguire un comando ma non si visualizza alcun feedback sul terminale. È un dispositivo a caratteri sul nodo principale 1 e nodo secondario 3.
/ Dev / psaux
La porta del mouse PS / 2. Questo è un dispositivo a caratteri sul nodo principale 10, nodo secondario 1.
/ Dev / pda
Dischi IDE con porta parallela. Questi sono chiamati in modo simile ai dischi sui controller IDE interni (/ dev / hd *). Sono dispositivi a blocchi sul nodo principale 45. Nodi minori
/etc
La directory / etc contiene tutti i file di configurazione del sistema. esso contiene anche una raccolta di script di shell che avviano ciascuno dei servizi di sistema all’avvio. Tutto in questa directory dovrebbe essere testo leggibile. Mentre tutto in / etc è interessante, ecco alcuni preferiti di tutti i tempi: / etc La directory /etc e’ la directory che contiene tutti i file di configurazione di un sistema linux. In realta’ alcuni file di configurazione vengono creati all’interno della directory home di ciascun utente. Cosi’, l’utente tizio ad esempio, avra’ i propri file di configurazione all’interno della directory /home/tizio. Per saper configurare un sistema linux, occorre acquisire il know-how necessario leggendo la documentazione disponibile in abbondanza sia all’interno del sistema stesso che in rete. Ad ogni modo, un buon punto di partenza puo’ essere l’esame della directory /etc. I file contenuti in questa directory non sono visibili, pertanto occorre usare il comando ls con l’opzione -a (ls -a). Molti di questi file terminano con ‘rc’ che significa ‘runtime configuration’, cioe’ piu’ o meno configurazione per l’esecuzione (le parole run e time significano esecuzione/eseguire e tempo, quindi: tempo di esecuzione, o meglio, fase, periodo di esecuzione. Percio’ runtime significa ‘durante l’esecuzione’). Quindi il file aumixrc ad esempio, significa piu’ o meno: ‘configurazione per l’esecuzione del programma aumix’. Molti altri file sono delle directory che a loro volta contengono dei file di configurazione oppure altre directory. Analizzando il contenuto di una directory /etc tipica di una distribuzione Mandrake (N.B.: alcuni file possono variare leggermente da distribuzione a distribuzione) e considerando i file piu’ comuni ecco cosa troveremo (per una descrizione dettagliata dei vari programmi si puo’ usare ‘man’):
/crontab
Un file che definisce quando verranno eseguiti i lavori automatizzati; / etc / fstab, una tabella di dispositivi di archiviazione e i relativi punti di montaggio; e / etc / passwd, un elenco degli account utente A volte sorge la necessita’ di eseguire un comando, uno script o un programma ad intervalli regolari di tempo, un mese, un’ora, un giorno, una settimana o altri. Un meccanismo sempre presente in Linux e’ rappresentato dal demone cron.
Si tratta di un programma che gira in background e, ad intervalli regolari, esegue dei compiti ben precisi. Normalmente non bisogna installarlo in quanto gia’ attivo nel proprio sistem (consideriamo una distribuzione Linux RedHat). Vediamo come funziona.:
Cron viene attivato ogni minuto e legge degli opportuni file di configurazione dove vengono specificate le operazioni da compiere e gli intervalli relativi. Se trova qualcosa da eseguire nel minuto in cui si e’ attivato, allora procede all’operazione. Tutto cio’ che viene scritto sullo standard output, viene inviato via email al proprietario del cron, tipicamente “root”.
Cron non deve essere riavviato per ogni modifica. Ci sono tre modi diversi di specificare operazioni ed intervalli. Primo modo La via piu’ semplice e’ la creazione di uno script (sh, bash, perl o altro) che esegue cio’ che vogliamo. Tale script andra’ inserito in una delle directory seguenti
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
per poter essere eseguito ad intervalli ben definiti (rispettivamente un giorno, un’ora, un mese e una settimana). E’ possibile anche mantenere tutti gli script in una directory standard (ad esempio “/scripts”) e poi creare un soft link ( Manpage of LN (1) , “ln -s”) in una di quelle sopra elencate.
I cron giornalieri, mensili e settimanali di solito vengono eseguiti alle 4:00 (piena notte!).
Secondo modo
Per intervalli di tempo diversi da quelli standard, e’ possibile usare la directory
/etc/cron.d
oppure il file
/etc/crontab
In cron.d possono essere inseriti file con formato particolare (lo stesso di crontab), indicanti operazioni ed intervalli di tempo piccoli anche solo minuto.
Formato: possono essere inseriti in ogni file
-
commenti
-
linee vuote
-
assegnazioni di variabili di ambiente
-
comandi cron (i commenti non sono ammessi sulla stessa linea di un comando cron)
Andiamo con ordine. I commenti sono linee che iniziano con il simbolo “#” e come le linee vuote vengono ignorati.
/home
Nelle configurazioni normali, a ciascun utente viene assegnata una directory in / home.Gli utenti ordinari possono scrivere file solo nelle loro directory home. Questa limitazione protegge il sistema da attività dell’utente errate. Nei sistemi operativi Unix e Unix-like le home directory sono assegnate dall’amministratore di sistema (root), all’atto della creazione degli account per i nuovi utenti. In molti di questi sistemi operativi, il comportamento predefinito dei comandi che aggiungono account al sistema (ad esempio useradd) prevede che la home directory di un utente sia una subdirectory della directory /home e che abbia un nome uguale a quello del nome utente (ad esempio gli utenti alice, bruno e carla avrebbero come home directory rispettivamente /home/alice, /home/bruno e /home/carla). Fa eccezione a questa regola generale l’utente root, la cui home directory può essere la directory radice (“/“) oppure una directory separata da quelle degli altri utenti (ad esempio /root sui sistemi GNU/Linux).
/lib
Contiene i file di libreria condivisa utilizzati dai programmi di sistema principali.
Questi sono simili alle librerie a collegamento dinamico (DLL) in Windows.
Se si rileva che Linux non riesce a trovare una libreria, provare a cercarla con il comando:
-
$ cat /etc/ld.so.conf|xargs -i find {} -name <nomelibreria>\*
ricordandosi eventualmente di cercarla anche in /usr/lib:
-
$ find /usr/lib -name <nomelibreria>\*
Se questi comandi vi sembrano troppo astrusi e vi mettono a disagio è possibile fare la ricerca in ambiente grafico cliccando col mouse sull’icona di “Trova” e simili. A questo punto ci sono tre possibilità:
-
la libreria non c’è e allora bisogna installarla
-
la libreria esiste e allora si dovrà aggiungere una riga in /etc/ld.so.conf con l’indirizzamento completo della libreria e poi far girare il programma ldconfig24
-
la libreria esiste ma Linux non riesce a caricarla; in questo caso (improbabile) la libreria è danneggiata e va sostituita
In realtà ci sarebbe anche la possibilità che la libreria esiste ma non ha esattamente il nome richiesto25; è sconsigliabile creare un collegamento simbolico col nome richiesto perché si rischia di provocare malfunzionamenti dovuti a differenze nelle versioni delle librerie.
Può essere utile anche conoscere il comando per elencare le librerie da cui dipende un determinato programma:
-
# ldd<nomeprogramma>
Esempio:
-
# ldd /usr/sbin/sshd
che visualizza:
-
libwrap.so.0 => /lib/libwrap.so.0 (0x4002c000)
-
libpam.so.0 => /lib/libpam.so.0 (0x40035000)libdl.so.2 => /lib/libdl.so.2 (0x4003d000)
libresolv.so.2 => /lib/libresolv.so.2 (0x40041000)…. etc elencando le librerie usate dal demone del protocollo SSH.