J'ai vu sur divers systèmes Linux où, au lieu du nœud de périphérique réel (par exemple:) /dev/sda1
, le périphérique racine apparaît comme /dev/root
, ou au lieu du vrai système de fichiers, mtab
dit que c'est un système de fichiers appelé rootfs
(qui apparaît comme un vrai système de fichiers dans /proc/filesystems
, mais n'a pas de code <linux-kernel-source-tree>/fs
). Divers utilitaires ont été créés pour utiliser certains attributs afin de déterminer le véritable nœud de périphérique racine (tel que rdev et Chromium OS rootdev). Je ne peux trouver aucune explication logique à cela autre que de lire quelque part que les très petits périphériques intégrés n'ont pas toujours besoin d'avoir un /dev
nœud de périphérique pour leur périphérique racine. (Est-ce vrai, et si c'est le cas, est-ce la réponse à ma question?) Pourquoi mtab dit-il parfois /dev/root
(et je pense que j'aurais pu le voir direrootdev
une fois) au lieu du nœud de périphérique réel, et comment puis-je toujours dire le nœud de périphérique réel? Le noyau monte d'abord le périphérique racine en suivant le root
paramètre dans la ligne de commande, puis le init/systemd
remonte en fonction de la fstab
, correct? Si c'est le cas, je présume que le J'ai remarqué qu'il init
maintien mtab
. Si ma théorie est correcte, comment puis-je faire init
écrire le vrai nœud de périphérique racine mtab
? /etc/mtab
s'agit en fait d'un lien symbolique vers /proc/mounts
, ce qui signifierait qu'il mtab
est maintenu par le noyau. Alors, comment puis-je configurer / patcher un noyau pour, au lieu de dire que le chemin du nœud des périphériques racine est /dev/root
, mtab
contenir le véritable nœud du périphérique?
la source
mount
donnerootfs on / type rootfs (rw)
pour initrd et/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
pour ext2 disque dur avec cette configuration ./dev/root
est utilisé par certaines implémentations d'initramfs mais pas par d'autres - dans ces cas, il n'est pas dû au noyau. Lorsqu'il n'utilise pas d'initramfs, il semble que ce soit une valeur d'espace réservé utilisée par le noyau. (Peut-être pourrait-il être supprimé dans une version ultérieure du noyau). stackoverflow.com/questions/37310046/…Gentoo a un correctif qui fait exactement cela (garantit que le vrai périphérique racine est affiché). Vous pouvez le trouver ici: https://lkml.org/lkml/2013/1/31/574
la source
Sous Linux,
/dev/root
s'il est présent, est un lien symbolique vers le périphérique réel créé au démarrage.Vous utilisez soit
readlink /dev/root
oucat /proc/cmdline
pour voir leroot
paramètre du noyau démarré, et ainsi découvrir le vrai périphérique derrière lui.De l'homme
dracut(8)
la source
/dev/root
s'agit d'un artefact de distributions basées sur RedHat./dev/root/
. Sur un ancien CentOS, il semble être un véritable nœud de périphérique au lieu d'un lien symbolique.base-files
recette d' OpenEmbeddedfstab
mentionne/dev/root
, donc ce ne sont pas seulement les distributions provenant de Red Hat qui l'utilisent.