使用Ubuntu编译Linux内核
1.下载内核并解压到 /usr/src 目录下
在终端执行以下命令即可下载 4.16.14版本(目前最新的稳定版)的内核到当前shell打开的目录下
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.14.tar.xz
解压下载的内核文件 linux-4.16.14.tar.xz
xz -d linux-4.16.14.tar.xz 将 linux-4.16.14.tar.xz 文件解压成 linux-4.16.14.tar 压缩文件
sudo tar -xvf linux-4.16.14.tar -C /usr/src 将 linux-4.16.14.tar 解压到 /usr/src 目录下
2.编译内核可能用到的依赖库安装
sudo apt-get install libncurses5-dev libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
sudo apt-get install bison
sudo apt-get install flex
3.配置内核编译参数
cd /usr/src/linux-4.16.14 切换到刚才我们解压的内核源代码目录下
make mrproper 清除编译过程产生的中间文件,就是将内核代码还原为刚解压的状态,最好每次编译前执行一下。
make clean 清除上次编译产生的中间文件,最好每次编译前执行一下。
make menuconfig 配置编译参数,编译的内核模块选择,内核剪裁需要重点研究的部分。
4. 编译内核
make -jN 也可以只使用 make ,N表示编译时用几个线程编译,最大不要超过CPU个数的两倍
编译内核比较耗时,大概两小时。
5. 安装内核
make modules_install 安装内核模块,驱动等
make install 安装内核
6. 其它说明
内核配置,编译过程中如果提示找不到依赖文件,只需要根据提示的错误信息安装对应的依赖文件即可。
比如出现以下错误提示:
/bin/sh: 1: flex: not found
scripts/Makefile.lib:202: recipe for target 'scripts/kconfig/zconf.lex.c' failed
make[2]: *** [scripts/kconfig/zconf.lex.c] Error 127
Makefile:514: recipe for target 'silentoldconfig' failed
说明需要 flex模块,但是电脑上没有安装,只需要执行sudo apt-get install flex
安装上就行。