【Linux内核】内核源码编译

Linux内核源码编译过程

总体流程:

  1. 下载Linux内核源码文件
  2. 安装所需工具
  3. 解压源码文件并配置
  4. make编译源码
  5. 下载busybox
  6. 配置busybox并编译

1. Linux源码编译

https://mirrors.edge.kernel.org/pub/linux/kernel/

作者选择的版本是:4.9.229

https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.229.tar.xz

下载到本地,解压,然后进入linux-4.9.229目录:

tar -zxvf linux-4.9.229.tar.gz
cd linux-4.9.229

1.指定硬件体系架构。

为了减少安装编译器的过程,我在本例中使用的是x86,因为我的开发环境就是x86。如果你要编译arm的内核,则指定ARCH=arm且需要安装交叉编译器。

export ARCH=x86

2.配置board config,此处配置为 x86_64_defconfig。

这一步相当于为内核配置一个菜单,告知内核我们需要点什么菜,需要的功能是什么。

下一步编译系统根据这个菜单来为我们编译内核。

make  x86_64_defconfig

3.安装工具

作者的开发环境是CentOS7,未安装工具时,直接执行

make menuconfig

命令会报错

因此需要安装以下工具:

yum install ncurses ncurses-devel
yum install openssl-devel
yum install elfutils-libelf-devel
yum install flex
yum install bison

3.配置内核

linux-4.9.229目录下,输入

make menuconfig

进入如下界面:

如果启动报错,尝试将页面最大化,并将终端这个窗口拉得尽量大

这一步其实是对第2步的菜单进行微调,我们需要内核支持ramdisk驱动,所以需要选中如下配置:

General setup  --->  
   ----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Device Drivers  --->

   [*] Block devices  --->

           <*>   RAM block device support

           (65536) Default RAM disk size (kbytes)

按方向键选择选项,空格键选中或取消选项

4.编译内核

这一步可能需要较长时间

make

编译成功后的内核位于:arch/x86_64/boot/bzImage

2. BusyBox源码编译

下载busybox源码

下载地址:https://busybox.net/downloads/

此处使用的版本为busybox-1.30.0

下载后解压busybox源码

tar xvf busybox-1.30.0.tar.bz2

1.配置buysbox源码

此处将busybox配置为静态编译,这样busybox运行时无需额外的动态链接库。

make menuconfig
Busybox Settings  --->
      Build Options  --->
            [*] Build BusyBox as a static binary (no shared libs)

2.安装c语言静态库

未安装c语言静态库时,编译报错如下,安装c语言静态库后编译成功:

/usr/bin/ld: cannot find -lcrypt
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lresolv
collect2: error: ld returned 1 exit status

安装静态库:

yum install glibc-static

3.编译并安装

make && make install

到此Linux内核源码编译完成

posted @ 2023-06-14 20:21  曹剑雨  阅读(369)  评论(0编辑  收藏  举报