Difference between revisions of "Mkinitcpio (Italiano)"

From ArchWiki
Jump to: navigation, search
(out of date)
(pagina allineata ma da verificare)
Line 4: Line 4:
 
[[Category:Kernel (Italiano)]]
 
[[Category:Kernel (Italiano)]]
 
[[da:Mkinitcpio]]
 
[[da:Mkinitcpio]]
 +
[[de:Mkinitcpio]]
 
[[en:Mkinitcpio]]
 
[[en:Mkinitcpio]]
 
[[es:Mkinitcpio]]
 
[[es:Mkinitcpio]]
 
[[fr:mkinitcpio]]
 
[[fr:mkinitcpio]]
 +
[[ja:Mkinitcpio]]
 
[[ru:Mkinitcpio]]
 
[[ru:Mkinitcpio]]
 
[[zh-CN:Mkinitcpio]]
 
[[zh-CN:Mkinitcpio]]
Line 20: Line 22:
 
== Introduzione ==  
 
== Introduzione ==  
  
mkinitcpio è uno script bash usato per generare un iniziale ambiente ramdisk. Da [https://projects.archlinux.org/mkinitcpio.git/tree/mkinitcpio.5.txt mkinitcpio man page]:
+
mkinitcpio è uno script bash usato per generare un iniziale ambiente ramdisk. Da [https://projects.archlinux.org/mkinitcpio.git/tree/man/mkinitcpio.8.txt mkinitcpio man page]:
  
 
:''Il ramdisk iniziale è in sostanza un ambiente molto ridotto ("pre-userspace"), che carica vari moduli del kernel e imposta le operazioni preliminari necessarie prima di consegnare il controllo ad init. In questo modo è possibile avere, ad esempio, filesystem criptati e filesystem su software RAID. L'mkinitcpio permette inoltre estensioni con hooks personalizzati, rilevamento automatico in fase di runtime, e molte altre caratteristiche.''
 
:''Il ramdisk iniziale è in sostanza un ambiente molto ridotto ("pre-userspace"), che carica vari moduli del kernel e imposta le operazioni preliminari necessarie prima di consegnare il controllo ad init. In questo modo è possibile avere, ad esempio, filesystem criptati e filesystem su software RAID. L'mkinitcpio permette inoltre estensioni con hooks personalizzati, rilevamento automatico in fase di runtime, e molte altre caratteristiche.''
Line 30: Line 32:
 
Consultare: [http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ /dev/brain0 » Blog Archive » Early Userspace in Arch Linux].
 
Consultare: [http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ /dev/brain0 » Blog Archive » Early Userspace in Arch Linux].
  
mkinitcpio è uno strumento modulare per la costruzione di un'immagine init ramfs cpio, che offre molti vantaggi rispetto ai metodi alternativi, tra cui:
+
mkinitcpio è uno strumento modulare per la costruzione di un'immagine init ramfs CPIO, che offre molti vantaggi rispetto ai metodi alternativi, tra cui:
  
* L'utilizzo di '''busybox''', che fornisce una base minimale e leggera per l'ambiente userspace (prima della versione 0.6, veniva utilizzato [https://www.archlinux.org/news/486/ '''klibc''']).
+
* L'utilizzo di [http://www.busybox.net/ busybox], che fornisce una base minimale e leggera per l'ambiente userspace.
 
* Il supporto per '''[[udev (Italiano)|udev]]''' per il rilevamento automatico dell'hardware in fase di esecuzione, impedendo così il caricamento di moduli non necessari.
 
* Il supporto per '''[[udev (Italiano)|udev]]''' per il rilevamento automatico dell'hardware in fase di esecuzione, impedendo così il caricamento di moduli non necessari.
* Essere un init script espandibile basato su hook; hooks personalizzati possono facilmente venir inclusi nei pacchetti [[pacman (Italiano)|pacman]].
+
* L'utilizzo di script init espandibili basati su hook; che supportano hooks personalizzati che possono essere facilmente inclusi nei pacchetti [[pacman (Italiano)|pacman]].
* Supporto per  '''lvm2''', '''dm-crypt''' per entrambi i volumi legacy e LUKS, '''raid''', '''mdadm''', e '''swsusp''' e '''suspend2''' per la ripresa e l'avvio da dispositivi di archiviazione di massa USB.
+
* Supporto per  '''LVM2''', '''dm-crypt''' per entrambi i volumi legacy e LUKS, '''raid''', '''mdadm''', e '''swsusp''' e '''suspend2''' per la ripresa e l'avvio da dispositivi di archiviazione di massa USB.
 
* La capacità di permettere molte caratteristiche per poter essere configurato dalla riga di comando del kernel, senza la necessità di ricostruire l'immagine.
 
* La capacità di permettere molte caratteristiche per poter essere configurato dalla riga di comando del kernel, senza la necessità di ricostruire l'immagine.
* Supporto per l'inserimento dell'immagine nel kernel, rendendo così l'immagine del kernel autosufficiente.
+
* Supporto per l'inserimento dell'immagine del ramdisk iniziale in un kernel, rendendo così l'immagine del kernel autosufficiente.
  
mkinitcpio è stato sviluppato da '''phrakture''', '''tpowa''' e '''brain0''' con vari aiuti da parte della comunità. Recentemente lo sviluppo è portato avanti da '''falconindy'''.
+
mkinitcpio è stato sviluppato dagli sviluppatori di Arch Linux e da contributi della Comunità. vedere il [https://projects.archlinux.org/mkinitcpio.git/ public Git repository].
  
 
== Installazione ==
 
== Installazione ==
  
Il pacchetto {{Pkg|mkinitcpio}} è disponibile nei [[Official_Repositories (Italiano)|repositories ufficiali]], ed è installato in modo predefinito in quanto incluso nel gruppo '''base'''.
+
Il pacchetto {{Pkg|mkinitcpio}} è disponibile nei [[Official_Repositories (Italiano)|repositories ufficiali]], ed è installato in modo predefinito in quanto incluso nel gruppo {{grp|base}}.
  
Per gli utenti che preferiscono installare l'ultima versione in sviluppo di {{Ic|mkinitcpio}} da Git:
+
Gli utenti avanzati che preferiscono installare l'ultima versione in sviluppo di mkinitcpio da Git:
 
  $ git clone git://projects.archlinux.org/mkinitcpio.git
 
  $ git clone git://projects.archlinux.org/mkinitcpio.git
  
{{Note|È '''fortemente''' consigliabile seguire le mailing list del progetto Arch se si intende utilizzare la versione git di mkinitcpio!}}
+
{{Note|È '''fortemente''' consigliabile seguire le [https://mailman.archlinux.org/mailman/listinfo/arch-projects mailing list del progetto Arch] se si intende utilizzare la versione Git di mkinitcpio!}}
  
 
== Creazione dell'immagine ed attivazione ==
 
== Creazione dell'immagine ed attivazione ==
Line 54: Line 56:
 
Per impostazione predefinita, lo script mkinitcpio genera due immagini dopo l'installazione o l'aggiornamento del kernel: {{ic|/boot/initramfs-linux.img}} e {{ic|/boot/initramfs-linux-fallback.img}}. L'immagine ''fallback'' utilizza lo stesso file di configurazione come l'immagine ''predefinita'', ad eccezione dell' hook '''autodetect''' che è saltato durante la creazione, includendo quindi anche una vasta gamma di moduli. L'hook di rilevazione ('''autodetect''') automatica rileva i moduli necessari e personalizza l'immagine per hardware specifico, riducendo l'initramfs.
 
Per impostazione predefinita, lo script mkinitcpio genera due immagini dopo l'installazione o l'aggiornamento del kernel: {{ic|/boot/initramfs-linux.img}} e {{ic|/boot/initramfs-linux-fallback.img}}. L'immagine ''fallback'' utilizza lo stesso file di configurazione come l'immagine ''predefinita'', ad eccezione dell' hook '''autodetect''' che è saltato durante la creazione, includendo quindi anche una vasta gamma di moduli. L'hook di rilevazione ('''autodetect''') automatica rileva i moduli necessari e personalizza l'immagine per hardware specifico, riducendo l'initramfs.
  
Gli utenti possono creare quante immagini initramfs desiderano, con differenti profili di configurazione. L'immagine desiderata deve essere specificato per il bootloader, spesso nelle sue file di configurazione ({{ic|/boot/grub/menu.lst}} per gli utilizzatori di [[GRUB Legacy (Italiano)|GRUB Legacy]]). Dopo le modifiche apportate al file di configurazione, l'immagine deve essere rigenerata. Per lo stock kernel di Arch Linux, questo si ottiene con il comando:
+
Gli utenti possono creare quante immagini initramfs desiderano, con differenti profili di configurazione. L'immagine desiderata deve essere specificato per il bootloader, spesso nei suoi [[Boot Loader#Configuration files|file di configurazione]]. Dopo le modifiche apportate al file di configurazione, l'immagine deve essere rigenerata. Per lo stock kernel di Arch Linux, {{Pkg|linux}},  questo si ottiene lanciando questo comando con i privilegi di root:
  
 
  # mkinitcpio -p linux
 
  # mkinitcpio -p linux
  
L'opzione {{Ic|-p}} indica un "preset" da utilizzare; la maggior parte dei pacchetti kernel fornisce un mkinitcpio predefinito, che si trova in {{ic|/etc/mkinitcpio.d}} (per esempio {{ic|/etc/mkinitcpio.d/linux.preset}} per {{Ic|linux}}). Un preset è una definizione predefinita di come creare una immagine initramfs invece di specificare il file di configurazione e il file di output ogni volta.
+
L'opzione {{Ic|-p}} indica un ''preset'' da utilizzare; la maggior parte dei pacchetti kernel fornisce un mkinitcpio predefinito, che si trova in {{ic|/etc/mkinitcpio.d}} (per esempio {{ic|/etc/mkinitcpio.d/linux.preset}} per {{Ic|linux}}). Un preset è una definizione predefinita di come creare una immagine initramfs invece di specificare il file di configurazione e il file di output ogni volta.
  
 
{{Attenzione|I file {{ic|preset}} vengono utilizzati per rigenerare automaticamente l'initramfs dopo un aggiornamento del kernel; fare attenzione quando li si modifica.}}
 
{{Attenzione|I file {{ic|preset}} vengono utilizzati per rigenerare automaticamente l'initramfs dopo un aggiornamento del kernel; fare attenzione quando li si modifica.}}
  
Gli utenti possono creare manualmente un'immagine utilizzando una configurazione alternativa del file:
+
Gli utenti possono creare manualmente un'immagine utilizzando una configurazione alternativa del file. Ad esempio, il seguente comando genererà una immagine initramfs secondo le direttive esplicate in {{ic|/etc/mkinitcpio-custom.conf}} e le salverà in {{ic|/boot/linux-custom.img}}.
  
 
  # mkinitcpio -c /etc/mkinitcpio-custom.conf -g /boot/linux-custom.img
 
  # mkinitcpio -c /etc/mkinitcpio-custom.conf -g /boot/linux-custom.img
Line 68: Line 70:
 
Questo genererà l'immagine initramfs per il kernel attualmente in esecuzione per poi salvarli su {{ic|/boot/linux-custom.img}}.  
 
Questo genererà l'immagine initramfs per il kernel attualmente in esecuzione per poi salvarli su {{ic|/boot/linux-custom.img}}.  
  
Per la creazione dell'immagine di un kernel diverso da quello attualmente in esecuzione, aggiungere la versione del kernel alla riga di comando:
+
Per la creazione dell'immagine di un kernel diverso da quello attualmente in esecuzione, aggiungere la versione del kernel alla riga di comando. È possibile visualizzare le versioni del kernel disponibili in {{ic|/usr/lib/modules}}.
  
  # mkinitcpio -g /boot/linux.img -k 3.0.0-ARCH
+
  # mkinitcpio -g /boot/linux.img -k 3.3.0-ARCH
  
 
== Configurazione ==
 
== Configurazione ==
Line 91: Line 93:
 
=== MODULES ===
 
=== MODULES ===
  
La stringa MODULES è usata per specificare i moduli da caricare prima di mandare in esecuzione qualsiasi altra cosa. Per accelerare il processo d'avvio, si può optare di disabilitare l'hook '''udev''' ed elencare i moduli richiesti:
+
La stringa MODULES è usata per specificare i moduli da caricare prima di mandare in esecuzione qualsiasi altra cosa.  
  
MODULES="piix ide_disk reiserfs"
+
I moduli con suffisso {{ic|?}} non restituiranno errori se non trovati. Questo può essere molto utile nel caso si stia compilando un kernel personalizzato che compili i moduli scritti esplicitamente negli HOOKS o nel file di configurazione.
+
[...]
+
+
HOOKS="base autodetect ide filesystems"
+
  
I moduli con suffisso '?' non restituiranno errori se non trovati. Questo può essere molto utile nel caso si stia compilando un kernel personalizzato che compili i moduli scritti esplicitamente negli HOOKS o nel file di configurazione.
+
{{Nota|Nel caso si utilizzi '''reiser4''', questo ''deve'' essere aggiunto alla lista dei moduli. E se ci fosse bisogno di un qualsiasi filesystem durante il processo d'avvio, inesistente durante l'esecuzione di mkinitcpio— come nel caso di una chiave criptata LUKS su un filesystem '''ext2''', ma senza nessun filesystem '''ext2''' montato durante l'esecuzione di mkinitcpio— il modulo di quel filesystem deve essere aggiunto alla lista MODULES. Consultare [[System_Encryption_with_LUKS_for_dm-crypt#Storing_the_Key_File|qui]] per maggiori approfondimenti.}}
  
{{Nota|Nel caso si utilizzi '''reiser4''', questo ''deve'' essere aggiunto alla lista dei moduli. E se ci fosse bisogno di un qualsiasi filesystem durante il processo d'avvio, inesistente durante l'esecuzione di '''mkinitcpio''', come nel caso di una chiave criptata LUKS su un filesystem '''ext2''', ma senza nessun filesystem '''ext2''' montato durante l'esecuzione di '''mkinitcpio''', il modulo di quel filesystem deve essere aggiunto alla lista MODULES. Consultare [[System_Encryption_with_LUKS_for_dm-crypt#Storing_the_Key_File|qui]] per maggiori approfondimenti.}}
 
 
{{Expansion}}
 
{{Box YELLOW|TODO:|Find out which modules fail on modern kernels.}}
 
 
Moduli che non vengono caricati durante il processo d'avvio (stock kernel 2.6.18): {{ic|scsi_transport_sas}}, {{ic|ultrastor}}, {{ic|qlogicfas}}, {{ic|eata}}, {{ic|BusLogic}}, {{ic|pas16}}, {{ic|wd7000}}, {{ic|sym53c416}}, {{ic|g_NCR5380_mmio}}, {{ic|fdomain}}, {{ic|u14-34f}}, {{ic|dtc}}, {{ic|initio}}, {{ic|in2000}}, {{ic|imm}}, {{ic|t128}}, {{ic|aha1542}}, {{ic|aha152x}}, {{ic|atp870u}}, {{ic|g_NCR5380}}, {{ic|NCR53c406a}}, {{ic|qlogicfas408}}, {{ic|megaraid_mm}}, {{ic|advansys}}.
 
 
Se qualcuno dei moduli sopra è richiesto per il dispositivo di root, aggiungerlo specificatamente in {{ic|/etc/mkinitcpio.conf}} per evitare eventuali kernel panic.
 
  
 
=== BINARIES e FILES ===
 
=== BINARIES e FILES ===
  
Queste opzioni consentono all'utente di aggiungere dei file all'immagine. Sia i {{ic|BINARIES}} che i{{ic|FILES}} vengono aggiunti prima che gli hook siano eseguiti, e possono essere usati per sovrascrivere i file usati o forniti dagli hook. I BINARIES vengono auto-localizzati in quanto devono essere salvati in un {{ic|PATH}} standard e sono ''analizzatori di dipendenze'', quindi ogni libreria e dipendenza richieste saranno aggiunte di conseguenza. I FILES saranno aggiunti ''come stanno''. Per esempio:
+
Queste opzioni consentono all'utente di aggiungere dei file all'immagine. Sia i {{ic|BINARIES}} che i {{ic|FILES}} vengono aggiunti prima che gli hook siano eseguiti, e possono essere usati per sovrascrivere i file usati o forniti dagli hook. I BINARIES vengono auto-localizzati in quanto devono essere salvati in un {{ic|PATH}} standard e sono ''analizzatori di dipendenze'', quindi ogni libreria e dipendenza richieste saranno aggiunte di conseguenza. I FILES saranno aggiunti ''come stanno''. Per esempio:
  
 
  FILES="/etc/modprobe.d/modprobe.conf"
 
  FILES="/etc/modprobe.d/modprobe.conf"
Line 118: Line 108:
 
  BINARIES="kexec"
 
  BINARIES="kexec"
  
 +
In entrambi i casi, per {{ic|BINARIES}} e {{ic|FILES}}, più voci possono essere aggiunte delimitati da spazi.
  
 
=== HOOKS ===
 
=== HOOKS ===
  
Hook è uno script che mette in esecuzione l'initial ramdisk. Gli hooks sono contenuti nella cartella {{ic|/lib/initcpio/install}}; per una lista di hooks, dare il comando:
+
La sezione relativa agli {{ic|HOOKS}}, è l'impostazione più importante del file. Gli Hookd sono piccoli script che descrivono ciò che verrà aggiunto all'immagine. Per alcuni hooks, essi dovranno anche contenere una componente di runtime che fornisce un comportamento aggiuntivo, come ad esempio avviare un demone, o l'assemblaggio di un dispositivo a blocchi accatastati. Gli Hooks sono indicati con il loro nome, ed eseguiti nell'ordine in cui sono presenti nella sezione {{ic|HOOKS}} impostata nel file di configurazione.
 +
 
 +
L'impostazione predefinita degli {{ic|HOOKS}} dovrebbe essere sufficiente per la maggior parte delle semplici configurazioni di dischi singoli. Per i dispositivi di root che sono accatastati o dispositivi multi-block come [[LVM]], [[Software_RAID_and_LVM|mdadm]], o [[LUKS]], vedere le rispettive pagine wiki per l'ulteriore configurazione necessaria.
 +
 
 +
==== Build hooks ====
 +
 
 +
I Build hooks sono contenuti nella cartella {{ic|/lib/initcpio/install}}. Questi file sono forniti dalla shell bash durante l'esecuzione di mkinitcpio e devono contenere due funzioni : {{ic|build}} ed {{ic|help}}. La funzione {{ic|build}} descrive i moduli, file e binari che saranno aggiunti all'immagine. Un'API, documentata da mkinitcpio(8), serve a facilitare l'aggiunta di questi elementi. La funzione {{ic|help}} emette una descrizione di ciò che l'hook compie.
 +
 
 +
Per una lista di hooks, dare il comando:
  
  $ ls -1 /lib/initcpio/install
+
  $ mkinitcpio -L
  
Usare l'opzione di mkinitcpio {{Ic|-H}} per ottenere maggiori informazioni riguardo qualche hook specifico. Ad esempio, per informazioni circa l'hook '''base''':
+
Usare l'opzione di mkinitcpio {{Ic|-H}} per ottenere maggiori informazioni riguardo qualche hook specifico. Ad esempio:
  
  $ mkinitcpio -H base
+
  $ mkinitcpio -H udev
  
Gli hooks sono elencati in ordine di esecuzione, e vengono usati per aggiungere file o moduli all'immagine. Quindi gli hooks possono influire sull' ''installazione'' (quando mkinitcpio viene eseguito per generare l'immagine e/o durante il ''tempo di esecuzione'') per mezzo di uno script annesso che viene avviato durante l'avvio. Gli script possono essere trovati nella cartella {{ic|/lib/initcpio/hooks}}.
+
==== Runtime hooks ====
  
La configurazione predefinita funzionerà per la maggior parte degli utenti con le impostazioni standard:  
+
I Runtime hooks sono contenuti nella cartella {{{ic|/usr/lib/initcpio/hooks}}. Ad ogni hook runtime dovrebbe sempre corrispondere un build hook con lo stesso nome, il quale richiama {{{ic|add_runscript}} per aggiungere l'hook di runtime all'immagine. Questi file sono forniti dalla shell bash durante la prima parte del caricamento userspace.
 +
Con l'eccezione dell'hook di pulitura, essi saranno sempre eseguiti nell'ordine elencato nella sezione {{ic|HOOKS}}. I runtime hook può contenere diverse funzioni:
  
HOOKS="base udev autodetect pata scsi sata filesystems"
+
{{ic|run_earlyhook}}: Le funzioni con questo nome verranno eseguiti una volta che le API dei filesystem sono stati montati e la linea di comando del kernel è stato analizzato. Generalmente utilizzato dai demoni addizionali, come udev, che sono necessari per il processo di avvio iniziale
  
Se si userà l'immagine su più sistemi con hardware diverso, rimuovere l'hook '''autodetect''', dato che ottimizza l'immagine sulla macchina dove viene generato:
+
{{ic|run_hook}}: Le funzioni con questo nome vengono eseguiti poco dopo i primi hooks. Questa è degli hook più comune, e le operazioni come l'assemblaggio di dispositivi a blocchi impilati dovrebbe aver luogo qui.
  
HOOKS="base udev pata scsi sata filesystems"
+
{{ic|run_latehook}}: Le funzioni con questo nome vengono eseguiti dopo che il dispositivo di root è stato montato. Questo dovrebbe essere usato, con parsimonia, per le impostazioni del dispositivo di root, o per il montaggio di altri filesystem, come ad esempio {{ic|/usr}}.
  
Per il supporto a volumi criptati su gruppi LVM2:
+
{{ic|run_latehook}}: Le funzioni con questo nome vengono eseguiti il più tardi possibile, ed in ordine inverso di come sono elencati nel nella sezione {{ic|HOOKS}} nel file di configurazione. Questi hook devono essere utilizzati per le operazioni di pulitura dell'ultimo minuto, come l'arresto e tutti i demoni inizializzati un Hook avviato precedentemente.
  
HOOKS="base udev autodetect pata scsi sata lvm2 encrypt filesystems"
+
==== Hook comuni ====
  
Segue una tabella degli hooks più comuni e relative caratteristiche. Notare che questa tabella non è completa, poiché i pacchetti possono fornire hooks personalizzati.  
+
Segue una tabella degli hooks più comuni e di come influenzano la creazione di immagini e tempo di esecuzione.  
  
 
{| border="1"  
 
{| border="1"  
|+ '''Hooks più comuni'''
+
|+ '''Hooks attuali'''
 
|-
 
|-
 
! Hook || Installazione || Tempo di esecuzione
 
! Hook || Installazione || Tempo di esecuzione
Line 156: Line 156:
 
| '''autodetect''' || Riduce l'initramfs mediante autorilevamento dei moduli necessari. Verificare che i moduli inclusi siano tutti presenti e corretti. Questo hook deve essere avviato prima degli altri hook di sottosistema, per sfruttare completamente l'autorilevamento. Ogni hook specificato prima di "autodetect" sarà installato totalmente.  || --
 
| '''autodetect''' || Riduce l'initramfs mediante autorilevamento dei moduli necessari. Verificare che i moduli inclusi siano tutti presenti e corretti. Questo hook deve essere avviato prima degli altri hook di sottosistema, per sfruttare completamente l'autorilevamento. Ogni hook specificato prima di "autodetect" sarà installato totalmente.  || --
 
|-
 
|-
| '''pata''' || Aggiunge i nuovi moduli IDE libata/PATA all'immagine. Usarlo se il dispositivo di root è su un disco IDE. Usare anche '''autodetect''' per eventualmente ridurre la dimensione dell'immagine.  || --
+
| '''modconf''' || -- || Carica i file di configurazione di modprobe da {{ic|/etc/modprobe.d}} e {{ic|/usr/lib/modprobe.d}}
 
|-
 
|-
| '''sata''' || Aggiunge i moduli Serial ATA all'immagine. Usarlo se il dispositivo di root è su un disco SATA. Usare anche '''autodetect''' per eventualmente ridurre la dimensione dell'immagine. || --
+
| '''block''' || Aggiunge tutti i moduli dei dispositivi a blocchi, precedentemente forniti separatamente da '''fw''', '''mmc''', '''pata''', '''sata''', '''scsi''' , '''usb''' and '''virtio''' hooks. || --
 
|-
 
|-
| '''scsi''' || Aggiunge i moduli SCSI all'immagine. Usarlo se il dispositivo di root è su un disco SCSI. Usare anche '''autodetect''' per eventualmente ridurre la dimensione dell'immagine. || --
+
| '''pcmcia''' || Aggiunge i moduli necessari per i dispositivi PCMCIA. È necessario disporre anche di {{Pkg|pcmciautils}} per avvalersene. || --
 
|-
 
|-
| '''usb''' || Aggiunge i moduli USB all'immagine. Usarlo se il dispositivo di root è su un dispositivo di archiviazione USB o se tale USB deve disporre di altri tipi di accesso (montato, controllato, ecc.) in fase di avvio.  || --
+
| '''net''' || Aggiunge i moduli necessari per dispositivi di rete. Per dispositivi PCMCIA aggiungere anche l'hook pcmcia. || Fornisce la gestione di una root basata sulfilesystem NFS.
 
|-
 
|-
| '''usbinput''' || Aggiunge i moduli US HID all'immagine. Usarlo se si dispone di una tastiera USB e se ne ha bisogno durante la prima fase di userspace (sia per immettere passphrase criptate che per modalità sicura). || --
+
| '''dmraid''' ||Provvede al supporto per fakeRAID del device root. È necessario aver installato {{pkg|dmraid}} per poter usare questo hooks || Locates and assembles fakeRAID block devices using {{ic|mdassemble}}.
 
|-
 
|-
| '''fw''' || Aggiunge i moduli FireWire all'immagine. Usarlo se il dispositivo di root è su un dispositivo di archiviazione FW. || --
+
| '''mdadm''' || Fornisce il supporto per il montaggio di sistemi RAID da {{ic|/etc/mdadm.conf}}, o delrilevamento automatico durante l'avvio . È necessario disporre di {{Pkg|mdadm}} installato per avvalersene. L'hook '''mdadm_udev''' è preferibile rispetto a questo. || Individua e assembla i dispositivi a blocchi del software RAID che utilizzano {{ic|mdassemble}}.
 
|-
 
|-
| '''net''' || Aggiunge i moduli necessari per dispositivi di rete. Per dispositivi PCMCIA aggiungere anche l'hook pcmcia. || --Carica i moduli network. Ci sarà bisogno dell'hook '''udev''' a meno che si specifichino i moduli manualmente (vedere la sezione MODULES sotto).  Vedere [[#Personalizzazione del runtime]] per supporto alla configurazione.
+
| '''mdadm_udev''' || Fornisce il supporto per il montaggio di sistemi RAID utilizzando udev. È necessario disporre di {{Pkg|mdadm}} installato per avvalersene. || Individua e assembla i dispositivi a blocchi del software RAID che utilizzano {{ic|udev}} e l'assemblaggio incrementale {{ic|mdadm}}. Questo è il metodo preferito per l'assemblaggio utilizzando mdadm (anziché usare il l'hook mdadm elencato sopra).
 
|-
 
|-
| '''pcmcia''' || Aggiunge i moduli necessari per i dispositivi PCMCIA. È necessario disporre anche di {{Pkg|pcmciautils}} per avvalersene. || --
+
| '''keyboard''' || Aggiunge i moduli necessari per i dispositivi della tastiera. Utilizzare questa opzione se si dispone di una tastiera USB ed è necessario che sia funzionante nei primi istanti del caricamento userspace (sia per l'immissione di passphrase di crittografia o per l'uso in una shell interattiva). Come effetto collaterale, alcuni moduli per dispositivi di input diversi dalle tastiere potrebbero essere aggiunti, ma questo non dovrebbe essere un problema. || --
 
|-
 
|-
| '''[[DSDT|dsdt]]''' || Carica un file DSDT ACPI personalizzato in fase d'avvio. Aggiungere il file DSDT in {{ic|/lib/initcpio/custom.dsdt}} || Il file personalizzato DSDT è automaticamente usato dal kernel se è presente in initramfs.
+
| '''keymap''' || Aggiunge keymap e consolefonts da {{ic|/etc/vconsole.conf}}. || Carica il keymap specificato ed il consolefont da {{ic|/etc/vconsole.conf}} durante l'avvio in userspace.
 
|-
 
|-
| '''filesystems''' || Include i moduli di filesystem necessari nell'immArch supplies default configuration files inArch supplies default configuration files inagine. Questo hook è '''richiesto''', a meno che non si specifichino i moduli di filesystem in MODULES. || --
+
| '''encrypt''' || Aggiunge il modulo del kernel {{ic|dm_crypt}} ed il tool {{ic|cryptsetup}} all'immagine. È necessario disporre di {{Pkg|cryptsetup}} installato per avvalersene. || Rileva e sblocca una partizione di root cifrata. Vedere [[#Personalizzazione del runtime]] per supporto alla configurazione.
 
|-
 
|-
 
| '''lvm2''' || Aggiunge il modulo device mapper kernel, e il tool {{Ic|lvm}} all'immagine. Sarà inoltre necessario avere installato il pacchetto {{Pkg|lvm2}}. || Abilita tutti i gruppi di voluni LVM2. È necessario se il filesystem di root è su LVM.  
 
| '''lvm2''' || Aggiunge il modulo device mapper kernel, e il tool {{Ic|lvm}} all'immagine. Sarà inoltre necessario avere installato il pacchetto {{Pkg|lvm2}}. || Abilita tutti i gruppi di voluni LVM2. È necessario se il filesystem di root è su LVM.  
 
|-
 
|-
| '''dmraid''' ||Provvede al supporto per fakeRAID del device root. È necessario aver installato {{pkg|dmraid}} per poter usare questo hooks || Locates and assembles fakeRAID block devices using {{ic|mdassemble}}.  
+
| '''fsck''' || Aggiunge i binari di fsck e degli helpers per il filesystem specifico. Se aggiunto dopo l'hook '''autodetect''' verrà aggiunto solo l'helper per il filesystem di root. Usare questo hook è '''fortemente''' consigliato, ed è richiesto con un partizione {{ic|/usr}} separata. || Lancia fsck sul device "root" (e /usr se separata) prima del mount.
 
|-
 
|-
| '''mdadm''' || Questo hook sostituisce l'hook '''raid'''. Supporta la disposizione del montaggio dal file {{ic|/etc/mdadm.conf}}, o l'autorilevamento durante il boot. || Carica i moduli necessari per il software per dispositivi raid, e monta i dispositivi raid quando eseguiti. Vedere [[#Personalizzazione del runtime]] per supporto alla configurazione.
+
| '''resume''' || -- || Tenta di eseguire il ripristino (resume) dallo stato di "sospensione". Funziona in aggiunta a ''swsusp'' e ''[[suspend2]]''. Consultare [[#Personalizzazione del runtime]] per supporto alla configurazione.
 
|-
 
|-
| '''madadm_udev''' ||Fornisce supporto per l'assemblaggio degli array tramite udev. || È fondamentale avere {{pkg|mdadm}} installato.
+
| '''filesystems''' || Include i moduli di filesystem necessari nell'immagine. Questo hook è '''richiesto''', a meno che non si specifichino i moduli di filesystem in MODULES. || --
|-
+
| '''encrypt''' || Aggiunge il modulo del kernel '''dm-crypt''' e il {{Ic|cryptsetup}} tool all'immagine. Sarà inoltre necessario avere installato il pacchetto {{Pkg|cryptsetup}}. || Rileva e sblocca una partizione root criptata. Vedere [[#Personalizzazione del runtime]] per supporto alla configurazione.
+
|-
+
| '''resume''' || -- || Tenta di eseguire il ripristino (resume) dallo stato di "sospensione". Funziona in aggiunta a ''swsusp'' e ''[[suspend2]]''. Consultare [[#Personalizzazione del runtime]] per supporto alla configurazione.
+
 
|-
 
|-
| '''keymap''' || Aggiunge keymap e consolefonts da [[rc.conf (Italiano)|rc.conf]]. || Carica i keymap e consolefont specificati da {{ic|rc.conf}} durante la prima fase di userspace.
+
| '''shutdown''' || Aggiunge il supporto allo spegnimento a initramfs. Usare questo hook è altamente raccomandato sei si dispone di una partizione {{ic|/usr}} separata o di una partizione di root croptata. || Smonta e smonta i dispositivi allo spegnimento.
 
|-
 
|-
| '''fsck''' || Aggiunge i binari di fsck e degli helpers per il filesystem specifico. Se aggiunto dopo l'hook '''autodetect''' verrà aggiunto solo l'helper per il filesystem di root. Usare questo hook è '''fortemente''' consigliato. || Lancia fsck sul device "root" (e /usr se separata) prima del mount.
+
| '''usr''' || Aggiunge il supporto per {{ic|/usr}} su una partizione separata. || Monta la partizione {{ic|/usr}} dopo che la reale partizione di root è stata montata.
 
|-
 
|-
| '''shutdown''' || Aggiunge il supporto allo spegnimento a initramfs. Se si ha una /usr separata questo hook è '''fondamentale''' || Copia initramfs su /run/initramfs per riusarlo allo spegnimento.
+
| '''timestamp''' || Aggiunge il binario {{ic|systemd-timestamp}} all'immagine. Fornisce il supporto RD_TIMESTAMP al caricamento in userspace. RD_TIMESTAMP può essere letto ad esempio da {{ic|systemd-analyze}} per determinare il tempo di avvio. || --
 
|}
 
|}
  
==== Creare un hook personalizzato ====
+
==== Hooks deprecati ====
  
Un hook initcpio non è altro che uno script di shell contenente le informazioni necessarie a puntare mkinitcpio con gli eseguibili che devono essere caricati e le relative opzioni. Può essere utile in alcune rare occasioni in cui cbisogno di qualcosa nello userspace iniziale o finale, e non viene fornito da altri script già installati.
+
Dalla versione 0.13.0 di {{Pkg|mkinitcpio}}, l'hook {{ic|usbinput}} è stato deprecato in favore dell'hook {{ic|keyboard}}.
  
Innanzitutto creare lo script vero e proprio:
+
Dalla versione 0.12.0 di {{Pkg|mkinitcpio}}, i seguenti hook sono stati deprecati, ed è necessario sostituirli con una singola istanza dell'hook {{ic|block}}.
  
{{hc|/lib/initcpio/install/'''hook'''|<nowiki>
+
*{{ic|fw}}
#!/bin/bash
+
*{{ic|mmc}}
+
*{{ic|pata}}
build() {
+
*{{ic|sata}}
    SCRIPT="hook" #the name of the hook
+
*{{ic|scsi}}
    add_binary /bin/bash  #/bin/bash is given as an example, you can type your desired executable here
+
*{{ic|usb}}
}
+
*{{ic|virtio}}
+
help() {
+
    cat <<HELPEOF
+
    Line used as help information #Typing mkinitcpio -H hook will display this information
+
HELPEOF
+
}
+
</nowiki>}}
+
 
+
Creare poi l'hook:
+
{{hc|/lib/initcpio/hooks/'''hook'''|<nowiki>
+
run_hook ()
+
{
+
    msg -n ":: This is an example hook"
+
    bash #your executable example
+
    msg "done."
+
}
+
</nowiki>}}
+
 
+
{{Note|Non è necessario e neanche consigliabile, rendere eseguibile alcuno di questi script.}}
+
  
Editare quindi {{ic|/etc/mkinitcpio.conf}} al fine di includere il proprio hook. È anche possibile includerlo in {{ic|/etc/rc.sysinit}} per caricarlo nello userspace finale.
+
Per ulteriori informazioni , è possibile rivedere il Git commit https://projects.archlinux.org/mkinitcpio.git/commit/?id=97368c0e78f3a4fe4d62f7aedde88d4be13bfdba 97368c0e78] o consultare la [https://mailman.archlinux.org/pipermail/arch-projects/2012-November/003426.html arch-projects mailing list].
i
+
  
 
=== COMPRESSION ===
 
=== COMPRESSION ===
Line 240: Line 216:
 
  COMPRESSION="xz"        # richiede kernel 2.6.38
 
  COMPRESSION="xz"        # richiede kernel 2.6.38
  
La mancata specifica del parametro {{ic|COMPRESSION}} comporterà un file initramfs  compresso in gzip. Per creare un'immagine non compressa, specificare {{ic|<nowiki>COMPRESSION=cat</nowiki>}} nella configurazione o utilizzare {{ic|-z cat}} dalla riga di comando.
+
La mancata specifica del parametro {{ic|COMPRESSION}} comporterà un file initramfs  compresso in gzip. Per creare un'immagine non compressa, specificare {{ic|1=COMPRESSION=cat}} nella configurazione o utilizzare {{ic|-z cat}} dalla riga di comando.
 +
 
 +
Assicuratevi di avere la corretta utility di compressione file  installata per il metodo che si desidera utilizzare .
  
 
=== OPZIONI DI COMPRESSIONE ===
 
=== OPZIONI DI COMPRESSIONE ===
Line 252: Line 230:
 
== Personalizzazione del runtime ==
 
== Personalizzazione del runtime ==
  
Le opzioni di configurazione del runtime possono essere inviate a {{Ic|init}} e ad alcuni hooks per mezzo della riga di comando del kernel. I parametri della riga di comando del kernel sono spesso forniti dal bootloader. Per esempio, una tipica voce [[GRUB Legacy (Italiano)|GRUB Legacy]] di Arch Linux:
+
Le opzioni di configurazione del runtime possono essere inviate a {{Ic|init}} e ad alcuni hooks per mezzo della riga di comando del kernel. I parametri della riga di comando del kernel sono spesso forniti dal bootloader. Le opzioni specificate sotto possono essere apportate alla linea di comando del kernel per alterare il comportamento predefinito. Consultare [[Kernel parameters]] e [[Arch Boot Process (Italiano)|Arch Boot Process]] per ulteriori informazioni.
 
+
{{hc|/boot/grub/menu.lst
+
|2=<nowiki>
+
...
+
 
+
# (0) Arch Linux
+
title  Arch Linux  [/boot/vmlinuz-linux]
+
root  (hd0,0)
+
kernel /vmlinuz-linux root=/dev/sda3 ro
+
initrd /initramfs-linux.img
+
 
+
...
+
</nowiki>}}
+
 
+
In questo caso, {{Ic|<nowiki>root=/dev/sda3</nowiki>}} e {{Ic|ro}} sono parametri della riga di comando del kernel. Le opzioni specificate sotto possono essere apportate alla linea di comando del kernel per alterare il comportamento predefinito. Consultare [[Arch Boot Process (Italiano)|Arch Boot Process]] per ulteriori informazioni.
+
  
 
=== init ===
 
=== init ===
  
{{Nota|Le opzioni seguenti alterano il comportamento predefinito di {{Ic|init}} nell'ambiente initramfs. Vedere {{ic|/lib/initcpio/init}} per maggiori informazioni.}}
+
{{Nota|Le opzioni seguenti alterano il comportamento predefinito di {{Ic|init}} nell'ambiente initramfs. Vedere {{ic|/usr/initcpio/init}} per maggiori informazioni.}}
 
; {{ic|root}}: Questo è il parametro più importante da specificare al kernel. Determina quale device deve essere montato come root. mkinitcpio è flessibile e permette diverse sintassi. Per esempio
 
; {{ic|root}}: Questo è il parametro più importante da specificare al kernel. Determina quale device deve essere montato come root. mkinitcpio è flessibile e permette diverse sintassi. Per esempio
 
  root=/dev/sda1                                                # /dev node
 
  root=/dev/sda1                                                # /dev node
Line 286: Line 249:
 
; {{Ic|earlymodules}}: Altera l'ordine in cui moduli vengono caricati, specificando quali moduli devono essere caricati prima {{Ic|<nowiki>earlymodules=mod1{,mod2,...}</nowiki>}}. (Questo potrebbe essere usato, per esempio, per assicurare l'ordine corretto delle interfacce di rete multiple).
 
; {{Ic|earlymodules}}: Altera l'ordine in cui moduli vengono caricati, specificando quali moduli devono essere caricati prima {{Ic|<nowiki>earlymodules=mod1{,mod2,...}</nowiki>}}. (Questo potrebbe essere usato, per esempio, per assicurare l'ordine corretto delle interfacce di rete multiple).
  
; {{Ic|rootdelay}}: Fare una pausa di dieci secondi prima di montare il sistema root apponendo il {{Ic|rootdelay}}. (Questo potrebbe essere usato, per esempio, per l'avvio di un disco rigido USB che è lento in fase di avvio).
+
; {{Ic|rootdelay&#61;N}}: Fare una pausa di {{ic|N}} secondi prima di montare il sistema root apponendo il {{Ic|rootdelay}}. (Questo potrebbe essere usato, per esempio, per l'avvio di un disco rigido USB che è lento in fase di avvio).
 +
 
 +
Si veda anche: [[Boot_Debugging|Debugging with GRUB and init]]
  
 
=== Usare RAID ===
 
=== Usare RAID ===
  
Per prima cosa aggiungere l'hook {{Ic|mdadm}} alla lista {{Ic|HOOKS}}, e poi ogni altro modulo raid richiesto alla lista MODULES in {{ic|/etc/mkinitcpio.conf}}.
+
Per prima cosa aggiungere l'hook {{Ic|mdadm}} alla lista {{Ic|HOOKS}}, e poi ogni altro modulo raid richiesto (raid456, ext4) alla lista MODULES in {{ic|/etc/mkinitcpio.conf}}.
  
 
'''Kernel Parameters: ''' Usando l'hook {{Ic|mdadm}}, non sarà più necessario configurare la stringa RAID nei parametri [[GRUB Legacy (Italiano)|GRUB Legacy]]. L'hook {{Ic|mdadm}} userà il file {{ic|/etc/mdadm.conf}}, o automaticamente rileverà gli array durante la fase iniziale di boot.
 
'''Kernel Parameters: ''' Usando l'hook {{Ic|mdadm}}, non sarà più necessario configurare la stringa RAID nei parametri [[GRUB Legacy (Italiano)|GRUB Legacy]]. L'hook {{Ic|mdadm}} userà il file {{ic|/etc/mdadm.conf}}, o automaticamente rileverà gli array durante la fase iniziale di boot.
Line 297: Line 262:
  
 
=== Usare la rete ===
 
=== Usare la rete ===
 +
 +
{{attenzione|NFSv4 non è ancora supportato}}
  
 
'''Pacchetti richiesti:'''
 
'''Pacchetti richiesti:'''
Line 306: Line 273:
 
'''ip='''  
 
'''ip='''  
  
La specificazione di un'interfaccia può essere sia in formato corto, che è solo il nome di un'interfaccia ("eth0" o altro), che in formato allungato. Il formato allungato può essere costituito fino da sette elementi, separati da due punti:
+
La specificazione di un'interfaccia può essere sia in formato corto, che è solo il nome di un'interfaccia ("eth0" o altro), che in formato allungato.( [https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt Kernel Documentation] ) Il formato allungato può essere costituito fino a sette elementi, separati da due punti:
 
    
 
    
 
   ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
 
   ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
Line 354: Line 321:
 
   ip=192.168.1.1:::::eth2:none --> Permettere l'interfaccia statica eth2.
 
   ip=192.168.1.1:::::eth2:none --> Permettere l'interfaccia statica eth2.
 
   ip=:::::eth0:dhcp --> Permettere il protocollo dhcp per la configurazione eth0.
 
   ip=:::::eth0:dhcp --> Permettere il protocollo dhcp per la configurazione eth0.
 +
 +
'''BOOTIF='''
 +
 +
Se si dispone di più schede di rete, questo parametro può includere l'indirizzo MAC dell'interfaccia che si sta avviando. Questo è spesso utile in quanto la numerazione dell'interfaccia può cambiare, o insieme con le opzioni pxelinux IPAPPEND 2 o IPAPPEND 3.
 +
 +
Se non indicato, sarà utilizzato eth0.
 +
 +
''Example:''
 +
  BOOTIF=01-A1-B2-C3-D4-E5-F6  # Note the prepended "01-" and capital letters.
 +
  
 
'''nfsroot='''
 
'''nfsroot='''
Line 389: Line 366:
 
'''root=/dev/nfs'''
 
'''root=/dev/nfs'''
  
Se non si utilizzano parametri {{Ic|nfsroot<nowiki>=</nowiki>}} bisognerà configurare {{Ic|root<nowiki>=</nowiki>/dev/nfs}} per avviare un nfs da root per l'autoconfigurazione.
+
Se non si utilizzano parametri {{Ic|nfsroot<nowiki>=</nowiki>}} bisognerà configurare {{Ic|root<nowiki>=</nowiki>/dev/nfs}} per avviare un nfs da root per l'auto-configurazione.
  
=== Usare lvm ===
+
=== Usare LVM ===
  
Se il dispositivo di root è su lvm, bisognerà aggiungere l'hook '''lvm2''', e passare il dispositivo di root sulla riga di comando del kernel nel formato
+
Se il dispositivo di root è su LVM, bisognerà aggiungere l'hook '''lvm2''', e passare il dispositivo di root sulla riga di comando del kernel nel seguente formato
  
 
  root=/dev/mapper/<volume group name>-<logical volume name>
 
  root=/dev/mapper/<volume group name>-<logical volume name>
  
per esempio
+
per esempio :
  
 
  root=/dev/mapper/myvg-root
 
  root=/dev/mapper/myvg-root
  
=== Usare root criptato ===
+
Inoltre, se il vostro dispositivo di root viene inizializzato lentamente (ad esempio su un dispositivo USB) e/o si riceve un errore durante l'avvio del tipo : "volume group not found", allora potrebbe essere necessario aggiungere la seguente riga di comando per il kernel :
  
Se il volume di root è codificato, si deve aggiungere l'hook {{Ic|encrypt}}. Poi specificare il dispositivo di root sulla riga di comando del kernel, come se fosse non codificato.
+
lvmwait=/dev/mapper/<volume group name><logical volume name>
  
Per una partizione criptata su un disco SATA o SCSI:  
+
per esempio :
root=/dev/sda5
+
  
Per un volume LVM criptato:
+
  lvmwait=/dev/mapper/myvg-root
root=/dev/mapper/myvg-root
+
  
Il dispositivo di root sarà automaticamente cambiato a {{ic|/dev/mapper/root}}.
+
In questo modo il processo di avvio attende che LVM riesca a rendere il dispositivo disponibile .
  
==== Usare volumi LUKS ====
+
=== Usare root criptato ===
  
Se si usa LUKS per la crittografia del disco rigido, lo script {{Ic|init}} rileverà la codifica automaticamente, qualora fosse abilitato l'hook {{Ic|encrypt}}. Verrà poi richiesta una password o passphrase per sbloccare il volume.
+
Se il volume di root è codificato, si deve aggiungere l'hook {{Ic|encrypt}}.
  
In caso di errori provare ad aggiungere il modulo del filesystem all'elenco dei moduli in {{ic|/etc/mkinitcpio.conf}} se non compilato all'interno del kernel.
+
Per una partizione criptata utilizzare qualcosa simile a questo:
 +
 +
root=/dev/mapper/root cryptdevice=/dev/sda5:root
  
==== Usare un file chiave ====
+
In questo esempioi, {{ic|/dev/sda5}} è il device crittografato, e diamo un nome arbitrario di {{ic|root}}, il che significa che il nostro dispositivo di root, una volta sbloccato, è montato come {{ic|/dev/mapper/root}}. Al boot, verrà richiesto per la passphrase per sbloccarlo. Si veda [[LUKS#Configuration_of_initcpio]] Per ulteriori dettagli sull'utilizzo di una root criptata.
 
+
Si può usare un "key-file" per codificare il filesystem di root. Usare il formato seguente:
+
cryptkey=device:fs-type:path
+
 
+
{{Ic|device}} è il file-device che rappresenta quale dispositivo è codificato dalla chiave (per esempio {{ic|/dev/sda1}}), {{Ic|fs-type}} è il tipo di filesystem del dispositivo (per esempio ext3) e {{Ic|path}} è il percorso al keyfile all'interno del file system del dispositivo.
+
 
+
==== Usare volumi {{Ic|cryptsetup}} legacy ====
+
 
+
Nel caso di utilizzo di legacy {{Ic|cryptsetup}} volume, si devono specificare tutte le opzioni {{Ic|cryptsetup}} necessarie per sbloccare il volume dalla riga di comando. Il formato delle opzioni è:
+
 
+
crypto=hash:cipher:keysize:offset:skip
+
 
+
che equivalgono alle opzioni {{Ic|--hash}}, {{Ic|--cipher}}, {{Ic|--keysize}}, {{Ic|--offset}}, and {{Ic|--skip}} di {{Ic|cryptsetup}}. In caso di omissione di qualche opzione, verranno usati i valori predefiniti di {{Ic|cryptsetup}}, quindi si può anche specificare solo
+
 
+
crypto=::::
+
 
+
Se è stato creato il volume con le impostazioni predefinite.
+
 
+
{{Nota|Per ragioni tecniche, non è possibile verificare la correttezza della passphrase con volumi {{Ic|cryptsetup}} legacy. Se scritto erroneamente, il montaggio semplicemente non avverrà. È reccomandabile piuttosto, fare uso di LUKS.}}
+
 
+
==== Usare volumi {{Ic|loop-aes}} ====
+
 
+
{{Ic|mkinitcpio}} non supporta ancora {{Ic|loop-aes}}.
+
  
 
=== /usr su una partizione separata ===
 
=== /usr su una partizione separata ===
Se durante l'installazione di Arch Linux si è scelto di montare /usr su una partizione separate, è necessario tenere conto di questo due cose:
 
  
* Aggiungere l'hook {{ic|shutdown}}. Allo spegnimento, initscript permetterà a /usr (e root) di essere adeguatamente smontata.
+
Se durante l'installazione di Arch Linux si è scelto di montare {{ic|/usr}} su una partizione separate, è necessario rispettare i seguenti requisiti:
* Aggiungere l'hook {{ic|fsck}}. Raccomandato a tutti, fondamentale se si vuole un ''fsck'' al boot sulla partizione /usr. Senza questo hook, rc.sysinit farà partire ''fsck'' con /usr montata e di conseguenza fallirà.
+
  
Anche senza questi due HOOKS il sistema funzionerà correttamente (/usr montata e smontata correttamente) ma un setup del genere non è supportato.
+
* Aggiungere l'hook {{ic|shutdown}}. Il processo di spegnimento salverà una copia dell'initramfs e permetterà a {{ic|/usr}} (e root) di essere adeguatamente smontata.
 +
* Aggiungere l'hook {{ic|fsck}}, contrassegnare {{ic|/usr}} con un {{ic|passno}} di valore {{ic|0}} in {{ic|/etc/fstab}}. Mentre è consigliato per tutti, è obbligatorio se si desidera che la partizione {{ic|/usr}} sia controllata al boot. Senza questo hook, {{ic|/usr}} non verrà mai controllata.
 +
* Aggiungere l'hook {{ic|usr}}. Questo monterà la partizione {{ic|/usr}} dopo che root è montato. Prima della versione 0.9.0, il montaggio di {{ic|/usr}} sarebbe avvenuto automaticamente nella root reale se fosse stato trovato in {{ic|/etc/fstab}}.
  
 
== Risoluzione dei problemi ==
 
== Risoluzione dei problemi ==
Line 458: Line 412:
 
Se si è curiosi e si vuole scoprire cosa c'è dentro l'immagine initrd, la si può estrarre, per dare un'occhiata ai file all'interno.
 
Se si è curiosi e si vuole scoprire cosa c'è dentro l'immagine initrd, la si può estrarre, per dare un'occhiata ai file all'interno.
  
L'immagine initrd è un archivio SVR4 CPIO, generato dai comandi {{Ic|find}} e {{Ic|bsdcpio}} e compressa con uno dei 3 formati di compressione compatibili con il kernel, chiamati '''gzip''', '''bzip2''', '''lzma''', '''lzo''' o '''xz'''.
+
L'immagine initrd è un archivio SVR4 CPIO, generato dai comandi {{Ic|find}} e {{Ic|bsdcpio}}, opzionalmente compresso con uno schema di compressione compreso dal kernel. Per ulteriori informazioni sugli schemi di compressione , vedere [[#COMPRESSION]].
  
 
Mkinitcpio include uno strumento chiamato {{ic|lsinitcpio}} che elenca ed estrae i contenuti dell'immagine initramfs.
 
Mkinitcpio include uno strumento chiamato {{ic|lsinitcpio}} che elenca ed estrae i contenuti dell'immagine initramfs.
Line 470: Line 424:
 
È anche possibile avere una lista più human-friendly delle più importanti parti dell'immagine:
 
È anche possibile avere una lista più human-friendly delle più importanti parti dell'immagine:
 
  $lsinitcpio -a /boot/initramfs-linux.imq
 
  $lsinitcpio -a /boot/initramfs-linux.imq
 +
 +
== Altre Fonti ==
 +
 +
* [[Boot Debugging]] - Debugging with GRUB
  
 
== Riferimenti esterni ==
 
== Riferimenti esterni ==

Revision as of 19:28, 23 May 2013

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Questa pagina è in fase di revisione e potrebbe non essere aggiornata. Seguite per ora le istruzioni della versione inglese. (Discuss in Talk:ArchWiki Translation Team (Italiano)#Pagine Marcate come "out of date" e "Traslateme")
Template:Article summary start

Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end

mkinitcpio è un generatore initramfs di ultima generazione initramfs.

Introduzione

mkinitcpio è uno script bash usato per generare un iniziale ambiente ramdisk. Da mkinitcpio man page:

Il ramdisk iniziale è in sostanza un ambiente molto ridotto ("pre-userspace"), che carica vari moduli del kernel e imposta le operazioni preliminari necessarie prima di consegnare il controllo ad init. In questo modo è possibile avere, ad esempio, filesystem criptati e filesystem su software RAID. L'mkinitcpio permette inoltre estensioni con hooks personalizzati, rilevamento automatico in fase di runtime, e molte altre caratteristiche.

Tradizionalmente, il kernel è il responsabile del rilevamento dell'hardware e dei compiti di inizializzazione nelle prime fasi del boot process, prima di montare il filesystem root e passare il controllo a init. Tuttavia, con il progredire della tecnologia, queste attività sono diventate sempre più complesse.

Al giorno d'ggi, il filesystem root può essere installato su una vasta gamma di hardware, da SCSI a SATA a USB, monitorato da una serie di controller di unità di produttori diversi. Inoltre, il filesystem root può essere compresso o criptato, all'interno di un software RAID o di un gruppo di volumi logici. Il modo più semplice per gestire questa serie di complessità, è passare la gestione all'ambiente userspace: il ramdisk iniziale.

Consultare: /dev/brain0 » Blog Archive » Early Userspace in Arch Linux.

mkinitcpio è uno strumento modulare per la costruzione di un'immagine init ramfs CPIO, che offre molti vantaggi rispetto ai metodi alternativi, tra cui:

  • L'utilizzo di busybox, che fornisce una base minimale e leggera per l'ambiente userspace.
  • Il supporto per udev per il rilevamento automatico dell'hardware in fase di esecuzione, impedendo così il caricamento di moduli non necessari.
  • L'utilizzo di script init espandibili basati su hook; che supportano hooks personalizzati che possono essere facilmente inclusi nei pacchetti pacman.
  • Supporto per LVM2, dm-crypt per entrambi i volumi legacy e LUKS, raid, mdadm, e swsusp e suspend2 per la ripresa e l'avvio da dispositivi di archiviazione di massa USB.
  • La capacità di permettere molte caratteristiche per poter essere configurato dalla riga di comando del kernel, senza la necessità di ricostruire l'immagine.
  • Supporto per l'inserimento dell'immagine del ramdisk iniziale in un kernel, rendendo così l'immagine del kernel autosufficiente.

mkinitcpio è stato sviluppato dagli sviluppatori di Arch Linux e da contributi della Comunità. vedere il public Git repository.

Installazione

Il pacchetto mkinitcpio è disponibile nei repositories ufficiali, ed è installato in modo predefinito in quanto incluso nel gruppo base.

Gli utenti avanzati che preferiscono installare l'ultima versione in sviluppo di mkinitcpio da Git:

$ git clone git://projects.archlinux.org/mkinitcpio.git
Note: È fortemente consigliabile seguire le mailing list del progetto Arch se si intende utilizzare la versione Git di mkinitcpio!

Creazione dell'immagine ed attivazione

Per impostazione predefinita, lo script mkinitcpio genera due immagini dopo l'installazione o l'aggiornamento del kernel: /boot/initramfs-linux.img e /boot/initramfs-linux-fallback.img. L'immagine fallback utilizza lo stesso file di configurazione come l'immagine predefinita, ad eccezione dell' hook autodetect che è saltato durante la creazione, includendo quindi anche una vasta gamma di moduli. L'hook di rilevazione (autodetect) automatica rileva i moduli necessari e personalizza l'immagine per hardware specifico, riducendo l'initramfs.

Gli utenti possono creare quante immagini initramfs desiderano, con differenti profili di configurazione. L'immagine desiderata deve essere specificato per il bootloader, spesso nei suoi file di configurazione. Dopo le modifiche apportate al file di configurazione, l'immagine deve essere rigenerata. Per lo stock kernel di Arch Linux, linux, questo si ottiene lanciando questo comando con i privilegi di root:

# mkinitcpio -p linux

L'opzione -p indica un preset da utilizzare; la maggior parte dei pacchetti kernel fornisce un mkinitcpio predefinito, che si trova in /etc/mkinitcpio.d (per esempio /etc/mkinitcpio.d/linux.preset per linux). Un preset è una definizione predefinita di come creare una immagine initramfs invece di specificare il file di configurazione e il file di output ogni volta.

Attenzione: I file preset vengono utilizzati per rigenerare automaticamente l'initramfs dopo un aggiornamento del kernel; fare attenzione quando li si modifica.

Gli utenti possono creare manualmente un'immagine utilizzando una configurazione alternativa del file. Ad esempio, il seguente comando genererà una immagine initramfs secondo le direttive esplicate in /etc/mkinitcpio-custom.conf e le salverà in /boot/linux-custom.img.

# mkinitcpio -c /etc/mkinitcpio-custom.conf -g /boot/linux-custom.img

Questo genererà l'immagine initramfs per il kernel attualmente in esecuzione per poi salvarli su /boot/linux-custom.img.

Per la creazione dell'immagine di un kernel diverso da quello attualmente in esecuzione, aggiungere la versione del kernel alla riga di comando. È possibile visualizzare le versioni del kernel disponibili in /usr/lib/modules.

# mkinitcpio -g /boot/linux.img -k 3.3.0-ARCH

Configurazione

Il file di configurazione principale di mkinitcpio è /etc/mkinitcpio.conf. Inoltre, le definizioni di preset sono fornite dai pacchetti del kernel nella cartella /etc/mkinitcpio.d (per esempio /etc/mkinitcpio.d/linux.preset).

Attenzione: lvm2, raid, mdadm, e encrypt NON sono abilitati di default. Si prega di leggere attentamente questa sezione per le istruzioni, se questi hooks sono richiesti.
Nota: Gli utenti con più controller hardware del disco che utilizzano i nomi dei nodi stessi, ma moduli del kernel diversi (ad esempio, due SCSI / SATA o due controller IDE) devono assicurarsi che il corretto ordine dei moduli sia specificato in /etc/mkinitcpio.conf. In caso contrario, la posizione della partizione root può variare negli avvii, con conseguente kernel panic. Un'alternativa più elegante è quella di utilizzare nomi di dispositivo non variabili persistent block device naming, per garantire che vengano sempre correttamente montati.

Gli utenti possono modificare cinque variabili all'interno del file di configurazione:

MODULES
Moduli del kernel da caricare prima che gli hooks vengono eseguiti all'avvio.
BINARIES
Binari supplementari da includere nell'immagine initramfs.
FILES
File aggiuntivi da inserire nell'immagine initramfs.
HOOKS
Gli hooks sono script che vengono eseguiti nel ramdisk iniziale.
COMPRESSION
Utilizzato per comprimere l'immagine initramfs.
COMPRESSION_OPTIONS
Opzioni da riga di comando da passare al programma COMPRESSION.

MODULES

La stringa MODULES è usata per specificare i moduli da caricare prima di mandare in esecuzione qualsiasi altra cosa.

I moduli con suffisso ? non restituiranno errori se non trovati. Questo può essere molto utile nel caso si stia compilando un kernel personalizzato che compili i moduli scritti esplicitamente negli HOOKS o nel file di configurazione.

Nota: Nel caso si utilizzi reiser4, questo deve essere aggiunto alla lista dei moduli. E se ci fosse bisogno di un qualsiasi filesystem durante il processo d'avvio, inesistente durante l'esecuzione di mkinitcpio— come nel caso di una chiave criptata LUKS su un filesystem ext2, ma senza nessun filesystem ext2 montato durante l'esecuzione di mkinitcpio— il modulo di quel filesystem deve essere aggiunto alla lista MODULES. Consultare qui per maggiori approfondimenti.


BINARIES e FILES

Queste opzioni consentono all'utente di aggiungere dei file all'immagine. Sia i BINARIES che i FILES vengono aggiunti prima che gli hook siano eseguiti, e possono essere usati per sovrascrivere i file usati o forniti dagli hook. I BINARIES vengono auto-localizzati in quanto devono essere salvati in un PATH standard e sono analizzatori di dipendenze, quindi ogni libreria e dipendenza richieste saranno aggiunte di conseguenza. I FILES saranno aggiunti come stanno. Per esempio:

FILES="/etc/modprobe.d/modprobe.conf"
BINARIES="kexec"

In entrambi i casi, per BINARIES e FILES, più voci possono essere aggiunte delimitati da spazi.

HOOKS

La sezione relativa agli HOOKS, è l'impostazione più importante del file. Gli Hookd sono piccoli script che descrivono ciò che verrà aggiunto all'immagine. Per alcuni hooks, essi dovranno anche contenere una componente di runtime che fornisce un comportamento aggiuntivo, come ad esempio avviare un demone, o l'assemblaggio di un dispositivo a blocchi accatastati. Gli Hooks sono indicati con il loro nome, ed eseguiti nell'ordine in cui sono presenti nella sezione HOOKS impostata nel file di configurazione.

L'impostazione predefinita degli HOOKS dovrebbe essere sufficiente per la maggior parte delle semplici configurazioni di dischi singoli. Per i dispositivi di root che sono accatastati o dispositivi multi-block come LVM, mdadm, o LUKS, vedere le rispettive pagine wiki per l'ulteriore configurazione necessaria.

Build hooks

I Build hooks sono contenuti nella cartella /lib/initcpio/install. Questi file sono forniti dalla shell bash durante l'esecuzione di mkinitcpio e devono contenere due funzioni : build ed help. La funzione build descrive i moduli, file e binari che saranno aggiunti all'immagine. Un'API, documentata da mkinitcpio(8), serve a facilitare l'aggiunta di questi elementi. La funzione help emette una descrizione di ciò che l'hook compie.

Per una lista di hooks, dare il comando:

$ mkinitcpio -L

Usare l'opzione di mkinitcpio -H per ottenere maggiori informazioni riguardo qualche hook specifico. Ad esempio:

$ mkinitcpio -H udev

Runtime hooks

I Runtime hooks sono contenuti nella cartella {/usr/lib/initcpio/hooks. Ad ogni hook runtime dovrebbe sempre corrispondere un build hook con lo stesso nome, il quale richiama {add_runscript per aggiungere l'hook di runtime all'immagine. Questi file sono forniti dalla shell bash durante la prima parte del caricamento userspace. Con l'eccezione dell'hook di pulitura, essi saranno sempre eseguiti nell'ordine elencato nella sezione HOOKS. I runtime hook può contenere diverse funzioni:

run_earlyhook: Le funzioni con questo nome verranno eseguiti una volta che le API dei filesystem sono stati montati e la linea di comando del kernel è stato analizzato. Generalmente utilizzato dai demoni addizionali, come udev, che sono necessari per il processo di avvio iniziale

run_hook: Le funzioni con questo nome vengono eseguiti poco dopo i primi hooks. Questa è degli hook più comune, e le operazioni come l'assemblaggio di dispositivi a blocchi impilati dovrebbe aver luogo qui.

run_latehook: Le funzioni con questo nome vengono eseguiti dopo che il dispositivo di root è stato montato. Questo dovrebbe essere usato, con parsimonia, per le impostazioni del dispositivo di root, o per il montaggio di altri filesystem, come ad esempio /usr.

run_latehook: Le funzioni con questo nome vengono eseguiti il più tardi possibile, ed in ordine inverso di come sono elencati nel nella sezione HOOKS nel file di configurazione. Questi hook devono essere utilizzati per le operazioni di pulitura dell'ultimo minuto, come l'arresto e tutti i demoni inizializzati un Hook avviato precedentemente.

Hook comuni

Segue una tabella degli hooks più comuni e di come influenzano la creazione di immagini e tempo di esecuzione.

Hooks attuali
Hook Installazione Tempo di esecuzione
base Imposta tutte le cartelle d'avvio ed installa le utilità di base e le librerie. Aggiungere sempre questo hook a meno che non si sappia esattamente cosa si sta facendo. --
udev Aggiunge all'immagine udev, udevadm e le regole di udev. Udev sarà usato per creare il nodo del dispositivo di root e rilevare i moduli necessari per il dispositivo di root. Poiché semplifica le cose, usare udev è raccomandabile.
autodetect Riduce l'initramfs mediante autorilevamento dei moduli necessari. Verificare che i moduli inclusi siano tutti presenti e corretti. Questo hook deve essere avviato prima degli altri hook di sottosistema, per sfruttare completamente l'autorilevamento. Ogni hook specificato prima di "autodetect" sarà installato totalmente. --
modconf -- Carica i file di configurazione di modprobe da /etc/modprobe.d e /usr/lib/modprobe.d
block Aggiunge tutti i moduli dei dispositivi a blocchi, precedentemente forniti separatamente da fw, mmc, pata, sata, scsi , usb and virtio hooks. --
pcmcia Aggiunge i moduli necessari per i dispositivi PCMCIA. È necessario disporre anche di pcmciautils per avvalersene. --
net Aggiunge i moduli necessari per dispositivi di rete. Per dispositivi PCMCIA aggiungere anche l'hook pcmcia. Fornisce la gestione di una root basata sulfilesystem NFS.
dmraid Provvede al supporto per fakeRAID del device root. È necessario aver installato dmraid per poter usare questo hooks Locates and assembles fakeRAID block devices using mdassemble.
mdadm Fornisce il supporto per il montaggio di sistemi RAID da /etc/mdadm.conf, o delrilevamento automatico durante l'avvio . È necessario disporre di mdadm installato per avvalersene. L'hook mdadm_udev è preferibile rispetto a questo. Individua e assembla i dispositivi a blocchi del software RAID che utilizzano mdassemble.
mdadm_udev Fornisce il supporto per il montaggio di sistemi RAID utilizzando udev. È necessario disporre di mdadm installato per avvalersene. Individua e assembla i dispositivi a blocchi del software RAID che utilizzano udev e l'assemblaggio incrementale mdadm. Questo è il metodo preferito per l'assemblaggio utilizzando mdadm (anziché usare il l'hook mdadm elencato sopra).
keyboard Aggiunge i moduli necessari per i dispositivi della tastiera. Utilizzare questa opzione se si dispone di una tastiera USB ed è necessario che sia funzionante nei primi istanti del caricamento userspace (sia per l'immissione di passphrase di crittografia o per l'uso in una shell interattiva). Come effetto collaterale, alcuni moduli per dispositivi di input diversi dalle tastiere potrebbero essere aggiunti, ma questo non dovrebbe essere un problema. --
keymap Aggiunge keymap e consolefonts da /etc/vconsole.conf. Carica il keymap specificato ed il consolefont da /etc/vconsole.conf durante l'avvio in userspace.
encrypt Aggiunge il modulo del kernel dm_crypt ed il tool cryptsetup all'immagine. È necessario disporre di cryptsetup installato per avvalersene. Rileva e sblocca una partizione di root cifrata. Vedere #Personalizzazione del runtime per supporto alla configurazione.
lvm2 Aggiunge il modulo device mapper kernel, e il tool lvm all'immagine. Sarà inoltre necessario avere installato il pacchetto lvm2. Abilita tutti i gruppi di voluni LVM2. È necessario se il filesystem di root è su LVM.
fsck Aggiunge i binari di fsck e degli helpers per il filesystem specifico. Se aggiunto dopo l'hook autodetect verrà aggiunto solo l'helper per il filesystem di root. Usare questo hook è fortemente consigliato, ed è richiesto con un partizione /usr separata. Lancia fsck sul device "root" (e /usr se separata) prima del mount.
resume -- Tenta di eseguire il ripristino (resume) dallo stato di "sospensione". Funziona in aggiunta a swsusp e suspend2. Consultare #Personalizzazione del runtime per supporto alla configurazione.
filesystems Include i moduli di filesystem necessari nell'immagine. Questo hook è richiesto, a meno che non si specifichino i moduli di filesystem in MODULES. --
shutdown Aggiunge il supporto allo spegnimento a initramfs. Usare questo hook è altamente raccomandato sei si dispone di una partizione /usr separata o di una partizione di root croptata. Smonta e smonta i dispositivi allo spegnimento.
usr Aggiunge il supporto per /usr su una partizione separata. Monta la partizione /usr dopo che la reale partizione di root è stata montata.
timestamp Aggiunge il binario systemd-timestamp all'immagine. Fornisce il supporto RD_TIMESTAMP al caricamento in userspace. RD_TIMESTAMP può essere letto ad esempio da systemd-analyze per determinare il tempo di avvio. --

Hooks deprecati

Dalla versione 0.13.0 di mkinitcpio, l'hook usbinput è stato deprecato in favore dell'hook keyboard.

Dalla versione 0.12.0 di mkinitcpio, i seguenti hook sono stati deprecati, ed è necessario sostituirli con una singola istanza dell'hook block.

  • fw
  • mmc
  • pata
  • sata
  • scsi
  • usb
  • virtio

Per ulteriori informazioni , è possibile rivedere il Git commit https://projects.archlinux.org/mkinitcpio.git/commit/?id=97368c0e78f3a4fe4d62f7aedde88d4be13bfdba 97368c0e78] o consultare la arch-projects mailing list.

COMPRESSION

Il kernel supporta vari formati per la compressione dell'initramfs, gzip, bzip2, lzma, xz (o lzma2) e lzo. Nella maggior parte dei casi, gzip o lzop forniscono il miglior equilibrio tra dimensione dell'immagine compressa e velocità di decompressione.

COMPRESSION="gzip"
COMPRESSION="bzip2"     # richiede kernel 2.6.30
COMPRESSION="lzma"      # richiede kernel 2.6.30
COMPRESSION="lzop"      # richiede kernel 2.6.34
COMPRESSION="xz"        # richiede kernel 2.6.38

La mancata specifica del parametro COMPRESSION comporterà un file initramfs compresso in gzip. Per creare un'immagine non compressa, specificare COMPRESSION=cat nella configurazione o utilizzare -z cat dalla riga di comando.

Assicuratevi di avere la corretta utility di compressione file installata per il metodo che si desidera utilizzare .

OPZIONI DI COMPRESSIONE

Queste sono ulteriori flag che possono essere passate al programma specificato da COMPRESSION, come ad esempio:

COMPRESSION_OPTIONS='-9'

In generale questi non dovrebbero essere necessari, in quanto mkinitcpio farà in modo che qualsiasi metodo di compressione supporti le flag necessarie per produrre una immagine funzionante.

Personalizzazione del runtime

Le opzioni di configurazione del runtime possono essere inviate a init e ad alcuni hooks per mezzo della riga di comando del kernel. I parametri della riga di comando del kernel sono spesso forniti dal bootloader. Le opzioni specificate sotto possono essere apportate alla linea di comando del kernel per alterare il comportamento predefinito. Consultare Kernel parameters e Arch Boot Process per ulteriori informazioni.

init

Nota: Le opzioni seguenti alterano il comportamento predefinito di init nell'ambiente initramfs. Vedere /usr/initcpio/init per maggiori informazioni.
root
Questo è il parametro più importante da specificare al kernel. Determina quale device deve essere montato come root. mkinitcpio è flessibile e permette diverse sintassi. Per esempio
root=/dev/sda1                                                # /dev node
root=LABEL=CorsairF80                                         # label
root=UUID=ea1c4959-406c-45d0-a144-912f4e86b207                # UUID
root=/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part1    # udev symlink (richiede l'hook udev )
root=801                                                      # hex-encoded major/minor number
break
Se è specificato break=premount, init esegue una pausa iniziale nel processo d'avvio (dopo aver caricato i moduli ma prima di montare root) e lancia una shell interattiva che può essere usata per la risoluzione di eventuali problemi. Questa shell può essere lanciata dopo il mount di root specificando break=postmount. La fase di boot continua dopo il logout.
disablehooks
Disabilita gli hooks al runtime aggiungendo disablehooks=hook1{,hook2,...}. Per esempio:
disablehooks=resume
earlymodules
Altera l'ordine in cui moduli vengono caricati, specificando quali moduli devono essere caricati prima earlymodules=mod1{,mod2,...}. (Questo potrebbe essere usato, per esempio, per assicurare l'ordine corretto delle interfacce di rete multiple).
rootdelay=N
Fare una pausa di N secondi prima di montare il sistema root apponendo il rootdelay. (Questo potrebbe essere usato, per esempio, per l'avvio di un disco rigido USB che è lento in fase di avvio).

Si veda anche: Debugging with GRUB and init

Usare RAID

Per prima cosa aggiungere l'hook mdadm alla lista HOOKS, e poi ogni altro modulo raid richiesto (raid456, ext4) alla lista MODULES in /etc/mkinitcpio.conf.

Kernel Parameters: Usando l'hook mdadm, non sarà più necessario configurare la stringa RAID nei parametri GRUB Legacy. L'hook mdadm userà il file /etc/mdadm.conf, o automaticamente rileverà gli array durante la fase iniziale di boot.

Se si configura tale parametro via udev, è consigliabile usare l'hook mdadm_udev. Questo metodo è anche quello consigliato dallo sviluppo in upstream in quanto /etc/mdadm.conf sarà letto per nominare i devices connessi, se esistono.

Usare la rete

Attenzione: NFSv4 non è ancora supportato

Pacchetti richiesti:

La rete richiede che il pacchetto mkinitcpio-nfs-utils sia installato dai repositories ufficiali.

Parametri del Kernel:

ip=

La specificazione di un'interfaccia può essere sia in formato corto, che è solo il nome di un'interfaccia ("eth0" o altro), che in formato allungato.( Kernel Documentation ) Il formato allungato può essere costituito fino a sette elementi, separati da due punti:

 ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
 nfsaddrs= is an alias to ip= and can be used too.

Spiegazione dei parametri:

 <client-ip>   Indirizzo IP del client. Se vuoto, l'indirizzo sarà
               determinato da RARP/BOOTP/DHCP. Il tipo di protocollo 
               usato dipenderà dal parametro <autoconf>. Se questo
               parametro non è vuoto, sarà usato l'autoconf.
 
 <server-ip>   Indirizzo IP del server NFS. Se RARP è usato per 
               determinare l'indirizzo del client, e questo parametro 
               non è vuoto, saranno accettate solo risposte dal server
               specificato. Per usare differenti server RARP e NFS
               specificare il server RARP qui (o lasciare lo spazio vuoto), 
               e specificare il server NFS, in "nfsroot", il parametro
               (vedere sopra). Se questa voce è vuota verrà usato l'indirizzo 
               del server RARP/BOOTP che ha risposto alla richiesta DHCP.
 
 <gw-ip>       Indirizzo IP di un gateway se il server è su una sottorete 
               differente. Se vuoto, non verrà usato nessun gateway e il
               server sarà, presumibilmente, nella rete locale, a meno che 
               non venga ricevuto qualche valore attraverso BOOTP/DHCP.
 
 <netmask>     Netmask per l'interfaccia di rete locale. Se lasciato vuoto,
               il netmask è derivato dall'indirizzo IP del client che presume
               l'indirizzamento "classful", a meno che venga annullato nella 
               risposta di BOOTP/DHCP.
 
 <hostname>    Il nome del client. Se vuoto, l'indirizzo
               IP del client è usato nella notazione ASCII, oppure il 
               valore ricevuto da BOOTP/DHCP.
 
 <device>      Nome del dispositivo di rete da usare. Se vuoto, tutti i
               dispositivi sono usati per le richieste RARP/BOOTP/DHCP, e il
               primo a ricevere una risposta viene configurato. Se si usa
               un'unico dispositivo si può lasciare vuota questa voce.              
 
 <autoconf>    Metodo da usare per l'autoconfigurazione. Se include sia
               "rarp", "bootp", che "dhcp" il protocollo specificato verrà
               usato.  Se il valore è "both", "all" o vuoto, tutti i
               protocolli verranno usati. "off", "static" o "none" significa
               no autoconfigurazione.

Esempi:

 ip=127.0.0.1:::::lo:none  --> Permettere l'interfaccia loopback.
 ip=192.168.1.1:::::eth2:none --> Permettere l'interfaccia statica eth2.
 ip=:::::eth0:dhcp --> Permettere il protocollo dhcp per la configurazione eth0.

BOOTIF=

Se si dispone di più schede di rete, questo parametro può includere l'indirizzo MAC dell'interfaccia che si sta avviando. Questo è spesso utile in quanto la numerazione dell'interfaccia può cambiare, o insieme con le opzioni pxelinux IPAPPEND 2 o IPAPPEND 3.

Se non indicato, sarà utilizzato eth0.

Example:

 BOOTIF=01-A1-B2-C3-D4-E5-F6  # Note the prepended "01-" and capital letters.


nfsroot=

Se il parametro "nfsroot" non viene dato dalla riga di comando, sarà usato il predefinito "/tftpboot/%s".

 nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

Spiegazione dei parametri:

 <server-ip>   Specifica l'indirizzo IP del server NFS. Se non specificato,
               l'indirizzo predefinito è determinato dall' "ip" variabile
               (vedere più sotto). Un'utilità di questo valore è per esempio
               la possibilità di usare differenti server per RARP e NFS.
               In generale si può lasciare in bianco.
 
 <root-dir>    Nome della cartella sul server, da montare come root. Se c'è
               un "%s" nella stringa, il simbolo sarà sostituito dalla
               rappresentazione ASCII dell'indirizzo ip del client.
               
 <nfs-options> Opzioni standard NFS. Tutte le opzioni sono separate da virgole.
               Se non viene fornita nessuna opzione, saranno usate le 
               seguenti opzioni predefinite:
                       port            = as given by server portmap daemon
                       rsize           = 1024
                       wsize           = 1024
                       timeo           = 7
                       retrans         = 3
                       acregmin        = 3
                       acregmax        = 60
                       acdirmin        = 30
                       acdirmax        = 60
                       flags           = hard, nointr, noposix, cto, ac

root=/dev/nfs

Se non si utilizzano parametri nfsroot= bisognerà configurare root=/dev/nfs per avviare un nfs da root per l'auto-configurazione.

Usare LVM

Se il dispositivo di root è su LVM, bisognerà aggiungere l'hook lvm2, e passare il dispositivo di root sulla riga di comando del kernel nel seguente formato

root=/dev/mapper/<volume group name>-<logical volume name>

per esempio :

root=/dev/mapper/myvg-root

Inoltre, se il vostro dispositivo di root viene inizializzato lentamente (ad esempio su un dispositivo USB) e/o si riceve un errore durante l'avvio del tipo : "volume group not found", allora potrebbe essere necessario aggiungere la seguente riga di comando per il kernel :

lvmwait=/dev/mapper/<volume group name><logical volume name>

per esempio :

 lvmwait=/dev/mapper/myvg-root

In questo modo il processo di avvio attende che LVM riesca a rendere il dispositivo disponibile .

Usare root criptato

Se il volume di root è codificato, si deve aggiungere l'hook encrypt.

Per una partizione criptata utilizzare qualcosa simile a questo:

root=/dev/mapper/root cryptdevice=/dev/sda5:root

In questo esempioi, /dev/sda5 è il device crittografato, e diamo un nome arbitrario di root, il che significa che il nostro dispositivo di root, una volta sbloccato, è montato come /dev/mapper/root. Al boot, verrà richiesto per la passphrase per sbloccarlo. Si veda LUKS#Configuration_of_initcpio Per ulteriori dettagli sull'utilizzo di una root criptata.

/usr su una partizione separata

Se durante l'installazione di Arch Linux si è scelto di montare /usr su una partizione separate, è necessario rispettare i seguenti requisiti:

  • Aggiungere l'hook shutdown. Il processo di spegnimento salverà una copia dell'initramfs e permetterà a /usr (e root) di essere adeguatamente smontata.
  • Aggiungere l'hook fsck, contrassegnare /usr con un passno di valore 0 in /etc/fstab. Mentre è consigliato per tutti, è obbligatorio se si desidera che la partizione /usr sia controllata al boot. Senza questo hook, /usr non verrà mai controllata.
  • Aggiungere l'hook usr. Questo monterà la partizione /usr dopo che root è montato. Prima della versione 0.9.0, il montaggio di /usr sarebbe avvenuto automaticamente nella root reale se fosse stato trovato in /etc/fstab.

Risoluzione dei problemi

Estrarre l'immagine

Se si è curiosi e si vuole scoprire cosa c'è dentro l'immagine initrd, la si può estrarre, per dare un'occhiata ai file all'interno.

L'immagine initrd è un archivio SVR4 CPIO, generato dai comandi find e bsdcpio, opzionalmente compresso con uno schema di compressione compreso dal kernel. Per ulteriori informazioni sugli schemi di compressione , vedere #COMPRESSION.

Mkinitcpio include uno strumento chiamato lsinitcpio che elenca ed estrae i contenuti dell'immagine initramfs.

Si possono elencare i file nell'immagine con:

$ lsinitcpio /boot/initramfs-linux.img

Ed estrarli nella cartella attuale:

$ lsinitcpio -x /boot/initramfs-linux.img

È anche possibile avere una lista più human-friendly delle più importanti parti dell'immagine:

$lsinitcpio -a /boot/initramfs-linux.imq

Altre Fonti

Riferimenti esterni

  • Documentazione del kernel Linux: initramfs
  • Documentazione del kernel Linux: initrd
  • Articolo Wikipedia: initrd