Tôi đang cố gắng học những thứ về initrd. Tôi đã làm theo hướng dẫn này để xây dựng initrd của riêng tôi từ đầu và tôi đã cài đặt busybox trên đó. Sau đó, tôi đã tạo một .iso từ nó bằng isolinux, vì vậy tôi có thể kiểm tra nó trong hộp ảo. Nó hoạt động rất tốt!
Tôi có các lệnh cơ bản từ busybox, vì vậy tôi muốn gắn kết một hệ thống tập tin. Nhưng thư mục / dev gần như trống rỗng (không có sda), ngoại trừ một số tệp tôi đã tạo trong khi làm theo hướng dẫn. Tôi đã học về udev và tôi nghĩ đây là thứ tôi cần. Tuy nhiên tôi không chắc làm thế nào để tiếp tục điều này.
Tôi có nên lấy mã nguồn mới nhất từ udev, biên dịch nó và thêm nó vào initrd của tôi không? Và sau đó gọi / bin / udev hoặc một cái gì đó tương tự trong tập lệnh init của tôi? Hoặc có một cách khác / tốt hơn để điền vào thư mục / dev?
Chỉnh sửa: Một số thông tin và cập nhật bổ sung về những gì tôi đã làm.
- Tôi kiểm tra mọi thứ trong hộp ảo. Tôi vừa cài đặt tối thiểu Ubuntu trong hộp ảo, tạo một .iso từ initrd của tôi và sau đó khởi động từ iso trong hộp ảo.
- Tôi đã sử dụng vmlinuz và
/lib/modules
đã có mặt trên debian-businesscard.iso và sao chép chúng vào initrd mà tôi đã tạo bằng cách làm theo hướng dẫn mà tôi đã liên kết trước đó. - Hạt nhân có
CONFIG_DEVTMPFS=y
- Một số thiết bị hiển thị trong
/dev
, như tty0-tty63 và một số thiết bị khác, nhưng không có sda / hda. - Chạy
lspci -k
trong hệ điều hành hiện đang chạy của tôi và trong một hộp ảo để kiểm tra các mô-đun đang sử dụng.SATA Controller
nói rằng nó sử dụngahci
như mô-đun. - Khi tôi thực thi,
modprobe -v ahci
nó phàn nàn rất nhiều về "biểu tượng không xác định: ata_some_ ware", nhưng sau đó nó trả về một cái gì đó nhưSCSI Subsystem initialized
,ATA-6: VBOX HARDDISK
vàDirect-Access ATA VBOX HARDDISK
. Tuy nhiên, vẫn không có thiết bị ổ cứng nào được tìm thấy trong/dev
.
/init/
Kịch bản hiện tại của tôi là như sau:
#!/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
Có ai có ý tưởng gì về những gì tôi đang làm sai và thay vào đó tôi nên làm gì không?