2.6 kernel 下有新式的 Initrd 作法,目前看到Fedora 下Initrd 都是用這種
- 製作
bash# find . | cpio -c -o > ../initrd.img
bash# gzip ../initrd.img - 解開
cd /tmp/imagefile
gzip -cd /boot/imagefile.img | cpio -imd --quiet
- 製作
bash# dd if=/dev/zero of=../initrd.img bs=512k count=5
bash# mkfs.ext2 -F -m0 ../initrd.img
bash# mount -t ext2 -o loop ../initrd.img /mnt
bash# cp -r * /mnt
bash# umount /mnt
bash# gzip -9 ../initrd.img - 解開
mount -t ext2 -o loop ../initrd.img /mnt
- Fedora 裡面的initrd.img 解開後看到的init 裡面用的sh 是 /bin/nash,如果系統是自己包的這個要注意。
- /init 跟/linuxrc 的問題:
cpio 的做法會去找 /init. 沒有這個檔就會出一堆怪問題,root fs type 錯,找不到root 之類的.要確定 init 的權限、內容。 舊式的會先跑 /linuxrc 不過這要看kernel內有沒改過,追kernel才比較清楚. - 至於 kernel parameter 可以不用傳 root=/dev/ram0 可以省略了.
- busybox build 完記得 ldd busybox,缺的Library 要放入/lib,不然就是用uClibc build成static。
沒有留言:
張貼留言