制作嵌入式平台使用的linux内核,方法和制作pc平台的linux内核基本一致,下面使用对比的方法介绍如何制作用于mini2440开发板的内核。
1--清除原有配置和中间文件
x86-make distclean
arm-make distclean
2--配置内核
x86-make menuconfig
arm-make menuconfig ARCH=arm
nfs与ramdisk启动区别,选择不同的配置选项
nfs---nfs client support
---root file system on nfs
3--编译内核
x86-make bzImage
arm-make uImage ARCH=arm CROSS_COMPILE=arm-linux-
根文件系统----是linux启动时使用的第一个文件系统。没有根文件系统,linux将无法正常启动。根文件系统由一系列目录组成,目录中包含了应用程序,c库,以及相关的配置文件。
制作----
1--创建根文件系统目录
2--创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
3--安装/etc
tar etc.tar.gz -C /xxx/rootfs
4--编译内核模块
进入linux内核目录
make modules ARCH=arm CROSS_COMPILE=arm-linux-
编译好的内核模块在内核源代码相应目录,下面的安装是将其拷贝到根文件系统/xxx/rootfs
5--安装内核模块
make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs
6--配置busybox---进入busybox目录执行make menuconfig
--busybox setting---build options---build busybox as a static binary静态链接
---cross compiler prefix(arm-linux-)
--installation options--
选中do not use/usr. 选中该项,可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统。
----busybox installation prefix(/xxx/rootfs)
该选项表明编译后的busybox的安装位置。
7--编译,安装busybox
make ARCH=arm CROSS_COMPILE=arm-linux-
编译后,在当前目录下有个busybox 可执行文件
make install
安装后,根文件系统下bin目录下有很多命令,都是链接文件,都链接到busybox。
根文件系统下sbin下也有很多,但坚持有Init否。内核启动最后,会从内核转到用户空间,会找init这个文件。