linux系统编译内核源码的步骤演示

在进行linux系统上面的程序开发的时候有一些驱动类的或者是要引用内核接口的时候难免不会遇到编译内核源码的情况,在这里我就进行一下内核源码的相关编译流程。整个内核的编译过程来说比较简单,就是几条指令,用心理解就好。
Step 1: 首先下载内核源码
如果你是Ubuntu或基于Ubuntu的Debian,内核源代码是作为 deb 包提供的。 首先,与其他的源码包一样用apt-get 来执行安装。 标题为 Linux-source 的源码包就是最新的内核源码包的元包。

# apt-get install linux-source

源码编译keepalived 添加开机启动_arm

在安装内核源代码的 deb 包后,会在 /usr/src 下生成 tar 文件, 只要将这个文件复制到适当的目录下并解压缩, 就能够获取内核源代码。

源码编译keepalived 添加开机启动_arm_02


Step 2: 解压源代码

压缩包下载完成后,可以通过tar命令解压。

tar xvf linux-source-4.4.0.tar.bz2

sudo tar xvf linux-source-4.4.0.tar.bz2

在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。

linux-source-4.4.0/zfs/config/kernel-put-link.m4
linux-source-4.4.0/zfs/config/always-no-bool-compare.m4
linux-source-4.4.0/zfs/config/kernel-commit-metadata.m4
linux-source-4.4.0/zfs/config/tgz.am
linux-source-4.4.0/zfs/config/kernel-shrink.m4
linux-source-4.4.0/zfs/config/kernel-kobj-name-len.m4
linux-source-4.4.0/zfs/config/kernel-is_owner_or_cap.m4
linux-source-4.4.0/zfs/config/kernel-get-disk-ro.m4
linux-source-4.4.0/zfs/config/kernel-blkdev-get.m4
linux-source-4.4.0/zfs/config/kernel-open-bdev-exclusive.m4
linux-source-4.4.0/zfs/config/kernel-acl.m4
linux-source-4.4.0/zfs/config/ltsugar.m4
linux-source-4.4.0/zfs/config/Rules.am
linux-source-4.4.0/zfs/config/kernel-get-link.m4
linux-source-4.4.0/zfs/config/kernel-file-inode.m4
linux-source-4.4.0/zfs/config/mount-helper.m4
linux-source-4.4.0/zfs/config/kernel-lookup-bdev.m4
linux-source-4.4.0/zfs/config/config.guess
linux-source-4.4.0/zfs/config/kernel-insert-inode-locked.m4
linux-source-4.4.0/zfs/config/kernel-bdi-setup-and-register.m4
linux-source-4.4.0/zfs/config/kernel-blk-queue-max-segments.m4
linux-source-4.4.0/zfs/config/kernel-block-device-operations-release-void.m4
linux-source-4.4.0/zfs/config/lt~obsolete.m4
linux-source-4.4.0/zfs/config/kernel-clear-inode.m4
linux-source-4.4.0/zfs/config/kernel-dentry-operations.m4
linux-source-4.4.0/zfs/config/kernel-truncate-range.m4
linux-source-4.4.0/zfs/config/kernel-d-prune-aliases.m4
linux-source-4.4.0/zfs/config/kernel-truncate-setsize.m4
linux-source-4.4.0/zfs/config/user-frame-larger-than.m4
linux-source-4.4.0/zfs/config/kernel-blk-queue-flush.m4
linux-source-4.4.0/zfs/config/ltoptions.m4
linux-source-4.4.0/zfs/config/zfs-meta.m4
linux-source-4.4.0/zfs/config/kernel-fallocate.m4
linux-source-4.4.0/zfs/config/user-libblkid.m4
linux-source-4.4.0/zfs/config/kernel-create-nameidata.m4
linux-source-4.4.0/zfs/config/user-arch.m4
linux-source-4.4.0/zfs/config/kernel-bdev-physical-size.m4
linux-source-4.4.0/zfs/config/kernel-d-obtain-alias.m4
linux-source-4.4.0/zfs/config/kernel-bio-failfast.m4
linux-source-4.4.0/zfs/config/user.m4
linux-source-4.4.0/zfs/config/kernel-sget-args.m4
linux-source-4.4.0/zfs/dkms.conf
##lz@ubuntu:/usr/src/linux-source-4.4.0$

Step 3:

  1. 进入源代码目录
cd linux-source-4.4.0
  1. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp -v /boot/config-$(uname -r) .config

源码编译keepalived 添加开机启动_编译内核_03

  1. 可以通过如下命令启动配置界面
make menuconfig

如果报错如下:

源码编译keepalived 添加开机启动_编译内核_04

则运行命令:

sudo apt-get install libncurses5-dev

源码编译keepalived 添加开机启动_arm_05


再次运行

make menuconfig

该命令会运行一些脚本,然后打开一个配置界面

源码编译keepalived 添加开机启动_源码包_06


可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。

Step 5: 编译内核

  1. 通过如下命令就可以编译内核了
Make -j 8

上面参数是并发数量,通常可以使CPU的2倍。

可以看到如下代码,不用担心等编译完成即可,可能时间很长不用特意等待

源码编译keepalived 添加开机启动_linux_07