Я видел в различных системах Linux, где вместо реального узла устройства (например:) /dev/sda1
, корневое устройство отображается как /dev/root
или вместо реальной файловой системы, mtab
говорит, что называется файловой системой rootfs
(которая выглядит как настоящая файловая система /proc/filesystems
, но нет кода в <linux-kernel-source-tree>/fs
). Различные утилиты были созданы для использования определенных атрибутов для определения реального корневого узла устройства (например, rdev и Chromium OS rootdev). Я не могу найти никакого логического объяснения этому, кроме чтения где-то, что очень маленькие встроенные устройства не всегда должны иметь /dev
узел устройства для своего корневого устройства. (Это правда, и если да, то это ответ на мой вопрос?) Почему mtab иногда говорит /dev/root
(и я думаю, я мог видеть, что это говоритrootdev
один раз) вместо реального узла устройства, и как я могу сделать так, чтобы он всегда говорил реальный узел устройства? Ядро сначала монтирует корневое устройство, следуя root
параметру в cmdline, затем init/systemd
перемонтирует его в соответствии с fstab
, правильно? Если так, то я полагаю, Я заметил, что init
поддерживает mtab
. Если моя теория верна, как я могу init
записать настоящий корневой узел устройства mtab
? /etc/mtab
это на самом деле символическая ссылка на /proc/mounts
, что означает, mtab
что поддерживается ядром. Итак , как настроить / пропатчить ядро на, вместо того , чтобы говорить путь корневого узла устройства /dev/root
, которые mtab
содержат узел реального устройства?
источник
mount
даетrootfs on / type rootfs (rw)
для initrd и/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
для ext2 жесткого диска с этой настройкой ./dev/root
используется некоторыми реализациями initramfs, но не другими - в этих случаях это не связано с ядром. Когда не используется initramfs, это похоже на значение заполнителя, используемое ядром. (Возможно, это может быть удалено в более поздней версии ядра). stackoverflow.com/questions/37310046/…Gentoo имеет патч, который делает именно это (обеспечивает отображение реального корневого устройства). Вы можете найти его здесь: https://lkml.org/lkml/2013/1/31/574
источник
В Linux,
/dev/root
если есть, это символическая ссылка на фактическое устройство, созданное во время загрузки.Вы либо используете
readlink /dev/root
или,cat /proc/cmdline
чтобы увидетьroot
параметр загруженного ядра, и таким образом узнать реальное устройство за ним.От мужчины
dracut(8)
источник
/dev/root
является ли это артефактом дистрибутивов на основе RedHat./dev/root/
. На старом CentOS это, кажется, фактический узел устройства вместо символической ссылки.base-files
рецепте OpenEmbeddedfstab
упоминается/dev/root
, так что его используют не просто дистрибутивы Red Hat.