Comment accéder à / etc / fstab avant le montage de root?

22

J'apportais des modifications à /etc/fstab, lorsque cette question de poulet et d'oeuf m'est venue à l'esprit - si /etc/fstabcontient les instructions de montage des systèmes de fichiers, y compris la partition racine, alors comment le système d'exploitation lit-il ce fichier en premier lieu?

sashoalm
la source

Réponses:

18

Lorsque le chargeur de démarrage appelle le noyau, il lui transmet un paramètre appelé root. Ainsi, une fois l'initialisation du noyau terminée, il continuera en montant la partition racine donnée sur /puis en appelant /sbin/init(sauf si cela a été annulé par d'autres paramètres).

Ensuite, le initprocessus démarre le reste du système en chargeant tous les services définis pour être démarrés dans votre niveau d'exécution par défaut.

Selon votre configuration et le système d'initialisation que vous utilisez, il peut y avoir plusieurs autres étapes entre celles que j'ai mentionnées. Actuellement, les systèmes d'initialisation les plus populaires sur Linux sont SysVInit (le traditionnel), Upstart et Systemd. Vous pouvez trouver plus de détails sur le processus de démarrage dans cet article wikipedia .

Voici un exemple simplifié de ma configuration Grub. La partie importante pour répondre à votre question est de l'avant-dernière ligne, il y a 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  
}

Dans de nombreuses configurations, le noyau se monte /en mode lecture seule et toutes les autres options sont définies par défaut. Dans, /etc/fstabvous pouvez spécifier les paramètres du système de fichiers qui seraient ensuite appliqués une fois qu'init les aura remontés.

rejouer
la source
2
La partition racine est initialement montée en lecture seule par le noyau. Un initprocessus monte ensuite les choses en /etc/fstabfonction des paramètres qui s'y trouvent, ce qui signifie généralement remonter la partition racine en lecture-écriture.
goldilocks
1
Le noyau peut également être compilé avec des routines codées en dur qui recherchent des fichiers spéciaux sur la partition active qui n'est pas déjà montée. Le chargeur FreeBSD fonctionne de cette façon.
Kondybas
@Kondybas LILO sur Linux est également codé en dur pour charger le noyau à certains numéros de bloc fixes
phuclv
3

Une entrée dans fstabest nécessaire si vous souhaitez spécifier des options de montage non par défaut. Cependant, de nos jours avec systemd, un périphérique noyau correct et fstype in fstabsont inutiles. Vous pouvez remplacer l'entrée racine par quelque chose comme:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

et les options de montage sont toujours honorées par systemd.

Vous pouvez utiliser n'importe quel mauvais nom d'appareil, par exemple /dev/sdz1, à l'exception d'un mauvais UUID. Avec un UUID incorrect, le message sera imprimé au démarrage:, Failed to start Remount Root and Kernel File Systemsmais le système démarre quand même.

bassin
la source