1. 程式人生 > >linux根檔案系統與核心合二為一

linux根檔案系統與核心合二為一

《ARM Linux開發-warewin 2G/3G無線傳輸(DTU)和路由器—筆記》

硬體平臺 :AT91SAM9260

核心版本:Linux-2.6.36

核心檔案和根檔案系統在Flash中一起壓縮放置可節省大量的Flash儲存空間,也便於韌體的存檔和升級,把根檔案系統放到核心中一起壓縮如以下步驟:

1、配置核心

#make menuconfig

在以下選擇項中填入已經做好的根檔案系統資料夾的路徑,例如:把根檔案系統放到核心的/linux-2.6.36/rootfs/root6200目錄下,則填入以下紅色字型資訊:

General setup  ---> 

    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

    (/rootfs/root6200) Initramfs source file(s) 

2NAND flash中的分割槽重新規劃

由於原先核心和根檔案系統不在同一分割槽內,現在需要重新分割槽,把核心和根檔案系統分到一個區,在linux-2.6.36/arch/arm/mach-at91/board-at91sam9260ek.c檔案的static struct mtd_partition __initdata ek_nand_partition[]結構中根據情況重新分割槽,例如:

0x00000000-0x00080000 : "Boot"

0x00080000-0x000a0000 : "Param1"

0x000a0000-0x008a0000 : "Kernel&Rootfs"

0x008a0000-0x00ca0000 : "Param2"

0x00ca0000-0x014a0000 : "proc"

0x014a0000-0x024a0000 : "data"

0x024a0000-0x10000000 : "UserDisk" 

3、更改初始化程式

在根檔案系統資料夾中將linuxrc 改名為init,注意不要改軟連結屬性。

4uboot中的更改

在NAND flash的分割槽中把核心和根檔案系統分到0x000a0000-0x008a0000區域,把/u-boot-1.3.4/include/configs/at91sam9260.h#define CONFIG_BOOTCOMMAND巨集定義的值設定為“nand read 0x20400000 0xA0000 0x500000; bootm 20400000”。

5、除錯

重新編譯核心和uboot

,重新燒寫uboot,根據分割槽和uboot中的設定將核心重新燒寫到0xa0000,執行系統檢視是否執行正常。