嵌入式linux内核与根文件系统制作

时间:2021-09-28 00:22:48

制作嵌入式平台使用的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这个文件。