İnitramfs neden kök dosya sistemini salt okunur olarak bağlar?


12

Kök dosya sisteminin roinitramfs (ve initrd) içine monte edilmesinin nedeni nedir ?

Örneğin, Gentoo initramfs kılavuzu kök dosya sistemini aşağıdakilere bağlar:

mount -o ro /dev/sda1 /mnt/root

Neden aşağıdakiler olmasın?

mount -o rw /dev/sda1 /mnt/root

Muhtemelen iyi bir neden olduğunu görebilirim (ve muhtemelen içerir switchroot), ancak hiçbir yerde belgelenmemiş gibi görünüyor.

Yanıtlar:


19

İlk ramdisk (initrd'yi) tipik olarak bu önyükleme kapalı yatan temel dosya sistemi ve el monte etmek için gerekli olan sadece ihtiva eden bir kök dosya sisteminin sadeleştirilmiş bir versiyonudur.

İnitrd var çünkü modern sistemlerde, önyükleme yükleyicisi kök dosya sistemini güvenilir bir şekilde bulmak için yeterince akıllı hale getirilemez. Önyükleme yükleyicisi gibi küçük bir program için çok fazla olasılık vardır. NFS kökü, standart olmayan RAID kartları vb. Göz önünde bulundurun. Önyükleme yükleyicisinin işini yalnızca BIOS artı önyükleme sektörüne sıkıştırabilecek her türlü kodu kullanarak yapması gerekir.

İnitrd önyükleyici bir yere depolanır olabilir bulmak ve onu alır alanı ekstra bit genellikle kimseyi rahatsız etmediğini küçük yeter. (Küçük gömülü sistemlerde genellikle "gerçek" bir kök yoktur, sadece initrd.)

İnitrd değerlidir: içeriği her koşulda korunmalıdır, çünkü initrd bozulursa sistem önyükleme yapamaz. Tasarımcılarının bunu sağlamak için yaptıkları bir tasarım seçeneği, önyükleyicinin initrd'i salt okunur yüklemesini sağlamaktır. Bu doğru iş de böyle hayır "gerçek" kök yoktur küçük sistemlerde durumunda olduğu gibi yine ayrı monte diğer ilkeler vardır /tmp, /var/cachebir şeyler saklamak için ve bu tür. Initrd'ın değiştirilmesi sadece nadiren yapılır ve daha sonra çok dikkatli bir şekilde yapılmalıdır.

Oradaki normal duruma geri alınıyor olan gerçek bir kök dosya sistemi, başlangıçta salt okunur olarak eklendi olduğu initrd'yi çünkü. Daha sonra, aynı nedenlerle mümkün olduğu kadar salt okunur tutulur. Gerçek kök için yapılması gereken herhangi bir yazı, sistem önyükleninceye kadar, tercihe göre veya en azından bu tercih tatmin edilemediğinde önyükleme işleminin sonlarına kadar ertelenir.

Bu salt okunur aşamada gerçekleşen en önemli şey, kök dosya sisteminin temiz bir şekilde kaldırılıp kaldırılmadığını görmek için kontrol edilmesidir. Bu önyükleyici kesinlikle yerine initrd'ye bunu bırakmanın yapabileceği bir şeydir, ancak kök dosya sistemi ise o zaman ne olur değildi ayrılınca temiz? Sonra fsckkontrol ve muhtemelen düzeltmek için çağırmak gerekir. Peki, nerede olacağını initrdolsun fsckyerine "gerçek" köküne atlatma kadar bekleyen bu adımı için sorumlu olsaydı? Sen kopyalamak gerektiğini söyleyebiliriz fsckiçine initrdbunu oluştururken, ama şimdi daha büyük. Üstelik hangisini fsck kopyalayacaksınız? Linux sistemleri düzenli olarak bir düzine kadar farklı dosya sistemi kullanır. Sadece gerçek kök için gerekli olanı kopyalar mısınız?initrdyaratıldı? Kök dosya sisteminin daha sonra başka bir dosya sistemi türüne taşınması ve birisinin initrd'i yeniden oluşturmayı unutması durumunda, initrdmevcut tüm fsck.fooprogramları kopyalayarak boyutunu balonluyor musunuz?

Linux önyükleme sistemi mimarları, initrd'e bu sorunlara yük getirmemeyi akıllıca seçti. Bunu yapmak için initrd'den daha iyi bir konumda olduğundan, gerçek kök dosya sisteminin kontrolünü gerçek kök dosya sistemine devretti.

Önyükleme işlemi güvenli olacağı kadar ilerlediğinde, initrd ile gerçek kökün altından pivot_root(8)çıkarılır ve dosya sistemi okuma-yazma modunda yeniden monte edilir.


4
İnitramfs salt okunur olarak monte edilmemiştir; çekirdek / olarak monte edilmiş bir okuma / yazma tmpfs içine açar. Ayrıca pivot_root () şu anda amortismana tabi tutulan initrd'de kullanılır, ancak çoğu sistemin bu günlerde kullandığı bir initramfs değil (dosya hala initrd olarak adlandırılmış olsa da). İnitrd ile, pivot_root / sbin / init yürütülmeden önce gerçekleşti. Bir initramfs ile, initramfs içindeki tüm dosyaları siler, daha sonra gerçek kökü içine alır ve / sbin / init komutunu çalıştırır.
psusi

0

Çünkü önyükleme sırasında kök dosya sistemi her zaman başlangıçta salt okunur olarak monte edilir. Çeşitli öz sınamalar tamamlandığında, kök dosya sistemini okuma / yazma olarak yeniden monte eder ve diğer dosya sistemlerini monte etmeye başlar.


0

Düşünebilmemin bir nedeni, bir tür yolsuzluğu önlemektir. Örneğin, ext4 dosya sistemini ext2 olarak bağlayabilirsiniz (ya da tam tersi) ve bu ro modunda güvenlidir, ancak rw initram'dan bağlanırsa uyumsuz biçim değişikliklerine neden olabilir.

Oh, ve başka bir neden daha var: initramfs muhtemelen fsck'e sahip değildir, ancak rw'yi monte etmeden önce dosya sistemini kontrol etmeniz gerekebilir.

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.