Ubuntu 20.04LTS 编译Linux内核

Ubuntu 20.04LTS 编译Linux内核

  • main
    • 前言
      • 笔者的硬件配置与采用软件版本
    • 主要步骤
      • 备份(可跳过)
      • 下载内核源文件
      • 安装依赖
      • 编译
        • 进入目录
        • 删除之前编译所生成的文件和配置文件,备份文件等
        • 生成.config文件
        • 对内核选项进行配置
        • 删除配置时留下的一些不用的文件
        • 编译内核
        • 编译模块
        • 生成 /boot/initrd.img-内核版本号-generic 文件
        • 内核映象和System.map拷贝到/boot/下
        • 修改grub文件
      • 重启
    • 后记

main

前言

本文主要用作记录编译流程,而非教程
用于湖北武汉沙湖附近的某所大学的linux课程
开始写作时间为2022/4/12 22:43

笔者的硬件配置与采用软件版本

CPU:AMD 4800H
GPU:NVIDIA GeForce 2060 Laptop
UBUNTU:20.04 LTS
待安装的Linux内核:5.15.33(longterm)

主要步骤

备份(可跳过)

各显神通的阶段

可以把/boot/grub/grub.cfg保存到U盘里

下载内核源文件

官网地址https://www.kernel.org/

进入官网下载后解压放置到 /usr/src/ 路径下

笔者采用的版本是5.15.33(longterm)

对应的下载地址是https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.33.tar.xz

安装依赖

下面展示一些代码。

sudo apt install make
sudo apt install zstd
sudo apt install libncurses5-dev openssl libssl-dev
sudo apt install build-essential openssl
sudo apt install pkg-config
sudo apt install libc6-dev
sudo apt install bison
sudo apt install flex
sudo apt install libelf-dev
sudo apt install zlibc minizip
sudo apt install libidn11-dev libidn11

编译

进入目录
cd /usr/src/linux-5.15.33
此处注意更改为自己解压后的linux源代码路径
删除之前编译所生成的文件和配置文件,备份文件等
sudo make mrproper

生成.config文件
sudo cp /boot/config-`uname -r` ./.config

注意:上面的是`,在键盘的最左边,而非'单引号

对内核选项进行配置

方向键控制光标,enter确定执行

load	→	(.config)→	OK	→	SAVE	→	(.config)	→	OK	→	EXIT	→	EXIT
ls -l 查看.config文件是否存在

熟练者可在此选择配置内核,例如AMD用户可不勾选Intel的相关组件,反之亦然。

删除配置时留下的一些不用的文件
sudo make clean

非必要步骤,可不执行
编译内核
sudo make bzImage -jN

此处的N为线程数,目前一般为CPU核心数*2,
例如四核八线程,八核十六线程,
但不排除其他情况,
(例如Intel core i5 12450H 八核十二线程)
N可选择为4

大约需要十几分钟
如果时间过短,需要考虑是否是因为编译出错而导致程序提前终止
注意翻看命令行有无报错,可能并非显示在结尾

编译模块
sudo make modules -jN

此处的N同上

大约需要半个小时
如果时间过短,需要考虑是否是因为编译出错而导致程序提前终止
注意翻看命令行有无报错,可能并非显示在结尾
此时/lib/modules/下应该新生成一个KERNEL_内核版本号 的目录

生成 /boot/initrd.img-内核版本号-generic 文件
sudo mkinitramfs /lib/modules/内核版本号 -o /boot/initrd.img-内核版本号-generic

注意修改命令

例如

sudo mkinitramfs /lib/modules/5.15.33 -o /boot/initrd.img-5.15.33-generic
内核映象和System.map拷贝到/boot/下
sudo cp /usr/src/linux-版本号/arch/x86/boot/bzImage    /boot/vmlinuz-版本号-generic
sudo cp /usr/src/linux-版本号/System.map    /boot/System.map-版本号

注意修改命令

例如

sudo cp /usr/src/linux-5.15.33/arch/x86/boot/bzImage    /boot/vmlinuz-5.15.33-generic
sudo cp /usr/src/linux-5.15.33/System.map    /boot/System.map-5.15.33
修改grub文件
sudo update-grub2

重启

sudo reboot

至此完毕

后记

....

你可能感兴趣的:(linux,ubuntu)