Ini mungkin harus diperbarui, karena banyak informasi yang diberikan di sini menyesatkan, dan mungkin sebenarnya tidak pernah benar secara komprehensif.
https://bootlin.com/blog/find-root-device/
Untuk titik / mount, Anda baru saja diberitahu bahwa itu berhubungan dengan / dev / root, yang bukan perangkat nyata yang Anda cari.
Tentu saja, Anda dapat melihat baris perintah kernel dan melihat sistem file root awal mana yang diinstruksikan untuk di-boot (parameter root):
$ cat / proc / cmdline mem = 512M konsol = ttyS2,115200n8 root = / dev / mmcblk0p2 rw rootwait
Namun, ini tidak berarti bahwa apa yang Anda lihat adalah perangkat root saat ini. Banyak sistem Linux mem-boot pada sistem file root menengah (seperti initramdisks dan initramfs), yang hanya digunakan untuk mengakses yang terakhir.
Satu hal yang ditunjukkan adalah bahwa hal di / proc / cmdline belum tentu merupakan root perangkat akhir aktual.
Itu dari orang-orang kotak sibuk, yang saya asumsikan tahu apa yang mereka bicarakan ketika datang ke situasi boot.
https://www.linuxquestions.org/questions/slackware-14/slackware-current-dev-root-688189/page2.html
Sumber daya bermanfaat kedua yang saya temukan adalah utas Slackware yang sangat tua tentang pertanyaan / dev / root, sejak usia utas ini, kita dapat melihat bahwa semua varian selalu ada, tetapi saya percaya 'kebanyakan' distro menggunakan simbolik metode tautan, tapi itu adalah switch kompilasi kernel yang sederhana, bisa membuat satu, atau tidak membuat satu jika saya memahami poster dengan benar, yaitu, beralih satu arah, dan readlink / dev / root melaporkan nama perangkat yang sebenarnya, alihkan yang lain, dan itu tidak.
Karena topik utama utas itu adalah bagaimana menyingkirkan / dev / root, mereka harus masuk ke dalam apa itu sebenarnya, apa yang membuatnya, dll, yang berarti, mereka harus memahaminya untuk menyingkirkannya.
gnashly menjelaskannya dengan baik:
/ dev / root adalah perangkat generik yang dapat digunakan di fstab. Anda juga dapat menggunakan 'rootfs'. Melakukan hal ini menawarkan beberapa keuntungan karena memungkinkan Anda untuk kurang spesifik. Yang saya maksud adalah, jika partisi root berada di drive eksternal, mungkin tidak selalu muncul sebagai perangkat yang sama dan berhasil memasangnya sebagai / akan membutuhkan mengubah fstab agar sesuai dengan perangkat yang benar. Dengan menggunakan / dev / root akan selalu cocok dengan perangkat apa pun yang ditentukan dalam parameter boot kernel dari lilo atau grub.
/ dev / root selalu hadir sebagai titik mount virtual, bahkan jika Anda tidak pernah melihatnya. Begitu juga dengan rootfs (bandingkan dengan perangkat virtual khusus seperti proc dan tmpfs yang tidak memiliki pendahuluan / dev)
/ dev / root adalah perangkat virtual seperti 'proc' atau / dev / tcp '. Tidak ada simpul perangkat di / dev untuk hal-hal ini - sudah ada di kernel sebagai perangkat virtual.
Ini menjelaskan mengapa tautan simbolik belum tentu ada. Saya terkejut saya tidak pernah mengalami masalah ini sebelumnya, mengingat bahwa saya memelihara beberapa program yang perlu mengetahui informasi ini, tetapi lebih baik terlambat daripada tidak sama sekali.
Saya percaya beberapa solusi yang ditawarkan di sini akan 'sering' bekerja, dan mungkin apa yang akan saya lakukan, tetapi mereka bukan solusi sebenarnya yang sebenarnya untuk masalah tersebut, yang seperti yang dicatat oleh penulis busybox, secara signifikan lebih rumit untuk diterapkan dalam cara yang kuat.
[UPDATE:} Setelah mendapatkan beberapa data uji pengguna, saya akan menggunakan metode mount, yang tampaknya ok untuk beberapa kasus setidaknya. The / proc / cmdline tidak berguna karena ada terlalu banyak varian. Pada contoh pertama, Anda melihat metode lama. Ini kurang dan kurang umum karena sangat tidak disarankan untuk menggunakannya (sintaks tipe asli / dev / sdx [0-9]) karena jalur tersebut dapat berubah secara dinamis (pertukaran disk, masukkan disk baru, dll, dan tiba-tiba / dev / sda1 menjadi / dev / sdb1).
root=/dev/sda1
root=UUID=5a25cf4a-9772-40cd-b527-62848d4bdfda
root=LABEL=random string
root=PARTUUID=a2079bfb-02
VS sangat bersih dan mudah diurai:
mount
/dev/sda1 on / type ext4 (rw,noatime,data=ordered)
Dalam kasus cmdline, Anda akan melihat, satu-satunya varian yang merupakan 'jawaban' yang benar dalam teori adalah yang pertama, yang sudah usang, karena Anda tidak boleh merujuk root ke target yang bergerak seperti / dev / sdxy
Dua berikutnya perlu melakukan tindakan lebih lanjut untuk mendapatkan tautan simbolik dari string itu di / dev / disk / by-uuid atau / dev / disk / oleh-label
Yang terakhir mengharuskan saya percaya menggunakan parted -l untuk menemukan apa yang menunjuk id berpisah.
Itu hanya varian yang saya tahu dan lihat, mungkin ada yang lain, seperti GPTID, misalnya.
Jadi solusi yang saya gunakan adalah ini:
pertama, lihat apakah / dev / root adalah tautan simbolik. Jika ya, verifikasi bukan ke / dev / disk / by-uuid atau by-label, jika ya, Anda harus melakukan langkah kedua pemrosesan untuk mendapatkan jalur nyata terakhir. Tergantung pada alat yang Anda gunakan.
Jika Anda tidak mendapat apa-apa, maka pergilah ke gunung, dan lihat bagaimana itu. Sebagai kasus fallback terakhir, yang saya tidak menggunakan karena argumen yang diberikan terhadapnya bahkan tidak perlu menjadi partisi atau perangkat yang sebenarnya cukup baik bagi saya untuk menolak solusi untuk program saya. mount bukanlah solusi yang sepenuhnya kuat, dan saya yakin diberikan cukup sampel, akan mudah untuk menemukan case yang tidak benar sama sekali, tapi saya percaya kedua case ini mencakup pengguna 'terbanyak', yang saya butuhkan.
Solusi terbaik, terbersih, dan paling dapat diandalkan adalah kernel akan selalu membuat tautan simbolik, yang tidak akan menyakiti apa pun atau siapa pun, dan menyebutnya baik, tetapi bukan itu yang berhasil di dunia nyata. .
Saya tidak menganggap semua ini sebagai solusi 'baik atau kuat', tetapi opsi mount tampaknya memuaskan 'cukup baik', dan jika solusi yang benar-benar kuat diperlukan, gunakan hal-hal yang direkomendasikan busybox.