Я бачив у різних системах Linux, де замість реального вузла пристрою (наприклад /dev/sda1
:) кореневий пристрій з'являється як /dev/root
, або замість реальної файлової системи, mtab
каже, що це називається файлова система rootfs
(яка з'являється як реальна файлова система в /proc/filesystems
, але не містить коду в <linux-kernel-source-tree>/fs
). Різні утиліти були використані для використання певних атрибутів для визначення реального вузла кореневого пристрою (наприклад, rdev та rootdev Chromium OS). Я не можу знайти жодного логічного пояснення цьому, крім того, щоб десь прочитати, що дуже маленькі вбудовані пристрої не завжди повинні мати /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 з цією установкою .