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)
2、NAND 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,注意不要改軟連結屬性。
4、uboot中的更改
在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