İnitramfs / etc / fstab kullanıyor mu?


20

Anladığım gibi, initramfs "gerçek" kök dosya sistemini yüklemekle sorumludur.

Şimdi, bu kökü tanımladığımız iki yer var. Önce içeri girdik /etc/fstab. İkinci olarak, cihazı çekirdek önyükleme komutlarına koyduk root=/dev/sda1.

İnitramfs kök dosya sisteminin nerede olduğunu belirlemek için hangisini kullanır? Kök çekirdek parametresini kullanıyorsa, neden bir girişimiz var /etc/fstab? İkinci seçenek, (okur /etc/fstab) oldukça mantıksızdır, çünkü /etc/fstabdosya initramfs'ın en başta monte etmeye çalıştığı kök cihazdadır.

Çok kafa karıştırıcı şeyler.

Yanıtlar:


15

Belirttiğiniz gibi, initramfs'ın amacı "gerçek" kök dosya sistemini monte etmektir (başka şeyler de yapabilir, ancak bu ortak görevdir).

Initramfs olmadan, çekirdek normalde bir bölümü salt okunur olarak bağlar ve ardından kontrolü üzerine geçirir /sbin/init. Bir initramfs, genellikle kök dosya sistemi normal bir bölüm olmadığında (mdraid, lvm, şifreli, vb.) Bu görevi çekirdekten alır.

Şimdi, initramfs üzerindeki arka plan dışında, /etc/fstabkök dosya sisteminizde bulunur. Bu nedenle, initramfs başlatıldığında, bu kök dosya sistemi orada değildir ve bu nedenle fstab'a (tavuk ve yumurta sorunu) ulaşamaz.
Bunun yerine, initramf'lerin kullanması için çekirdek önyükleme bağımsız değişkenlerine bir parametre iletmemiz gerekir. Normalde böyle bir şeydir root=/dev/sdX. Bununla birlikte, kök cihazınızın nerede olduğunu otomatik olarak anlamak için bir şeyler yapabilir ve bu nedenle hiç parametre yoktur. Sadece yazılım (genellikle bir komut dosyası) olduğundan, kök cihazı monte etmek için gerçekten istediği her şeyi yapabilir.

Şimdi, daha önce de belirtildiği gibi, çekirdek gerçek kökü salt okunur olarak bağlayacaktır. Initramfs tam olarak bunu yapmalıdır. Initramfs tamamlandığında, sistem sanki hiç initramf yokmuş gibi önyüklemeye devam eder ve /sbin/initbaşlar. Bu init daha sonra tüm normal önyükleme komut dosyalarınızı başlatır ve bu komut dosyalarından birinin görevi, /etc/fstabokuma-yazmaya kök değiştirme ve diğer tüm dosya sistemlerinizi bağlama işidir .


Yani, gerçek kök dosya sistemi içindeki / sbin / init 'in / etc / fstab?
Ahmed Ghonim

3
Evet. Genellikle basit mount -o remount,rw /. Takılı aygıtı değiştirmez, ancak bağdaki seçenekleri değiştirir. Adam sayfasından:After this call mount reads fstab (or mtab) and merges these options with options from command line
Patrick

Grub2 komut satırını kullanırsak, çekirdek önyükleme bağımsız değişkenlerine nasıl bir parametre iletiriz? Sistemim grub menüsünü herhangi bir nedenle göstermiyor.
intuited

@intuited Yeni bir soru sormalısınız. Yorumlar Soru-Cevap için değil
Patrick

lsinitramfs /boot/initrd* | fgrep fstabve sürpriz, initramfs en azından benim için fstab dosyası içeriyor.
youfu

2

Olabilir ya da olmayabilir. Initramfs çeşitli şekillerde inşa edilebildiğinden (çekirdek sadece onu yükler ve /initne yaparsa yapar). Bununla birlikte, daha fazla esnekliğe izin verdiği için bir parametre kullanmak daha yaygındır - yani bir şey değişirse, önyükleme girdisini düzenleyebilirsiniz ve işler çalışmaya devam eder. Yerleşik bir sabit kodlanmış kök ile bu mümkün olmayabilir.

Fstab girdisi, bağlama seçenekleri (bazıları hareket halindeyken değiştirilebilir) ve fscksipariş gibi diğer şeyleri de belirlediğinden, her iki şekilde de gerekli olabilir . Ayrıca tamamen gereksiz olsa bile (ve Initramfs bunu halletseydi, onsuz çalışabilir), yine de sadece tamlık uğruna girişini orada tutardım.


1

/ Etc / fstab öğesini statik bağlama olarak düşünebilirsiniz, bu böyle bir görevi gerçekleştirmenin sadece bir yoludur, ancak aslında komut mount'unu çalıştırmakla kalmaz ve fstab'da eksik olan birçok dosya sistemini görürsünüz. Hizmet böyle bir udev ve udisk / etc / fstab dosyasını göz ardı ederek "automounting" çok yönetmek ...

Yani, bir şey monte edilirse veya sık sık değilse / etc / fstab ile ilgisi yoktur.

initramfs "true" rootfs yüklenene kadar önyükleme işlemi sırasında kullanılan geçici bir rootfs, neden initramfs / etc / fstab üzerinde olmalıdır?

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.