Linux可以将根文件系统编译进内核,称作initramfs。加载内核的时候,真实的内核和根文件系统都加载到内存。这在嵌入式系统中非常普遍,我们通常制作一个最小根文件系统initramfs,并把他编译进内核。而把其他的内容制作成其他的文件系统,系统启动时再挂载到根文件系统的某个根目录下。initramfs另外一个好处是,其可以和内核一起加载到内存,方便早期的调试。由于在内存中,所以一般只需要实现中断,时钟和串口就可以正常启动系统。
本文基于EasyLinux平台移植Linux系统到GT2440开发板上,EasyLinux平台是基于Buildroot定制的编译系统,详情可以参见《嵌入式Linux编译系统的设计》一文,我的内核版本为Linux3.18.6。
首先进行package的配置,在buildroot目录下:
make O=build/gt2440 menuconfig
选中cpio和initial ram filesystem linked into linux kernel。可以在cpio中定制根文件系统,这里暂不说明如何定制文件系统,只讲解如何制作一个initramfs。
然后配置内核:
make O