initrd 及 initramfs

Linux boot時需要rootfs。而rootfs可以是實體的儲存裝置,也可以是ram disk。

本文要簡介的就是使用initramfs來當rootfs。

initramfs會和kernel結合成一個單一的Image。最大的好處是可和kernel一起被載入,在開發的初期是相當方便。

使用方法如下:
1.  修改 ramdisk相關的設定
2. 修改.config檔案中設定
    CONFIG_BLK_DEV_INITRD=y
    CONFIG_INITRAMFS_SOURCE="XXXX"
3. 移除boot args中 root=xxx 或是 initrd=$phy_addr,$phy_size 參數。若不移除會造成錯誤,因為linker script中已定義section來存放ramdisk。在無設定的情況下,系統會去reference ramdisk的位置資訊。如果反覆設定會造成系統錯誤,無法init ramdisk。

更詳細的內容分析有空再放上來。


留言

熱門文章