一、重新创建虚拟机
点击以下网站,跳转到安装教程:
推荐里面的远程连接软件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
具体的内核版本号,进下面的官网查找:
解压新内核,下列代码均以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或者虚拟机界面没有开全屏,开全屏就不会报错了!
进去之后,按照如下操作,完成配置,其余的不需要点。
- Load -> OK 加载配置
- Save -> OK -> Exit 保存配置
- 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
版本号显示为自己下载的内核版本即为成功!
参考如下: