Neden bazı Linux sistemlerinde, kök dosya sistemi mtab içinde / dev / <gerçek aygıt düğümü> yerine / dev / root olarak görünüyor?


11

Gerçek aygıt düğümü (örneğin /dev/sda1:) /dev/rootyerine kök aygıtın veya gerçek dosya sistemi yerine göründüğü mtabbir dosya sistemi rootfs(gerçek bir dosya sistemi olarak görünür /proc/filesystems, ancak kodu yok <linux-kernel-source-tree>/fs). Gerçek kök aygıt düğümünü (rdev ve Chromium OS rootdev gibi) belirlemek için belirli öznitelikleri kullanmak için çeşitli yardımcı programlar yapılmıştır. Çok küçük gömülü aygıtların her zaman /devkök aygıtları için bir aygıt düğümü olması gerekmediği bir yerde okumaktan başka mantıklı bir açıklama bulamıyorum . (Bu doğru mu ve eğer öyleyse, sorumun cevabı bu mu?) Neden mtab bazen diyor /dev/root(ve bence bunun dediğini görmüş olabilirim)rootdevbir kez) gerçek cihaz düğümü yerine ve her zaman gerçek cihaz düğümü demesini nasıl sağlayabilirim? Çekirdek İlk bağlar aşağıdaki kök aygıt rootcmdline parametre, daha sonra init/systemdyeniden bağlar bu göre fstab, doğru mu? Eğer öyleyse, o zaman initsürdürdüğünü varsayıyorum mtab. Teorim doğruysa, initgerçek kök aygıt düğümünü nasıl yazabilirim mtab? Bunun /etc/mtabaslında sembolik bir bağlantı olduğunu fark ettim /proc/mounts, bu mtabçekirdek tarafından korunur. Peki nasıl yerine kök cihazları düğüm yolu olduğunu söyleyerek, bir çekirdek yama / yapılandırabilirim /dev/root, gelmiş mtabgerçek cihaz düğümü içeriyor?

Yanıtlar:


4

Bu genellikle bir initramfs kullanımının bir eseridir.

Çekirdek belgelerinden ( https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt )

Rootfs nedir?

Rootfs, her zaman 2.6 sistemde bulunan özel bir ramfs örneğidir (veya etkinleştirilmişse tmpfs). İnis sürecini öldürememenizle aynı sebepten dolayı root dosyalarının bağlantısını kesemezsiniz; boş bir listeyi denetlemek ve işlemek için özel bir kod kullanmak yerine, çekirdeğin belirli listelerin boş olamayacağından emin olması daha küçük ve basittir.

Çoğu sistem başka bir dosya sistemini root dosyalarına bağlar ve yok sayar. Boş bir ramfs örneğinin kapladığı alan çok azdır.

Bu rootfs, initramfs için oluşturulan ve sökülemeyen kök dosya sistemidir.

Bununla ilgili olarak /dev/root, bundan daha az eminim, ancak /dev/rootbir initrd (initramfs ile aynı değil) kullanılırken doğru bir şekilde hatırlanırsam yaratılır.


mountBu kurulum ilerootfs on / type rootfs (rw) initrd ve /dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)ext2 sabit diskini verir .
Ciro Santilli 法轮功 at 审查 六四 事件 法轮功

/dev/rootinitramfların bazı uygulamaları tarafından kullanılır, ancak diğerleri tarafından kullanılmaz - bu durumlarda çekirdekten kaynaklanmaz. Ne zaman değil bir initramfs kullanarak, çekirdek tarafından kullanılan bir yer tutucu değer gibi görünüyor. (Belki daha sonraki bazı çekirdek sürümlerinde kaldırılabilir). stackoverflow.com/questions/37310046/…
sourcejedi


2

Linux'ta, /dev/rootvarsa, önyükleme sırasında oluşturulan gerçek aygıtın bir sembolik bağlantısıdır.

Ya kullanımı readlink /dev/rootveya cat /proc/cmdlinegörmek rootçizmeli çekirdeğin parametresini ve böylece arkasında gerçek cihazı bulmak.

Adamdan dracut(8)

Ancak, başarılı bir önyüklemeye devam etmek için amaç kök biriminizi bulmak ve dosya sistemine işaret eden bir symlink / dev / root oluşturmaktır.


/dev/rootRedHat tabanlı dağılımların bir artefaktı olup olmadığından tamamen emin değilim .
Rui F Ribeiro

Debian 8'im yok /dev/root/. Eski bir CentOS'ta, bir sembolik bağlantı yerine gerçek bir cihaz düğümü gibi görünüyor.
ilkkachu

1
Eh, OpenEmbedded en base-filestarifi enfstab bahseder /dev/rooto bunu kullanıyor Red Hat sadece dağıtımlar kaynak değildir, bu yüzden.
ack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.