[4]内核编译与根文件系统制作(国嵌)

时间:2021-07-06 00:34:13

[1]Linux内核编译

前提:

  • 安装完成arm-linux-gcc交叉编译工具链;
  • 准备好Linux源代码(TQ2440已移植好)。

编译:

  • 清除已有配置和中间文件
    make distclean
  • 配置内核
    复制TQ2440的配置文件到.config
    并根据需要修改配置:make menuconfig
  • 编译内核
    make uImage

uImage和zImage的区别:

待续。

[2]Linux根文件系统

根文件系统由一系列目录组成,目录中包含了应用程序、C库、以及相关的配置文件。

  • 创建根文件系统目录结构
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
  • 创建设备文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
cd ..
  • 安装/etc
    /etc包含各种配置文件
tar etc.tar.gz –C /xxx/rootfs
  • 编译内核模块
    进入Linux内核目录:
make modules

安装内核模块

make modules_install INSTALL_MOD_PATH=/xxx/rootfs

这样系统所需要的内核模块已经安装到根文件系统中。

  • 配置busybox
    • 进入busybox目录执行 make menuconfig
    • 进入 Busybox Settings a build Options->选中 “Build busybox as a static binary”, 静态链接 Cross Compiler prefix (arm-linux-)
    • Installation Options->选中”Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的
      /usr目录下,破坏宿主系统。
    • 设置安装位置:Busybox Installation Prefix (/xxx/rootfs)该选项表明编译后的busybox的安装位置。
    • 编译、安装busybox:make ARCH=arm CROSS_COMPILE=arm-linux;make install。
      到此位置Linux根文件系统的目录结构制作完毕。