《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,重新烧写uboot,根据分区和uboot中的设置将内核重新烧写到0xa0000处,运行系统查看是否运行正常。