基于Ubuntu的Linux内核编译报错及解决办法

一、重新创建虚拟机

点击以下网站,跳转到安装教程:

点我跳转到基于Ubuntu的Linux系统下载

推荐里面的远程连接软件Electerm也可以下载,有很多好处。

推荐设置存储空间大小为50GB,另外,在配置ssh连接的时候,若是一直连接不上,看下图:


注意:修改上述的三行代码时,前面的井号是注释,需要删除。

只要步骤没出问题的话,就是这个注释没有删除,连接上之后,就可以通过Electerm操纵虚拟机。

二、编译新内核

1.下载并解压新内核

推荐使用清华源镜像下载,官方的下载速度太慢了,这里给出下载内核版本为5.15.5版本的代码,想要下载6.几版本的话,需要将下列代码中的v5.x,以及后面的5.15.5改为你想要下载的版本。

wget  https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.15.5.tar.xz

具体的内核版本号,进下面的官网查找:

Linux内核官网

解压新内核,下列代码均以5.15.5的内核版本,具体版本号看自己所下载的是哪个

tar xavf linux-5.15.5.tar.xz

2、下载相关依赖

下载编译相关依赖:

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

编译C语言的gcc,如果没有也需要下载

sudo apt update
sudo apt install gcc g++

注意:当然若是后续编译的时候,报错信息说某些依赖还没下载的话,就需要下载相关依赖,并重新编译。

3、配置文件

使用如下命令,一行一行执行,不要太急

cd linux-5.15.5/
cp /boot/config-$(uname -r) .config
make menuconfig

注意,进入配置界面,如图

进不去这个界面,也可能是Electerm或者虚拟机界面没有开全屏,开全屏就不会报错了

进去之后,按照如下操作,完成配置,其余的不需要点。

  1. Load -> OK 加载配置
  2. Save -> OK -> Exit 保存配置
  3. Exit 退出完成配置

4、禁用可能会影响编译的选项

 1、禁用某些选项
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
2、禁用 CONFIG_DEBUG_INFO_BTF 
1. 进入内核源代码目录

首先,确保你在内核源代码的根目录下。(版本号是自己下载的)

cd linux-5.15.5/
2. 编辑 .config 文件

内核配置通常保存在 .config 文件中。你可以使用nano文本编辑器打开它:

nano .config
3. 查找并禁用 CONFIG_DEBUG_INFO_BTF

.config 文件中,查找 CONFIG_DEBUG_INFO_BTF。你可以使用搜索功能:

  • 在 nano 中,按 Ctrl + W,然后输入 CONFIG_DEBUG_INFO_BTF

找到后,将其行更改为:

CONFIG_DEBUG_INFO_BTF=n

如果该行不存在,可以直接添加这一行。

4. 保存并退出
  • 在 nano 中,按 Ctrl + X,然后按 Y 确认保存更改。
  • 在 vim 中,输入 :wq 保存并退出。
3、禁用 CONFIG_X86_X32 选项
1.编辑.config文件 

在终端中,使用 nano 或其他文本编辑器打开 .config 文件:

nano .config
 2.查找 CONFIG_X86_X32 选项

nano 中,你可以按 Ctrl + W,然后输入 CONFIG_X86_X32,按 Enter 查找该选项。

3.禁用该选项

找到后,确保该行是这样的:

# CONFIG_X86_X32 is not set

如果原来是:

CONFIG_X86_X32=y

将其改为:

# CONFIG_X86_X32 is not set

这表示禁用该选项。

4.保存并退出
  • 按 Ctrl + O 保存文件,然后按 Enter 确认。
  • 按 Ctrl + X 退出 nano。

5.拓展存储空间

1.查看使用的存储空间
df -h

查看当前虚拟机使用了多少空间。

2.检查剩余空间

检查你的卷组(VG)是否有足够的空间。运行以下命令:

vgdisplay

查看 Free PE / Size,确保有足够的空间来扩展逻辑卷,若是Free PE / Size有很多空间(至少10GB以上),就可以进行拓展,若是空间太少,就需要将当前虚拟机删除,重新创建一个50GB的虚拟机,创建存储空间为50GB的虚拟机,应该是可以拓展到40GB的,使用下述命令:

sudo lvresize -L 40G /dev/mapper/ubuntu--vg-ubuntu--lv
3.拓展文件系统

查看虚拟机文件系统

df -T

出现如下格式信息:

Filesystem                 Type     Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   24G  8.4G   14G  38% /

可以看到,我的虚拟机是ext4文件系统的,是哪个文件系统就使用哪个代码!

扩展逻辑卷后,必须扩展文件系统以使用新的空间。根据你使用的文件系统类型,运行以下命令:

  • 对于 ext4 文件系统
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
  • 对于 xfs 文件系统
sudo xfs_growfs /dev/mapper/ubuntu--vg-ubuntu--lv

 最后,使用查看指令

df -h

就可以看到是否拓展成功!

6.正式编译

使用

make -j4

正式编译,若是弹出下列选项

  > 1. Rely on the toolchain's implicit default DWARF version (DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT)
    2. Generate DWARF Version 4 debuginfo (DEBUG_INFO_DWARF4)
    3. Generate DWARF Version 5 debuginfo (DEBUG_INFO_DWARF5) (NEW)
  choice[1-3?]: 
建议选1,安全一点

Generate BTF typeinfo (DEBUG_INFO_BTF) [N/y/?] (NEW) 

这个不需要,选N

然后就可以等待编译完成了,可能要很久,一般2-3个小时!

7.安装

1.安装模块
sudo make modules_install
2.安装内核
sudo make install

创建一个新的 initramfs,并将其指定版本号为 5.15.5,即新编译的内核的版本号,版本号以自己下载的为准!

sudo update-initramfs -c -k 5.15.5

 更新引导程序 grub

sudo update-grub
3.重启
shutdown -r now
4.检查新内核版本
uname -r

版本号显示为自己下载的内核版本即为成功!

参考如下:

linux 内核编译安装记录 (验证可行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值