initramfs (2)

とりあえず sid な vmware の中で色々確認とゆー事で。

展開

SD 新年号の記事によれば 2.6 系の kernel だと cpio 方式の initrd である initramfs が云々との記載がある。とりあえず /boot の中にあるソレを展開してみた。

$ mkdir ~/initrd
$ cd /boot
$ zcat initrd.img-2.6.26-1-686 | (cd ~/initrd; cpio -iuvmd)
(出力略
$ cd ~/initrd
$ ls
bin  conf  etc  init  lib  sbin  scripts
$

cpio って昔からある目的にしか使ったコトない。http://d.hatena.ne.jp/yamanetoshi/20060823/ にあるようなソレ。スデに -pdum なオプションが何を意味するかも忘却のカナタ。man から上記の -iuvmd のナニを以下に列挙

  • -i, --extract は_コピーインモードで走行します_とある
  • -u, --unconditional は_全てのファイル上書き_との事
  • -v, --verbose はファイル名出力ですな
  • -m, --preserve-modification-time は_コピー元のファイルの更新時刻を保持します_との事
  • -d, --make-directories は_必要に応じてディレクトリを作成します_とある

コピーインモードって微妙な理解ですが、そんなモノだろう、と意味不明な納得。

とりあえず

init を眺めてみたんですが微妙なんで SD のサンプルを試してみる事に。

# pwd
/root
# mkdir initrd-busybox
# cd initrd-busybox
# mkdir bin proc
# cd bin
# cp /bin/busybox ./bin
# ln -s ./busybox ./msh
# cd ..
# cat > ./init
#!/bin/msh

/bin/busybox mount -t proc proc /proc
exec /bin/msh
# cd ..
# (cd initrd-busybox; find .| cpio -ocv) | gzip -9 > initrd-busybox.img
# cp initrd-busybox.img /boot
# reboot

で、grub で /boot/initrd-busybox.img を選択したら kernel panic しました。しかも /var/log/messages に情報が残ってない。リトライしてみたらメセジは以下 (いっちゃんケツのみ

[    2.223340] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

むーん。initrd だけじゃ駄目ッスか?
なんか冬休み中どハマリな予感が ...