initrd は古い。initramfs を使うべき。
使うには
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="/mnt/small_ramdisk"
とする。
microblaze では
CONFIG_INITRAMFS_NO_CHECK=y
としたほうがいいかも。
early_printk_console is enabled at 0x50002000 Ramdisk addr 0x00004b7b, Compiled-in FDT at 0x101128b0
となって立ち上がらなかった。(遅いだけ?)
次のは使っちゃダメ。 (使えるけど古い、、、)
linux,initrd-start = <0x18000000>; linux,initrd-end = <0x180459d6>;
Linux の make 時には CONFIG_INITRAMFS_SOURCE で指定された個所をソースとして cpio + gz をつくる。結果は usr/initramfs_data.cpio.gz となる。これが .init.ramfs セクションに自動的に配置される。
initramfs がありそれが cpio だとカーネルはデバッグモード?にはいり /init を実行する。initramfs に /init がないとパニックになるので注意。
/init はなんかをマウントして initramfs のファイルを消して chroot して /sbin/init を実行すべき(klib にそのものがある。busybox もサポートしているらしい)
initramfs が cpio でなく、かつ RAM ディスクが設定されていると initrd_start をみて RAM ディスクにしようとする。ただし、initrd_start は推奨されていない。initrd_start なければなにもしない、、、。あれば initrd_start から/initrd.imageをつくる。のちにこれが RAM ディスクになる。