Perché su alcuni sistemi Linux, il filesystem di root appare come / dev / root invece di / dev / <nodo dispositivo reale> in mtab?


11

Ho visto su vari sistemi Linux in cui invece del nodo del dispositivo reale (per esempio:) /dev/sda1, il dispositivo root appare come /dev/root, o invece del vero filesystem, mtabdice che è un filesystem chiamato rootfs(che appare come un vero filesystem in /proc/filesystems, ma non ha codice in <linux-kernel-source-tree>/fs). Sono state create varie utilità per utilizzare determinati attributi per determinare il nodo del dispositivo radice reale (come rdev e Chromium OS rootdev). Non riesco a trovare una spiegazione logica a questo oltre a leggere da qualche parte che i dispositivi embedded molto piccoli non devono sempre avere un /devnodo dispositivo per il loro dispositivo root. (È vero, e se è così, è la risposta alla mia domanda?) Perché a volte mtab dice /dev/root(e penso che avrei potuto vederlo direrootdevuna volta) invece del nodo del dispositivo reale, e come posso sempre dire il nodo del dispositivo reale? Il kernel prima monta il dispositivo root seguendo il rootparametro nella cmdline, quindi init/systemdlo monta nuovamente secondo il fstab, corretto? In tal caso, presumo initsostenga mtab. Se la mia teoria è corretta, come posso fare initscrivere il vero nodo del dispositivo radice mtab? Ho notato che in /etc/mtabrealtà è un collegamento simbolico a /proc/mounts, il che significherebbe che mtabè gestito dal kernel. Quindi, come posso configurare / patchare un kernel per, invece di dire che il percorso del nodo dei dispositivi root è /dev/root, deve mtabcontenere il nodo del dispositivo reale?

Risposte:


4

Questo è generalmente un artefatto dell'uso di un initramfs.

Dalla documentazione del kernel ( https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt )

Che cos'è rootfs?

Rootfs è un'istanza speciale di ramfs (o tmpfs, se abilitato), che è sempre presente nei sistemi 2.6. Non è possibile smontare rootfs per circa lo stesso motivo per cui non è possibile interrompere il processo di inizializzazione; piuttosto che avere un codice speciale per controllare e gestire un elenco vuoto, è più piccolo e più semplice per il kernel assicurarsi che determinati elenchi non possano diventare vuoti.

La maggior parte dei sistemi monta semplicemente un altro filesystem su rootfs e lo ignora. La quantità di spazio occupata da un'istanza vuota di ramfs è minuscola.

Quindi rootfsè il filesystem di root creato per initramfs e non può essere smontato.

Per quanto riguarda /dev/root, sono meno sicuro su questo, ma se ricordo che /dev/rootviene creato correttamente quando si utilizza un initrd (non uguale a un initramfs).


mountrootfs on / type rootfs (rw)per initrd e /dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)per ext2 hard disk con questa configurazione .
Ciro Santilli 30 病毒 审查 六四 事件 法轮功

/dev/rootè usato da alcune implementazioni di initramfs ma non da altri - in questi casi non è dovuto al kernel. Quando non si usa un initramfs, sembra essere un valore di segnaposto usato dal kernel. (Forse potrebbe essere rimosso in alcune versioni successive del kernel). stackoverflow.com/questions/37310046/...
sourcejedi


2

In Linux, /dev/rootse presente, è un collegamento simbolico al dispositivo reale creato all'avvio.

Puoi usare readlink /dev/rooto cat /proc/cmdlineper vedere il rootparametro del kernel avviato, e quindi scoprire il vero dispositivo dietro di esso.

Dall'uomo dracut(8)

Tuttavia, per continuare con un avvio riuscito, l'obiettivo è individuare il volume di root e creare un collegamento simbolico / dev / root che punti al file system.


Non sono del tutto sicuro se si /dev/roottratti di un artefatto delle distribuzioni basate su RedHat.
Rui F Ribeiro,

Bene, il mio Debian 8 non ha /dev/root/. Su un vecchio CentOS sembra essere un vero nodo di dispositivo anziché un collegamento simbolico.
Ilkkachu,

1
Bene, le menzioni della base-filesricetta di OpenEmbeddedfstab/dev/root , quindi non sono solo le distro che provengono da Red Hat che lo usano.
ack
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.