如何编译安装Linux内核

操作系统环境

  • VMware workstation15 Pro

  • ubuntu18.04 LTS

  • 待编译内核5.3.10版本

  • Compiler: gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0

内核下载地址

kernel.org

如何编译安装Linux内核

 

 

 

 

 

环境配置

在正式编译前需要安装部分软件。

sudo apt update && sudo apt upgrade
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

 

解压缩

解压缩刚刚下载好的内核压缩包。

tar -zxf linux-5.3.10.tar.xz
cd linux-5.3.10

配置内核

在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 menuconfig 命令来做任何必要的更改。

cp /boot/config-$(uname -r) .config

上述命令的意思就是拷贝对应当前内核配置到当前目录下并重命名为.config(文件名前加.意思为隐藏文件)。

可以自行查看下uname -r的输出:

uname -r

如何编译安装Linux内核

 

 

之后执行命令:

make menuconfig

在虚拟机下有可能提示会因为屏幕太小而无法显示menuconfig而执行失败。要确保虚拟机下的显示面积足够大。

显示如下:

如何编译安装Linux内核

 

 

在这里可以选择启用或者禁用一些模块。如果你不知道该如何选择的话,默认退出即可。

编译和安装

退出menuconfig后,在命令行中输入

make -j4

命令即可开始编译。-j4意思是并发执行,可以提高速度,一般情况 下不要多于CPU核数。这个命令的执行会耗费很长时间。

编译完成之后首先安装模块,命令为:

sudo make modules_install

 

其次安装内核,命令为:

sudo make install

 

启用内核作为引导

输入下列命令将内核作为引导,将数字更改为你自己编译的版本号:

sudo update-initramfs -c -k 5.3.10

 

如何编译安装Linux内核

 

 

下面更新一下grub:

sudo update-grub

 

之后重启即可在启动界面选择需要启动的内核。如果看不到启动选择界面,请执行以下操作:

输入命令:

sudo vi /etc/default/grub

将文件修改为以下模式:(注释掉hidden那一行,将timeout更改为较大值,这里改为了10)

如何编译安装Linux内核

 

 

之后执行

sudo update-grub

重启即可见到下面菜单,选择advanced,进入后选择刚编译安装好的内核进入即可。

 

如何编译安装Linux内核

 

 如何编译安装Linux内核

 

 

 

确认内核版本

如何编译安装Linux内核

 

 如何编译安装Linux内核

 

 

说明内核安装成功。

 

自定义grub启动项

1. 修改启动项名称

在ubuntu下,可以直接修改/boot/grub/grub.cfg中有关启动项的名称。

2. 增加自定义启动项

复制/boot/grub/grub.cfg有关启动项的内容到/etc/grub.d/40_custom进行自定义即可。

3. 执行update

最后都要执行下述命令以生效。

sudo update-grub

 

 

参考资料

 

上一篇:Day 2 虚拟机安装,操作系统启动流程


下一篇:引导过程与服务控制(包括模拟MBR扇区故障和修复GRUB引导故障实操!)