Я видел в различных системах 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 жесткого диска с этой настройкой .