linux根文件系统与内核合二为一

时间:2022-06-30 16:29:04


《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,运行系统查看是否运行正常。