目录
一、环境准备
二、获取源代码
三、编译
四、安装
五、配置开启启动项
六、安装过程中遇到的问题
一、环境准备
1、VMware Workstation虚拟机
2、虚拟机中安装 Ubuntu-20.04.1 操作系统 (内核版本为 5.4.0)
二、获取源代码
2、下载后源代码为 linux-5.8.7.tar.xz 格式压缩包,存放于/home/ubuntu/Desktop/Linux目录下,通过下面两条命令解压
cd /home/ubuntu/Desktop/Linux
xz -d linux-5.8.7.tar.xz (生成linux-5.8.7.tar)
tar -xvf linux-5.8.7.tar (生成linux-5.8.7目录)
三、编译
1、环境准备(由于在安装Ubuntu系统时,使用了最小化安装,所以编译时会缺少一些软件包)
sudo apt install make gcc libncurses-dev flex bison libssl-dev libelf-dev
2、配置内核(以下操作均在 /home/ubuntu/Desktop/Linux/linux-5.8.7 目录下完成)
(1) 保持源码干净
make mrproper
此操作会将历史编译过程中配置的内核功能配置文件清除掉,只有第一次执行内核编译前才进行此操作,其它情 况若需要清除前一次编译过程的残留数据,只需用下面的命令:
make clean
此命令仅删除编译过程产生的中间文件和目标文件,而不会删除历史配置。
(2)设置内核功能选项
在正式编译内核之前,我们首先必须配置需要包含哪些模块。
menuconfig
cp /boot/config-$(uname -r) .config
make menuconfig
,
可在字符界面中显示功能配置的图形界面,如下图。
根据上图中功能提示配置需要的功能,本次实验中采用的是默认的配置,通过键盘上的左右键选择<Save>保存配置, 得到新内核的配置文件,如下图。使用键盘上的左右键选择<OK>按钮,通过键盘上的回车键确认保存配置。
3、编译内核和模块
(1)清除之前编译出的中间文件和目标文件
make clean
(2)编译内核
make bzImage 或者 make bzImage -jn
-jn
意思是并发执行,可以提高速度,一般情况 下n不要大于CPU核数
例: -j4 表示同时编译的任务数。如果操作系统中有4个CPU核心,可通过-j4加快编译的速度。
(3)编译内核模块
make modules
四、安装
1、安装内核模块
make modules_install
2、安装内核
make install
五、配置开启启动项
修改 Ubuntu 操作系统的默认启动项,使系统重启后进入新编译的linux-5.8.7内核。
1、输入下列命令将内核作为引导,将数字更改为自己编译的版本号
sudo update-initramfs -c -k 5.8.7
2、更新启动项列表
update-grub2
3、修改默认启动菜单的配置文件
sudo vim /etc/default/grub
注释 GRUP_TIMEOUT_STYLE=hidden 列。
修改 GRUB_TIMEOUT 的值为10 。(可修改为其它数值)
GTUB_DEFAULT=0,表示从第一个内核启动(linux-5.8.7位于第一个)。
保存修改,重启系统,可看到启动菜单项。选择advanced,进入后选择刚编译安装好的内核进入即可。
3、确认内核
uname -r
查看 当前运行内核版本 是否与 安装的内核版本 一致。
六、安装过程中遇到的问题
1、虚拟机分配内存过小,导致出现如下图错误
not syncing: System is deadlocked on Memory