RAM'de rootfs ile nasıl Linux önyükleme yapabilirim?


16

Rootfs bir squashfs görüntüsüdür ve önyükleyicim SDRAM'deki bazı adreslere yüklüyor. Kökleri oradan monte edebilmek için çekirdeğe hangi parametreleri iletmem gerekir? Squashfs desteği yerleşiktir ve zaten ile çalışır

root=/dev/mtdblock2 rootfstype=squashfs  

flaş önyükleme için.

EDIT: Bu, özel bir önyükleyici kullanan MIPS tabanlı bir yerleşik aygıttır. Normalde, önyükleyici sıkıştırılmış çekirdeği flaştan SDRAM'a çıkarır ve ardından çekirdek / root / mtdblock2'yi rootfs olarak bağlar. Önyükleyiciyi geliştirmeye çalışıyorum, böylece bir görüntüyü RAM'e indirebilir ve flaş yazmadan önyükleyebilir.

Linux'un RAM'de rootfs olarak bir dosya sistemi imajı oluşturmasını nasıl anlayamıyorum.


Squashf'lerin çalıştığını zaten biliyorsanız, lütfen daha iyi açıklayın, ne elde etmeye çalışıyorsunuz. İşe yaradığını nereden biliyorsun? Ne oluyor? Ve en önemlisi, neyi gelmez istediğiniz şekilde çalışır?
rozcietrzewiacz

1
Ayrıca, cihaz hangi önyükleyici kullanıyor?
rozcietrzewiacz

Memdisk'i (SYSLINUX'tan) çekirdek olarak kullanırsanız, tüm görüntüyü belleğe yükler ve ondan önyükleme yapar
golimar

Yanıtlar:


10

Bir initramfs kullanırdım. ( http://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt )

Birçok Linux dağıtımı, önyükleme işlemi sırasında bir initramfs kullanır (bir initrd ile karıştırılmamalıdır, bunlar farklıdır), çoğunlukla kullanıcı alanı programlarını önyükleme işleminin çok erken başlarında başlatabilir. Ancak, istediğiniz her şey için kullanabilirsiniz.

Bir initramfs'ın bir initrd üzerindeki avantajı, initramfs'ın bir tmpfs dosya sistemi kullanması, bir initrd ise ram blok cihazı kullanmasıdır. Buradaki temel fark, bir initrd için, tüm bu alanı kullanmayacak olsanız bile, dosya sistemi için tüm alanı önceden konumlandırmanızdır. Dolayısıyla, dosya sistemi alanını kullanmazsanız, gömülü bir cihazda genellikle nadir bulunan bir kaynak olan koçu boşa harcarsınız. Tmpfs, ram biten bir dosya sistemidir, ancak yalnızca şu anda dosya sisteminde kullanılan kadar ram kullanan bir dosya sistemidir. Eğer bir dosyayı bir tmpfs'den silerseniz, o koç hemen boşaltılır.

Şimdi normalde bir initramfs geçicidir, sadece bazı programları önyükleme işleminde çok erken çalıştırmak için kullanılır. Bu programlar çalıştıktan sonra kontrol, fiziksel diskte çalışan gerçek dosya sistemine dönüştürülür. Ancak, bunu yapmak zorunda değilsiniz. İnitramflerin süresiz olarak bitmesini engelleyen hiçbir şey yoktur.


Bu yüzden aslında "initramfs'den süresiz olarak" çalışan bir sistem kurmaya çalışıyorum. Sistem çoğunlukla açık, ama bazı problemlerim vardı - biraz ışık tutabiliyor musunuz acaba? Soru burada gönderildi
dtmland


0

Kullandığım phrambu amaçla sürücüsü: Bu size daha sonra gerçek flaş yakmak edeceklerini / gelişmeyi test etmek için aynı rootfs görüntüyü kullanmak, yani fiziksel bellek kullanan bir MTD aygıtı benzetilmiştir. Çekirdek komut satırındaki gerekli sihir,

phram.phram=rootfs,0x100000,9Mi root=/dev/mtdblock0 memmap=9M\$100000

memmapÇekirdeğin bu belleği kendisi için kullanmaya çalışmadığından emin olmak için argümana da ihtiyacınız olduğunu unutmayın . 9MB, rootfs'imin ne kadar büyük olduğu (veya ne kadar büyük olduğu). Önyükleyicimde \ before $ gerekli, sizin olmayabilir. Orada seçtiğim adres isteğe bağlı, çünkü cihazınızda fiziksel belleğin nasıl düzenlendiğini bilmiyorum, bu yüzden sizin için anlamlı olan birini seçin. Daha önce tftp veya kök adreslerinizi bu adreste yüklemek için bir şey kullandığınızı varsayıyorum

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.