In informatica initrd (initial ramdisk), è un piccolo file system temporaneo che funge da file system root montato in memoria da Linux e da altri sistemi operativi Unix-like nella fase iniziale della loro procedura di avvio (boot). L'initrd è reso accessibile al kernel da un bootloader. È stato introdotto in Linux a partire dalla versione 2.6 del kernel.

Funzionamento

[modifica | modifica wikitesto]

Dato che in un sistema Linux, per poter eseguire il boot, il kernel deve montare il file system root, se si usa un initrd, il kernel carica prima un file initrd e lo monta nella RAM come RAM disk, poi lo utilizza come parte del processo di avvio. Infine all'avvio della macchina procederà al montaggio del file system root.

Infatti la funzione di initrd è quella di fornire al kernel i moduli che potrebbero non essere presenti nel kernel stesso, impedendo a quest'ultimo di riconoscere, e quindi di far funzionare, una determinata periferica. Successivamente il kernel provvederà a montare il filesystem root e a eseguire il programma init, che completerà l'avvio del sistema operativo.

Contenuto

[modifica | modifica wikitesto]

I moduli che devono essere caricati con initrd sono tipicamente:

Formato

[modifica | modifica wikitesto]

Il file initrd può essere l'immagine di un file system, possibilmente compressa con gzip, oppure un file di archivio (tipicamente in formato cpio) che viene espanso dal kernel in un filesystem in ram TMPFS. Quest'ultima soluzione è più flessibile, perché permette di aggiungere file durante la vita del filesystem, ad esempio scaricando dalla rete i componenti necessari di un sistema di installazione.

Motivazione

[modifica | modifica wikitesto]

È possibile far partire un sistema Linux senza usare un initrd, ma questo normalmente richiede la compilazione di un kernel specifico per l'installazione.

Infatti, se non si usa un initrd non si possono caricare moduli del kernel prima di aver montato la partizione radice, e quindi la partizione radice deve poter essere montata utilizzando solo moduli che sono compilati nel kernel. Quindi un kernel generico dovrebbe contenere il supporto necessario a montare qualsiasi tipo di partizione radice, e finirebbe così per contenere moltissimi moduli non necessari.

L'utilizzo di un initrd permette invece alle distribuzioni Linux di fornire un kernel precompilato con tutte le funzionalità realizzate come moduli, e di costruire per ciascuna installazione un initrd contenente i moduli necessari per montare il filesystem radice su quella particolare installazione.

Creazione

[modifica | modifica wikitesto]

Il programma di solito utilizzato per creare il file initrd è mkinitrd. Tuttavia, esistono alcune alternative come Yaird o mkinitfs. Il processo di installazione di una distribuzione normalmente produce automaticamente un initrd adatto alla specifica installazione.

Altri utilizzi

[modifica | modifica wikitesto]

Un initrd di dimensioni adeguate può essere usato anche per svolgere alcune funzioni autonomamente, come:

  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero