Sadece çekirdek (v4.1-rc5) ve busybox (v1.23.2) ile doldurulmuş bir initramfs içeren çok az bir Linux sistemi inşa ediyorum. Çoğunlukla iyi çalışıyor, ancak harici bir initramfs mi yoksa harici bir initramfs mi kullanacağım / init içinde komut yürütme davranışında bir fark gözlemliyorum.
/ İnit betiği:
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t sysfs none /sys
mount -t proc none /proc
echo "Welcome"
while true
do
setsid cttyhack /bin/sh
done
Sonra, .config çekirdeğinde CONFIG_INITRAMFS_SOURCE seçeneğini initramfs için tüm klasörleri içeren dizine ayarlıyorum veya çalıştırıyorum
find . | cpio -H newc -o | gzip > ../rootfs.cpio.gz
inşa etmek.
Daha sonra, CONFIG_INITRAMFS_SOURCE ayarlı veya ayarsız çekirdeği derlediğimde, sistemimin iki varyantı ile karşılaşıyorum:
Initramfs gömülü görüntü
bzImage + rootfs.cpio.gz (harici initramfs)
şimdi kullanmaya başladığımda qemu
qemu-system-x86_64 -enable-kvm -kernel bzImage
veya
qemu-system-x86_64 -enable-kvm -kernel bzImage -initrd rootfs.cpio.gz
Aşağıdaki davranış farkını alıyorum:
sürüm 2 (harici initramfs) ile her şey iyi çalışıyor, "Hoş Geldiniz" görüntülenir ve bir istem alırsınız. Ancak sürüm 1 ile (gömülü initramfs) uyarıyı alıyorum
unable to open an initial console
"Hoş Geldiniz" görüntülenmiyor ve istemimi alıyorum.
Süreci anladığım kadarıyla, initramfs'ın bu iki sürümü aynı dosyaları içermelidir, çünkü aynı klasörden oluşturduğumdan (veya çekirdeği oluşturduğumdan).
Acaba kimse bana bu davranış için bir açıklama ile yardımcı olabilir mi?
* GÜNCELLEME *
mikeserv'in yorumlarda belirttiği gibi, Çekirdek varsayılan olarak minimal gömülü initramfs içerir. Harici bir tane kullanırken bu hala mevcuttur, ancak kendiniz gömülürseniz üzerine yazılır. Spesifikasyonun aksine, bu gerçekten boş değil, ama bir dev klasörü, bir kök klasör ve / dev / konsol cihazı içeriyor. Bu cihaz daha sonra harici bir initramfs kullanılırken kullanılır, ancak kendiniz gömülürseniz üzerine yazılır. Bu yüzden mknod -m 622 initramfs_src/dev/console c 5 1
, kendi cihazınızı yerleştirirken initramfs kaynağınıza / dev / console cihazını eklemeniz gerekir.
Mikeserv, frostschutz ve JdeBP'ye kafamı bulamamda yardımcı oldukları için çok teşekkürler!
/dev/console
Yerleşik olanınızda izin verilen izinler nelerdir ? Bence fark , iki durumda ambalajın kim tarafından yapılmasıyla ilgili olabilir .