操作系统作业——Ubuntu编译linux内核

要求:

从网上下载新的内核源代码开始,写出编译新内核的具体过程,Step by step,包括每一个命令的使用。

Step 1:

查看自己的 Ubuntu 内核版本(笔者的版本为 4.15.0);并安装相关依赖

操作系统作业——Ubuntu编译linux内核

sudo  apt-get install build-essential kernel-package libncurses5-dev libncurses-dev

Step 2:

官网下载新内核源码(最好下载最新的稳定版本),笔者就是下载了5.0.1版本。
操作系统作业——Ubuntu编译linux内核

Step 3:

下载的压缩包解压后,将linux-5.0.1文件夹移动到 /usr/src 目录下

sudo mv linux-5.0.1 /usr/src

操作系统作业——Ubuntu编译linux内核

Step 4:

开始配置

cd /usr/src/linux-5.0.1
sudo make mrproper    //清除曾经编译过的旧文件,第一次编译可不执行
sudo make clean    //清除编译中间文件 
sudo make menuconfig    //基于ncurse库编制的图形工具界面

注:可能出现的问题

  • 执行 sudo make menuconfig 出现问题时,根据错误提示下载相应安装包即可,例如:
    操作系统作业——Ubuntu编译linux内核
    可执行 apt-get 命令:
sudo apt-get install ncurses package

正确安装后的图形工具界面如图,可在此设置将要编译的内核,也可以直接保存。
操作系统作业——Ubuntu编译linux内核

Step 5:

生成新内核,将配置过程中选中编入内核中的程序编译链接产生 linux 内核

sudo make j2  //2核

操作系统作业——Ubuntu编译linux内核

注:可能出现的问题

  • 若出现问题如下图,则是因为未安装 libssl-dev 所致,安装即可
    (libssl-dev 包含 libraries,header files and manpages,它是 openssl 的一部分,而 openssl 对ssl 进行了实现)
    操作系统作业——Ubuntu编译linux内核

Step 6:

生成modules,将配置过程中选中编成 modules 的程序编译链接成 modules

sudo make modules

操作系统作业——Ubuntu编译linux内核

Step 7:

安装 modules,将上一步产生的modules 拷到系统文件下,以供新内核调用

sudo make modules_install

操作系统作业——Ubuntu编译linux内核

Step 8:

安装内核

sudo make install

操作系统作业——Ubuntu编译linux内核

Step 9:

安装成功,重启系统 --> Ubuntu 高级选项
操作系统作业——Ubuntu编译linux内核

–> 选择内核版本

操作系统作业——Ubuntu编译linux内核

注:可能出现的问题

  • 若出现: System is deadlocked on memory,则是因为分配的内存不够

操作系统作业——Ubuntu编译linux内核
增加内存:
编辑虚拟机设置 --> 内存,增大即可

操作系统作业——Ubuntu编译linux内核

Step 10:检查新内核版本

uname -r

操作系统作业——Ubuntu编译linux内核

注:解决系统启动时的界面选择问题

sudo gedit /etc/default/grub  //编辑文件

#GRUB_HIDDEN_TIMEOUT=0   //注释该行
#GRUB_HIDDEN_TIMEOUT_QUIET=0   //注释该行
sudo update-grub   //更新 grub

操作系统作业——Ubuntu编译linux内核

成功!