操作系统课程设计2_编译Linux内核
一. 实验目的
(1)学习怎样重新编译 Linux 内核
(2)理解、掌握 Linux 标准内核和发行版本内核的区别
二. 实验内容
1)下载Linux最新内核(https://www.kernel.org/,最新版5.5.8);
2)把版本号后面的8改成学号后3位;
3)编译内核并替换到我的Linux系统;
4)重启系统验证结果。
三.操作方法和实验步骤
1、从内核官网www.kernel.com下载最新版本的内核5.5.8,使用su root进入root权限,使用cp -f linux-5.5.8.tar.xz /usr/src命令将内核压缩包复制到/usr/src中,再用cd /usr/src命令进入到src文件夹中,用tar -xvf linux-5.5.056.tar.xz解压压缩包。
解压完成
2、进入解压出来的压缩包,使用gedit Makefile命令来修改Makefile文件,将第三行的sublevel的8改成学号后三位056。
3、使用sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison命令来安装需要的环境。
4、准备文本配置文件.config。
使用cp /boot/config-$(uname -r) .config命令,然后使用uname -r命令来查看
5、使用make menuconfig命令来配置编译参数
6、使用 make -j4 命令编译内核。
编译过程时间较长,部分截图如下:
编译完成
7、使用make modules_install命令安装模块。
安装完成!
8、使用make install命令安装内核相关文件。
9、使用命令sudo update-initramfs -c -k 5.5.8来启用内核作为引导,并使用 update-grub 命令来更新 grub。
10、重启之后,使用 uname -r 命令来查看内核版本是否是刚才安装的版本,确认升级是否成功。
升级成功!
四. 实验结果和问题分析
- 本次实验本来以为不会花多长时间,而且在做实验之前,我上网搜索了大量有关内核编译的教程,做了充足的准备,然而事实上,整个过程要比我想象的曲折的多。
- 第一次编译的时候,编译到一半,提醒我磁盘空间不够,我的虚拟机本来分配的是20G的空间,看来是不够,于是我又重装了一次Ubuntu,为它重新分配50G的空间。
- 第二次编译的时候我大概花了很长的时间,将近三个小时,编译结束后才发现,版本号没有成功修改,于是我又上网去找资料学习如何改版本号,知道了要在编译之前修改Makefile文件的sublevel的值,因此这次我又准备再装第三次。
- 第三次编译,我做了充足的准备,为了防止出现异常等情况,我在编译之前拍摄了虚拟机的快照,以便出现问题时可以退回重新修改。而且这次,为了使编译过程更快一点,我将虚拟机的内核数增加了一个,还将内存从2G增加到4G。然后使用make -j2双线程编译,最终成功编译完成。
五. 实验总结
本次实验我主要掌握了如何进行Linux的内核编译,在编译的过程中遇到的各种问题也让我明白了,有的时候看似简单的操作,其实并不简单,只有自己亲身去实践才能真正掌握Linux内核编译的过程,通过实践来理解知识,理解Linux操作系统的实质。