星期四, 11月 06, 2008

Initrd

Initrd 筆記:

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
Questions:
  • 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。
Reference:

沒有留言: