Risposte:
Quando il boot loader chiama il kernel, gli passa un parametro chiamato root
. Quindi una volta che il kernel ha terminato l'inizializzazione continuerà montando la partizione di root data /
e poi chiamando /sbin/init
(a meno che questo non sia stato sostituito da altri parametri).
Quindi il init
processo avvia il resto del sistema caricando tutti i servizi definiti per essere avviati nel runlevel predefinito.
A seconda della configurazione e del sistema init in uso, possono esserci più passaggi tra quelli che ho citato. Attualmente i sistemi init più popolari su Linux sono SysVInit (quello tradizionale), Upstart e Systemd. Puoi trovare maggiori dettagli sul processo di avvio in questo articolo di Wikipedia .
Ecco un esempio semplificato della mia configurazione di Grub. La parte importante per rispondere alla tua domanda è dalla seconda all'ultima riga, c'è un root=/dev/sda3
:
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
set root='hd0,msdos1'
echo 'Loading Linux 3.12.6-gentoo-c2 ...'
linux /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro
}
In molte configurazioni il kernel si monta /
in modalità di sola lettura e tutte le altre opzioni sono impostate sui valori predefiniti. In /etc/fstab
potresti specificare i parametri del file system che verranno poi applicati una volta che init lo rimonta.
È fstab
necessaria una voce se si desidera specificare alcune opzioni di montaggio non predefinite. Tuttavia, al giorno d'oggi con systemd
, un dispositivo kernel corretto e fstype in fstab
sono inutili. Puoi sostituire la voce di root con qualcosa del tipo:
#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 / ext4 rw,relatime,data=ordered 0 1
dummy / auto rw,relatime,data=ordered,debug 0 1
e le opzioni di mount sono ancora onorate da systemd.
È possibile utilizzare qualsiasi nome di dispositivo errato, ad es /dev/sdz1
. Tranne l'UUID errato. Con un UUID errato il messaggio verrà stampato all'avvio:, Failed to start Remount Root and Kernel File Systems
ma il sistema si avvia comunque.
init
processo quindi monta le cose in/etc/fstab
base ai parametri lì, il che di solito significa re-montare la partizione di root read-write.