How To Build Linux Kernel {Step-By-Step} | phoenixNAP KB
(先后使用两个虚拟机版本,安装的内核版本从5.15.8最后换成了5.13.1,最终达到了实验目的)
最终实现版本是Ubuntu18.04.4 5.3.0-28-generic
提示:虚拟机内存要分足够大,不然编译内核时会空间不足
closing dependency file drivers/watchdog/.smsc37b787_wdt.o.d: 设备上没有空间
查看磁盘信息
sudo fdisk -l
扩充内存磁盘分区工具

扩充30G后,可以发现改30G未分区(即不能用)

分区成功
可以提前安装依赖包
sudo apt-get install libncurses5-dev openssl libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
1.查看linux内核版本

2.下载linux内核源码(http://www.kernel.org/)

简单来说,两种文件都是压缩了的tar文件,只是压缩算法不同。 tar.gz使用的是gzip压缩工具,tar.xz使用的是xz工具。但对于使用者来说,二者的解压没有区别。


2.拷贝源码到/usr/src并解压




也可以手动移动
sudo nautilus(带有权限的文件管理器)
3.进入目录文件并执行make menuconfig生成内核映像

权限不够用管理员运行

提示需要安装ncurses-devel、libncurses-dev等

直接安装报错,换用libncurse5-dev成功


安装完成后报错 没有flex和bison

安装flex(sudo apt-get install flex)
安装bison(sudo apt-get install bison -y)


然后发现版本不兼容


因此升级系统的gcc版本到5.1.0以上,步骤如下
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5(把当前的默认GCC版本设置为gcc-5)


重新执行sudo make config 成功 (make 是用来编译的,它从Makefile中读取指令,然后编译。)

点击load选项

点击ok

显示文件不存在

清理以前编译内核的中间残留文件

创建相应文件






编译模块,报错没有openssl

安装openssl和其他依赖包



重新执行make modules,没有报错(耗时较长)
make的时候使用-j可以有效提高速度

内存不足虚拟机卡死(换一个版本高的虚拟机 分配较多内存)

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置
报错
No rule to make target 'debian/certs/benh@debian.org.cert.pem', needed by 'certs/x509_certificate_list'. Stop.
删除CONFIG_SYSTEM_TRUSTED_KEYS的值

sudo make INSTALL_MOD_STRIP=1 modules_install

sudo make install

sudo update-initramfs -c -k 5.13.1

sudo update-grub

重启后验证内核版本

成功!
Reference
5.13.1版本