1. 程式人生 > >linux使用initramfs、initrd、Flash檔案系統時核心分別的編譯配置

linux使用initramfs、initrd、Flash檔案系統時核心分別的編譯配置

a,使用initramfs(initialize ram filesystem)的核心配置(使用initramfs做根檔案系統):

General setup —>
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/rootfs_dir) Initramfs source file(s) //輸入根檔案系統的所在目錄[根檔案系統需預先做好,製作方法與一般的檔案系統相同]

使用initramfs的核心啟動引數
不需要”initrd=”和”root=”引數,但是必須在initramfs中建立/init檔案或者修改核心啟動最後程式碼(init檔案是軟連線,指向什麼? init -> bin/busybox,否則核心啟動將會失敗)

連結入核心的initramfs檔案在linux-2.6.24/usr/initramfs_data.cpio.gz

引數例項:
bootargs=console=ttySAC0,115200n8 console=tty1
bootcmd=ext4load mmc 0:1 0x48000000 boot/Image; ext4load mmc 0:1 0x4a000000 boot/s5p6818-nanopi-m3.dtb; booti 0x48000000 - 0x4a000000

b,使用initrd(initialize ram disk)的核心配置(使用網口將根檔案系統下載到RAM – tftp addr ramdisk.gz):

  1. 配置initrd
    General setup —>
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
    () Initramfs source file(s) //清空根檔案系統的目錄配置

使用 initrd的內 核啟動引數:
initrd=addr,0x400000 root=/dev/ram0 rw
注:
(1) addr是根檔案系統的下載地址;
(2) 0x400000是根檔案系統的大小,該大小需要和核心配置的ramdisk size 4096 kbytes相一致;
(3) /dev/ram0是ramdisk的裝置節點,rw表示根檔案系統可讀、可寫;

引數例項:
bootargs=console=ttySAC0,115200n8 initrd=0x49000000,0x400000 root=/dev/mmcblk1p1 console=tty1
bootcmd=ext4load mmc 0:1 0x48000000 boot/Image; mw 0x49000000 0 0x400000; ext4load mmc 0:1 0x49000000 boot/initrd.img; ext4load mmc 0:1 0x4a000000 boot/s5p6818-nanopi-m3.dtb; booti 0x48000000 - 0x4a000000

c,根檔案系統存放在FLASH分割槽:

  1. 核心啟動引數不需要”initrd=”(也可以寫成”noinitrd”);
    root=/dev/mtdblock2 (/dev/mtdblock2 – 根檔案系統所燒寫的FLASH分割槽)

  2. 核心配置不需要ram disk;也不需要配置initramfs或者initrd
    [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support

引數例項:
bootargs=console=ttySAC0,115200n8 noinitrd root=/dev/mmcblk1p1 rw init=/linuxrc console=tty1
bootcmd=ext4load mmc 0:1 0x48000000 boot/Image; ext4load mmc 0:1 0x4a000000 boot/s5p6818-nanopi-m3.dtb; booti 0x48000000 - 0x4a000000