如何编译安装Linux内核

Posted LightningStar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编译安装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

 

 

 

 

 

环境配置

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

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

 

 

之后执行命令:

make menuconfig

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

显示如下:

 

 

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

编译和安装

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

make -j4

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

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

sudo make modules_install

 

其次安装内核,命令为:

sudo make install

 

启用内核作为引导

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

sudo update-initramfs -c -k 5.3.10

 

 

 

下面更新一下grub:

sudo update-grub

 

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

输入命令:

sudo vi /etc/default/grub

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

 

 

之后执行

sudo update-grub

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

 

 

 

 

 

 

确认内核版本

 

 

 

 

说明内核安装成功。

 

自定义grub启动项

1. 修改启动项名称

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

2. 增加自定义启动项

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

3. 执行update

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

sudo update-grub

 

 

参考资料

 

 

以上是关于如何编译安装Linux内核的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何编译源码包或者说是安装

如何编译安装Linux内核

编译安装linux内核步骤

如何编译linux版本

如何在Linux上安装内核头文件

linux下如何编译安装openssl模块?请高手详细解答一下。。。。。。。。。。【】【】