İnitrd hakkında bir şeyler öğrenmeye çalışıyorum. Ben takip ettim bu öğretici sıfırdan kendi initrd'i inşa etmek, ve bunu üzerine busybox yüklü. Sonra isolinux ile bir .iso yaptım, böylece sanal kutuda test edebilirim. Harika çalışıyor!
Meşgul kutusundan temel komutları var, bu yüzden bir dosya sistemi bağlamak istedim. Ancak öğreticiyi izlerken oluşturduğum bazı dosyalar dışında / dev dizini neredeyse boş (sda yok). Udev'i öğrendim ve bence ihtiyacım olan şey bu. Ancak bunu nasıl yapacağımdan emin değilim.
Sadece udev en son kaynak kodunu almak, derlemek ve benim initrd eklemek gerekir? Ve sonra init betiğimde / bin / udev ya da buna benzer bir şey mi çağırıyorsunuz? Veya / dev dizinini doldurmanın başka bir / daha iyi yolu var mı?
Düzenleme: Bazı ek bilgiler ve yaptığım şeylerle ilgili güncellemeler.
- Sanal kutuda her şeyi test ediyorum. Sanal kutuya ubuntu minimal yükledim, initrd'imden bir .iso yaptım ve sonra sanal kutudaki iso'dan önyükleme yaptım.
- Vmlinuz'u kullandım ve
/lib/modules
bir debian-businesscard.iso'da mevcuttum ve bunları daha önce bağladığım öğreticiyi izleyerek oluşturduğum initrd'e kopyaladım. - Çekirdek
CONFIG_DEVTMPFS=y
- Bazı cihazlar
/dev
tty0-tty63 ve diğerleri gibi görünür, ancak sda / hda yoktur. - Ran
lspci -k
benim şu anda çalışan OS ve sanal bir kutuda, kullanılmakta olan modülleri kontrol etmek. modül olarakSATA Controller
kullandığını söylüyorahci
. - Ben yürüttüğümde
modprobe -v ahci
"bilinmeyen sembolü: ata_some_stuff" hakkında çok şikayet, ama bundan sonraSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
ve gibi bir şey döndürürDirect-Access ATA VBOX HARDDISK
. Ancak, içinde hala sabit disk aygıtı bulunamadı/dev
.
Mevcut /init/
betiğim şöyledir:
#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login
Ne yaptığımı ve bunun yerine ne yapmam gerektiğini bilen var mı?