前言

操作系统课程要求自己完成一次Linux内核的编译,整个过程花费大约5个半小时

实验环境

Ubuntu 64 位:ubuntu-16.04-desktop-amd64.iso

内核版本 5.3.0-40-generic

待编译的新内核是 linux-5.6.2.tar.xz

虚拟机:WMwareWorkstation

虚拟机的配置参数:磁盘大小60G ,内存大小8G

源码下载

到官网下载需要的内核的源码:http://www.kernel.org

下载慢的话建议使用bt工具下载

虚拟机扩容

因为我虚拟机最初只设置20G的容量,而编译这个内核至少需要40G,所以需要对其进行扩容

选择扩展为其扩展容量

但是只在VMware中扩容是不够的,还需要在客户机内扩容

  1. 在终端中输入 sudo apt-get install gparted

  1. 再输入 sudo gparted

运行gparted,点击左侧的分区,点击 ->| 按钮,适当调整大小,点击对勾应用即可

解压缩内核文件

首先切换到root用户

然后输入 sudo nautilus /usr/src

把下载好的内核源码压缩包复制到打开的文件夹

解压源码包

xz -d /usr/src/linux-5.6.2.tar.xz

需要几分钟左右,且没有任何提示

然后是 tar -xvf /usr/src/linux-5.6.2.tar

这一步会生成许多临时文件,所以需要有足够大的空间

然后再使用 sudo nautilus /usr/src 打开文件夹,然后解压压缩包

清除残留文件

进入文件夹,输入命令 make mrproper,清除残留的.config 和.o 文件

配置内核

make menuconfig

此时出现如下错误,安装提示缺失的包即可 apt-get install libncurses5-dev

安装后继续执行 make menuconfig

又出现一下错误 执行 sudo apt-get install flex

继续执行 make menuconfig

又出现了错误,执行 sudo apt-get install bison

再次make menuconfig

终于成功了!

配置内核

在显示的对话框中:对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示 将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序 编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供 相应特性或驱动程序的支持。 一般采用默认值即可,但是我们需要额外检查驱动配置情况

进入DeviceDrivers,选择SCSI

将下面这些都设置成*(按y键)

然后回到上一个界面,按照下图修改Fusion MPT

完成后按Exit并按提示操作

编译内核

执行 make bzImage

产生如下错误,执行 apt-get install libssl-dev

再次执行 make bzImage

需要等待20分钟左右的时间,看别人都是几个小时,可能跟配置有关

这样就是成功了

编译模块

执行 make modules

耐心等待…….

one hour later……

two hours later……

用了两个半小时,编译完成

安装内核

首先安装模块 make modules_install

安装需要花费5分钟左右

然后载入映像文件 mkinitramfs -o /boot/initrd-5.6.2.img -v 5.6.2

等待两分钟左右

最后安装内核 make install

配置 grub 引导程序

执行 update-grub2 完成自动配置

重启系统

执行 reboot 使用新内核启动linux

重启完成后看一下版本,成功升级内核

Last modification:July 12th, 2020 at 01:05 am