实验目的
学习 Linux 内核编译和升级的过程,并从中学习 Linux 内核的组成,掌握排错能力。
实验内容
- 安装 Parallels Desktop 并初始化 Linux 虚拟机
- 下载新版本 Linux 内核进行编译安装升级
实验过程、结果
- 安装 Parallels Desktop,并从网上下载 Ubuntu16.04 镜像(略)
- 使用 Ubuntu16.04 镜像新建虚拟机,并做初始化工作
- 更新系统软件并查看内核版本
可以看到Ubuntu16.04默认的内核版本为4.15 下载内核并进行编译安装升级
- 到 https://www.kernel.org/ 查看最新的Linux内核版本为4.19,下载压缩包并拷贝到 /usr/src 目录下
- 进入
/usr/src
目录下,解压cd /usr/src && sudo tar -xvf linux-4.19.149.tar.xz
- 进入 linux-4.19.149 目录,执行
tree -dL 1
文件夹 简介 arch 根据cpu架构区分的代码 block 块设备驱动程序 certs 内置证书 crypto 加密,压缩 drivers 设备驱动程序 fs 文件系统 include 头文件 lib 库函数文件 mm 内存管理 net 网络协议代码 scripts 配置脚本 security SElinux的模块 sound 音频设备的驱动程序 virt 内核虚拟化 执行
sudo make menuconfig
,遇到报错原因是缺少
libncurses-dev
使用命令sudo apt install libncurses-dev
进行安装后再次运行sudo make menuconfig
,遇到报错可以看到出错的位置是
bison: not found
即缺少bison
,使用命令sudo apt install bison
解决,再次运行sudo make menuconfig
,遇到报错可以看到出错的位置是
flex: not found
即缺少flex
, 使用命令sudo apt install flex
解决, 再次运行sudo make menuconfig
无报错使用默认配置,选择 Exit 并保存
编译内核,执行命令
sudo make -j12
,遇到报错可以看出是缺少
libssl-dev
库,使用sudo apt install libssl-dev
进行安装后再次执行命令sudo make -j12
,没有遇到报错安装内核,依次执行命令
sudo make modules_install sudo make install
更新 grub 引导后重启
sudo update-grub2 && sudo reboot
- 执行
uname -r
查看内核版本
实验总结
内核升级必要的包需要哪些?
答:从排错过程来看,需要libncurses-dev, bison, flex, libssl-dev
编译内核的步骤是什么?
答:首先使用命令生成配置文件 .config 实验中采用的是 make menuconfig 即采用基于文本菜单的配置命令,除此之外还有make config 也可以生成 .config 文件,后者是基于文本配置界面的配置命令。然后使用命令 make -j12 开始编译。之后使用命令 make modules_install 进行模块的编译和安装。最后进行 make install 进行安装并使用命令 upgrade-grub2 更新引导。
在编译过程中可能遇到的问题有哪些,解决的办法是什么?
缺少依赖包、库,解决办法是安装这些缺少的依赖项。
你具体遇到了什么困难,怎么解决的?
没怎么遇到困难。出现的错误都很好解决。
本次实验让我学习了 Linux 内核的编译与升级步骤,了解了内核的组成。