前言
想了解一下如何自己编译·1个linux内核。
环境:VMware
+ubuntu18.04
编译过程
- 内核下载地址:https://cdn.kernel.org/pub/linux/kernel/
下载内核代码压缩包
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.6.tar.gz
解压代码
tar xvf linux-5.9.6.tar.gz
安装make
sudo apt-get install make
linux 提供的配置命令
图形界面,可键盘操作
sudo make menuconfig
Bug:gcc
未安装
penge@penge-virtual-machine:~/Desktop/linux-5.9.6$ sudo make menuconfig
HOSTCC scripts/basic/fixdep
/bin/sh: 1: gcc: not found
scripts/Makefile.host:107: recipe for target 'scripts/basic/fixdep' failed
make[1]: *** [scripts/basic/fixdep] Error 127
Makefile:523: recipe for target 'scripts_basic' failed
make: *** [scripts_basic] Error 2
安装gcc
sudo apt install gcc
再次尝试安装menuconfig
,但是还是报错了
penge@penge-virtual-machine:~/Desktop/linux-5.9.6$ sudo make menuconfig
HOSTCC scripts/basic/fixdep
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
scripts/kconfig/Makefile:208: recipe for target 'scripts/kconfig/mconf-cfg' failed
make[1]: *** [scripts/kconfig/mconf-cfg] Error 1
Makefile:590: recipe for target 'menuconfig' failed
make: *** [menuconfig] Error 2
查看博客安装了一波gtk+-2.0
、gmodule-2.0
和 libglade-2.0
sudo apt install libgtk2.0-dev libglib2.0-dev libglade2-dev
继续安装
安装 flex
, bison
sudo apt install flex bison
- 以上全部安装指令(一部到位)
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
安装gconfig
sudo make gconfig
自动打开如下界面
复制配置文件
cp -v /boot/config-$(uname -r) .config
make menuconfig
参考其它博客【可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等】但是由于是刚刚接触
Linux,果断直接save。
注意:这里就没有加-j
多线程,因为之前加了之后报错,参考博客说貌似没加正常。(笔者·这里编译没有加·)
sudo make
bug再现
make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
Makefile:1784: recipe for target 'certs' failed
make: *** [certs] Error 2
解决方案
sudo scripts/config --disable SYSTEM_TRUSTED_KEYS
参考:编译内核报错 No rule to make target ‘debian/canonical-certs.pem‘ 或 ‘canonical-revoked-certs.pem‘ 的解决方法
sudo make modules_install
//貌似用sudo make
就行
再次运行sudo make modules_install
安装内核
sudo make install
重启系统
reboot
uname -r
安装完成!
参考资料