Saya mencoba mempelajari hal-hal tentang initrd. Saya telah mengikuti tutorial ini untuk membangun initrd saya sendiri dari awal, dan saya menginstal busybox di atasnya. Lalu saya membuat iso dari itu dengan isolinux, jadi saya bisa mengujinya di virtualbox. Ini sangat bagus!
Saya memiliki perintah dasar dari busybox, jadi saya ingin me-mount sistem file. Tetapi direktori / dev hampir kosong (tidak ada sda), kecuali untuk beberapa file yang saya buat saat mengikuti tutorial. Saya belajar tentang udev dan saya pikir inilah yang saya butuhkan. Namun saya tidak yakin bagaimana melanjutkan ini.
Haruskah saya mengambil kode sumber terbaru dari udev, kompilasi dan tambahkan ke initrd saya? Dan kemudian memanggil / bin / udev atau sesuatu seperti itu di skrip init saya? Atau adakah cara lain yang lebih baik untuk mengisi direktori / dev?
Sunting: Beberapa info tambahan dan pembaruan tentang apa yang telah saya lakukan.
- Saya menguji semuanya dalam kotak virtual. Saya baru saja menginstal minimal ubuntu di kotak virtual, membuat iso dari initrd saya, dan kemudian boot dari iso di virtualbox.
- Saya menggunakan vmlinuz dan
/lib/modules
yang ada pada debian-businesscard.iso dan menyalinnya ke initrd saya yang saya buat dengan mengikuti tutorial yang saya tautkan sebelumnya. - Kernel telah
CONFIG_DEVTMPFS=y
- Beberapa perangkat muncul
/dev
, seperti tty0-tty63 dan beberapa lainnya, tetapi tidak ada sda / hda. - Berlari
lspci -k
di OS saya yang sedang berjalan dan di kotak virtual untuk memeriksa modul mana yang digunakan.SATA Controller
mengatakan itu digunakanahci
sebagai modul. - Ketika saya menjalankannya
modprobe -v ahci
banyak mengeluh tentang "simbol tidak dikenal: ata_some_stuff", tetapi setelah itu mengembalikan sesuatu sepertiSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
danDirect-Access ATA VBOX HARDDISK
. Namun, masih belum ada perangkat harddisk yang ditemukan di/dev
.
/init/
Script saya saat ini adalah sebagai berikut:
#!/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
Adakah yang tahu kesalahan saya dan apa yang seharusnya saya lakukan?