Tôi đã thấy trên các hệ thống Linux khác nhau, thay vì nút thiết bị thực (ví dụ /dev/sda1
:), thiết bị gốc xuất hiện dưới dạng /dev/root
hoặc thay vì hệ thống tệp thực, mtab
cho biết đó là hệ thống tệp được gọi rootfs
(xuất hiện dưới dạng hệ thống tệp thực /proc/filesystems
, nhưng không có mã trong <linux-kernel-source-tree>/fs
). Nhiều tiện ích khác nhau đã được thực hiện để sử dụng các thuộc tính nhất định để xác định nút thiết bị gốc thực sự (chẳng hạn như ndev và rootdev Chromium OS). Tôi không thể tìm thấy lời giải thích hợp lý nào cho vấn đề này ngoài việc đọc ở đâu đó rằng các thiết bị nhúng rất nhỏ không phải luôn có /dev
nút thiết bị cho thiết bị gốc của họ. (Điều này có đúng không, và nếu vậy, đó có phải là câu trả lời cho câu hỏi của tôi không?) Tại sao mtab đôi khi nói /dev/root
(và tôi nghĩ rằng tôi có thể đã thấy nó nóirootdev
một lần) thay vì nút thiết bị thực, và làm thế nào tôi có thể làm cho nó luôn luôn nói nút thiết bị thực? Hạt nhân gắn kết đầu tiên trên thiết bị gốc sau khi root
thông số trong cmdline, sau đó init/systemd
tái gắn kết nó theo fstab
, đúng không? Nếu vậy, thì tôi đoán Tôi nhận thấy rằng đó init
duy trì mtab
. Nếu lý thuyết của tôi là chính xác, làm thế nào tôi có thể thực hiện init
ghi nút thiết bị gốc thực sự mtab
? /etc/mtab
thực sự là một liên kết tượng trưng /proc/mounts
, có nghĩa mtab
là được duy trì bởi kernel. Vậy làm cách nào để cấu hình / vá kernel, thay vì nói đường dẫn nút thiết bị gốc /dev/root
, có mtab
chứa nút thiết bị thực không?
mount
cung cấprootfs on / type rootfs (rw)
cho initrd và/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
cho đĩa cứng ext2 với thiết lập này .