Ich habe auf verschiedenen Linux-Systemen gesehen, dass anstelle des realen Geräteknotens (zum Beispiel :) /dev/sda1
das Root-Gerät als /dev/root
oder anstelle des realen Dateisystems mtab
als Dateisystem bezeichnet wird rootfs
(das als reales Dateisystem in angezeigt wird /proc/filesystems
, aber) hat keinen Code in <linux-kernel-source-tree>/fs
). Es wurden verschiedene Dienstprogramme erstellt, um bestimmte Attribute zu verwenden, um den tatsächlichen Root-Geräteknoten zu bestimmen (z. B. rdev und Chromium OS rootdev). Ich kann keine logische Erklärung dafür finden, außer irgendwo zu lesen, dass sehr kleine eingebettete Geräte nicht immer einen /dev
Geräteknoten für ihr Root-Gerät haben müssen. (Ist das wahr, und wenn ja, ist das die Antwort auf meine Frage?) Warum sagt mtab manchmal /dev/root
(und ich glaube, ich hätte es vielleicht gesehen ?)rootdev
einmal) anstelle des realen Geräteknotens, und wie kann ich dafür sorgen, dass immer der reale Geräteknoten angezeigt wird? Der Kernel stellt das Root-Gerät zuerst gemäß dem root
Parameter in der cmdline bereit und stellt es dann init/systemd
gemäß dem fstab
korrekten? Wenn ja, dann nehme ich an, Mir ist aufgefallen, dass dies init
behauptet mtab
. Wenn meine Theorie korrekt ist, wie kann ich init
den echten Root-Geräteknoten schreiben lassen mtab
? /etc/mtab
tatsächlich eine symbolische Verbindung zu ist /proc/mounts
, was bedeuten würde, mtab
dass der Kernel sie verwaltet. Wie kann ich einen Kernel so konfigurieren / patchen /dev/root
, dass er mtab
den realen Geräteknoten enthält , anstatt zu sagen, dass der Knotenpfad des Root-Geräts lautet ?
quelle
mount
gibtrootfs on / type rootfs (rw)
für initrd und/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
für ext2 Festplatte mit diesem Setup ./dev/root
wird von einigen Implementierungen von initramfs verwendet, andere jedoch nicht - in diesen Fällen liegt es nicht am Kernel. Wenn Sie kein initramfs verwenden, scheint es sich um einen Platzhalterwert zu handeln, der vom Kernel verwendet wird. (Vielleicht könnte es aber in einer späteren Kernel-Version entfernt werden). stackoverflow.com/questions/37310046/…Gentoo hat einen Patch, der genau dies tut (stellt sicher, dass das echte Root-Gerät angezeigt wird). Sie finden es hier: https://lkml.org/lkml/2013/1/31/574
quelle
Unter Linux ist
/dev/root
, falls vorhanden, ein Symlink zum tatsächlichen Gerät, das beim Booten erstellt wurde.Sie verwenden
readlink /dev/root
odercat /proc/cmdline
, um denroot
Parameter des gebooteten Kernels anzuzeigen, und ermitteln so das tatsächliche Gerät dahinter.Vom Menschen
dracut(8)
quelle
/dev/root
es sich um ein Artefakt von RedHat-basierten Distributionen handelt./dev/root/
. Auf einem alten CentOS scheint es sich um einen tatsächlichen Geräteknoten anstelle eines Symlinks zu handeln.base-files
Rezeptfstab
erwähnt/dev/root
, also sind es nicht nur Distributionen, die von Red Hat stammen, die es verwenden.