Próbuję dowiedzieć się czegoś o initrd. Postępowałem zgodnie z tym samouczkiem, aby zbudować własny initrd od zera, i zainstalowałem na nim busyboksa. Następnie zrobiłem .iso z niego za pomocą isolinux, aby móc przetestować go w virtualbox. Działa świetnie!
Mam podstawowe polecenia z busybox, więc chciałem zamontować system plików. Ale katalog / dev jest prawie pusty (bez sda), z wyjątkiem niektórych plików, które utworzyłem podczas korzystania z samouczka. Dowiedziałem się o udev i myślę, że tego właśnie potrzebuję. Nie jestem jednak pewien, jak to zrobić.
Czy powinienem po prostu pobrać najnowszy kod źródłowy z udev, skompilować go i dodać do mojego initrd? A potem wywołaj / bin / udev czy coś takiego w moim skrypcie init? Czy jest inny / lepszy sposób na zapełnienie katalogu / dev?
Edycja: Kilka dodatkowych informacji i aktualizacji na temat tego, co już zrobiłem.
- Testuję wszystko w wirtualnym pudełku. Właśnie zainstalowałem ubuntu minimal w wirtualnym pudełku, zrobiłem .iso z mojego initrd, a następnie uruchomiłem z iso w virtualbox.
- Użyłem vmlinuz,
/lib/modules
które były obecne na debian-businesscard.iso i skopiowałem je do mojego initrd, który utworzyłem, wykonując samouczek, który wcześniej podłączyłem. - Jądro ma
CONFIG_DEVTMPFS=y
- Niektóre urządzenia pojawiają się w
/dev
, jak tty0-tty63 i niektóre inne, ale nie sda / hda. - Uruchomiłem
lspci -k
w moim obecnie działającym systemie operacyjnym i wirtualnym polu, aby sprawdzić, które moduły są w użyciu.SATA Controller
mówi, że używaahci
jako modułu. - Kiedy
modprobe -v ahci
wykonuję, dużo narzeka na „nieznany symbol: ata_some_stuff”, ale potem zwraca coś w styluSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
iDirect-Access ATA VBOX HARDDISK
. Jednak nadal nie znaleziono urządzeń na dysku twardym/dev
.
Mój obecny /init/
skrypt wygląda następująco:
#!/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
Czy ktoś ma pojęcie, co robię źle i co powinienem robić zamiast tego?