Saya telah melihat pada berbagai sistem Linux di mana alih-alih simpul perangkat nyata (misalnya /dev/sda1
:), perangkat root muncul sebagai /dev/root
, atau bukannya sistem file nyata, mtab
mengatakan itu adalah sistem file yang disebut rootfs
(yang muncul sebagai sistem file nyata /proc/filesystems
, tetapi tidak memiliki kode di <linux-kernel-source-tree>/fs
). Berbagai utilitas telah dibuat untuk menggunakan atribut tertentu untuk menentukan simpul perangkat root nyata (seperti rdev, dan Chromium OS rootdev). Saya tidak dapat menemukan penjelasan logis untuk ini selain membaca di suatu tempat bahwa perangkat yang tertanam sangat kecil tidak selalu harus memiliki /dev
simpul perangkat untuk perangkat root mereka. (Apakah ini benar, dan jika demikian, apakah itu jawaban untuk pertanyaan saya?) Mengapa mtab kadang-kadang mengatakan /dev/root
(dan saya pikir saya mungkin telah melihatnya mengatakannyarootdev
sekali) bukan node perangkat nyata, dan bagaimana saya bisa membuatnya selalu mengatakan node perangkat nyata? Kernel pertama mount perangkat root mengikuti root
parameter di cmdline, lalu pasang init/systemd
kembali sesuai dengan fstab
, benar? Jika demikian, maka saya kira Saya perhatikan bahwa init
mempertahankan mtab
. Jika teori saya benar, bagaimana saya bisa init
menulis simpul perangkat root yang sebenarnya mtab
? /etc/mtab
sebenarnya itu adalah tautan simbolis /proc/mounts
, yang artinya mtab
dipelihara oleh kernel. Jadi, bagaimana cara mengkonfigurasi / menambal kernel, alih-alih mengatakan path node device root /dev/root
, mtab
mengandung node device sebenarnya?
sumber
mount
memberikanrootfs on / type rootfs (rw)
untuk initrd dan/dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)
untuk hard disk ext2 dengan pengaturan ini ./dev/root
digunakan oleh beberapa implementasi initramfs tetapi tidak yang lain - dalam kasus ini bukan karena kernel. Ketika tidak menggunakan initramfs, tampaknya ini adalah nilai placeholder yang digunakan oleh kernel. (Mungkin bisa dihapus dalam beberapa versi kernel yang lebih baru). stackoverflow.com/questions/37310046/…Gentoo memiliki tambalan yang melakukan hal ini (memastikan perangkat root sebenarnya ditampilkan). Anda dapat menemukannya di sini: https://lkml.org/lkml/2013/1/31/574
sumber
Di Linux,
/dev/root
jika ada, adalah symlink ke perangkat aktual yang dibuat saat boot.Anda dapat menggunakan
readlink /dev/root
ataucat /proc/cmdline
untuk melihatroot
parameter kernel yang dibooting, dan dengan demikian mencari tahu perangkat nyata di belakangnya.Dari manusia
dracut(8)
sumber
/dev/root
ini adalah artefak dari distribusi berbasis RedHat./dev/root/
. Pada CentOS yang lama tampaknya merupakan simpul perangkat yang sebenarnya bukan symlink.base-files
fstab
menyebutkan/dev/root
, jadi bukan hanya distro yang berasal dari Red Hat yang menggunakannya.