Loading... ## 实验目的 学习 Linux 内核编译和升级的过程,并从中学习 Linux 内核的组成,掌握排错能力。 ## 实验内容 1. 安装 Parallels Desktop 并初始化 Linux 虚拟机 2. 下载新版本 Linux 内核进行编译安装升级 ## 实验过程、结果 1. 安装 Parallels Desktop,并从网上下载 Ubuntu16.04 镜像(略) 2. 使用 Ubuntu16.04 镜像新建虚拟机,并做初始化工作 3. 更新系统软件并查看内核版本 可以看到Ubuntu16.04默认的内核版本为4.15 4. 下载内核并进行编译安装升级 1. 到 https://www.kernel.org/ 查看最新的Linux内核版本为4.19,下载压缩包并拷贝到 /usr/src 目录下 2. 进入 `/usr/src` 目录下,解压 `cd /usr/src && sudo tar -xvf linux-4.19.149.tar.xz` 3. 进入 linux-4.19.149 目录,执行 `tree -dL 1` 4. | 文件夹 | 简介 | | -------- | --------------------- | | 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 并保存 5. 编译内核,执行命令 `sudo make -j12`,遇到报错 可以看出是缺少 `libssl-dev` 库,使用 `sudo apt install libssl-dev` 进行安装后再次执行命令 `sudo make -j12`,没有遇到报错 6. 安装内核,依次执行命令 ``` bash sudo make modules_install sudo make install ``` 7. 更新 grub 引导后重启 ```bash sudo update-grub2 && sudo reboot ``` 8. 执行 `uname -r` 查看内核版本 ## 实验总结 1. 内核升级必要的包需要哪些? 答:从排错过程来看,需要libncurses-dev, bison, flex, libssl-dev 2. 编译内核的步骤是什么? 答:首先使用命令生成配置文件 .config 实验中采用的是 make menuconfig 即采用基于文本菜单的配置命令,除此之外还有make config 也可以生成 .config 文件,后者是基于文本配置界面的配置命令。然后使用命令 make -j12 开始编译。之后使用命令 make modules_install 进行模块的编译和安装。最后进行 make install 进行安装并使用命令 upgrade-grub2 更新引导。 3. 在编译过程中可能遇到的问题有哪些,解决的办法是什么? 缺少依赖包、库,解决办法是安装这些缺少的依赖项。 4. 你具体遇到了什么困难,怎么解决的? 没怎么遇到困难。出现的错误都很好解决。 本次实验让我学习了 Linux 内核的编译与升级步骤,了解了内核的组成。 最后修改:2020 年 11 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏