kernel编译练习2:给ubuntu22升级5.19.3内核

https://ke.qq.com/course/4032547?flowToken=1042705

 目录

前言

一 获取最新的内核

1 下载内核

2 上传内核到ubuntu

二 查看当前系统的内核版本

三 编译内核

1 解压内核

2 准备一个my_x86_defconfig

3 在linux-5.19.3/arch/x86/configs中创建my_x86_defconfig

4 make my_x86_defconfig

5 make menuconfig

四 安装内核

1 安装模块sudo make modules_install

2 安装sudo make install

3 重启reboot

五 验证结果

1 查看版本号

2 浏览/boot/文件夹

3 config-5.19.0和config-5.19.3的差异

总结


前言

     这个是第二次搞这个事情,为什么这么执着于换内核呢,为了练手啊,我记得鲁班学艺的时候,好像是挖几千个方的,几千个圆的什么什么的,然反正就是不停的联系吧,然后达芬奇天天画蛋,画到鸡蛋脱销。总之就是多练习,不能让熟练成为一句空话。

     这次总结了上次的误区,然后优化了文档结构,操作方式是不一样的。

如果遇到问题,请参考升级内核到5.19.0

一 获取最新的内核

1 下载内核

网址  The Linux Kernel Archives

 好了,直接点5.19下载,得到linux-5.19.3.tar.xz,将它弄到ubuntu中。

2 上传内核到ubuntu

也可以直接在ubuntu中使用火狐浏览器下载内核。

通过ssh登录到ubuntu,这个软件叫mobaxterm,如图所示

 弹出如下窗口,选中下载的内核文件,如下所示

 在底部会看到传输进度,我也是第一次这么干,还真好使。如下图的底部,还有进度条,真的很好用。

二 查看当前系统的内核版本

$ cat /proc/version 
Linux version 5.19.0 (lkmao@lkmao-virtual-machine) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #1 SMP PREEMPT_DYNAMIC Mon Aug 8 20:26:54 CST 2022

分段分析下这些信息

Linux version 5.19.0 :内核的版本号5.19.0,知道这个就行了,其他的无所谓了,

(lkmao@lkmao-virtual-machine) 这个就是编译内核的电脑的信息

Mon Aug 8 20:26:54 CST 2022:当前内核被编译的时间2022年8月8号20点26分54秒

三 编译内核

1 解压内核

$ tar -Jxf linux-5.19.tar.xz

2 准备一个my_x86_defconfig

看下我的/boot目录,我的当前版本是5.19,所以要找的文件是config-5.19.0

 把它复制到linux-5.19.3/arch/x86/configs中,并从命名为my_x86_config,为什么叫这么名字呢,老话说的好,贱名好养活。所以啊,编程的时候,给变量起名字也要够贱才行,这样别人就会问,哪个逗比写的代码,然后领导就记住你的功劳了。如下所示, 

3 在linux-5.19.3/arch/x86/configs中创建my_x86_defconfig

进入目录linux-5.19.3/arch/x86/configs

cp /boot/config-5.19.0 my_x86_defconfig

这个看要自己的内核版本哈,反正就是复制config-xxx名字的文件。

4 make my_x86_defconfig

lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ make my_x86_defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
arch/x86/configs/my_x86_defconfig:10958:warning: symbol value 'm' invalid for CRYPTO_BLAKE2S_X86
#
# configuration written to .config
#
lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ 

看到 configuration written to .config,上一篇文章中就没有这一步,在这里一顿莫名其妙的操作,最后虽然成功,但是特别不规范,这样才是规范的操作。

5 make menuconfig

~/kernel/linux-5.19.3$ make menuconfig

出现下面这个界面,我曾经以为,能搞出这个界面,就算精通linux内核裁剪了。

编译,make -j4,花费时间40分钟左右。

lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ make -j4
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
  HYPERCALLS arch/x86/include/generated/asm/xen-hypercalls.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h

/*略*/
  LD [M]  sound/usb/line6/snd-usb-line6.ko
  LD [M]  sound/usb/line6/snd-usb-pod.ko
  LD [M]  sound/usb/line6/snd-usb-podhd.ko
  LD [M]  sound/usb/line6/snd-usb-toneport.ko
  LD [M]  sound/usb/line6/snd-usb-variax.ko
  LD [M]  sound/usb/misc/snd-ua101.ko
  LD [M]  sound/usb/snd-usb-audio.ko
  LD [M]  sound/usb/snd-usbmidi-lib.ko
  LD [M]  sound/usb/usx2y/snd-usb-us122l.ko
  LD [M]  sound/usb/usx2y/snd-usb-usx2y.ko
  LD [M]  sound/virtio/virtio_snd.ko
  LD [M]  sound/x86/snd-hdmi-lpe-audio.ko
  LD [M]  sound/xen/snd_xen_front.ko
lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$

中间没有报错,为什么没有报错呢,因为我在第一次升级内核的时候,错误已经解决了,我现在用的.config文件就是第一次升级后修改过的配置文件,如果遇到错误,欢迎评论区留言。

lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ ls arch/x86/boot/bzImage -lsh
10M -rw-rw-r-- 1 lkmao lkmao 10M  8月 23 18:23 arch/x86/boot/bzImage

四 安装内核

1 安装模块sudo make modules_install

lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ sudo make modules_install
/*
略
*/ 
INSTALL /lib/modules/5.19.3/kernel/sound/x86/snd-hdmi-lpe-audio.ko
  SIGN    /lib/modules/5.19.3/kernel/sound/x86/snd-hdmi-lpe-audio.ko
  INSTALL /lib/modules/5.19.3/kernel/sound/xen/snd_xen_front.ko
  SIGN    /lib/modules/5.19.3/kernel/sound/xen/snd_xen_front.ko
  DEPMOD  /lib/modules/5.19.3
lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$

2 安装sudo make install

lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ sudo make install
  INSTALL /boot
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 5.19.3 /boot/vmlinuz-5.19.3
update-initramfs: Generating /boot/initrd.img-5.19.3
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 5.19.3 /boot/vmlinuz-5.19.3
run-parts: executing /etc/kernel/postinst.d/update-notifier 5.19.3 /boot/vmlinuz-5.19.3
run-parts: executing /etc/kernel/postinst.d/xx-update-initrd-links 5.19.3 /boot/vmlinuz-5.19.3
I: /boot/initrd.img.old is now a symlink to initrd.img-5.15.0-43-generic
I: /boot/initrd.img is now a symlink to initrd.img-5.19.3
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 5.19.3 /boot/vmlinuz-5.19.3
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.19.3
Found initrd image: /boot/initrd.img-5.19.3
Found linux image: /boot/vmlinuz-5.19.0
Found initrd image: /boot/initrd.img-5.19.0
Found linux image: /boot/vmlinuz-5.15.0-43-generic
Found initrd image: /boot/initrd.img-5.15.0-43-generic
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
lkmao@lkmao-virtual-machine:~/kernel/linux-5.19.3$ 

3 重启reboot

重启,然后验证结果。

五 验证结果

1 查看版本号

lkmao@lkmao-virtual-machine:~$ cat /proc/version 
Linux version 5.19.3 (lkmao@lkmao-virtual-machine) (gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #1 SMP PREEMPT_DYNAMIC Tue Aug 23 17:11:13 CST 2022
lkmao@lkmao-virtual-machine:~$ 

版本号5.19.3,升级成功,编译时间Tue Aug 23 17:11:13 CST 2022。时间正确。

2 浏览/boot/文件夹

lkmao@lkmao-virtual-machine:~$ ls /boot/
config-5.15.0-41-generic      memtest86+.elf
config-5.15.0-43-generic      memtest86+_multiboot.bin
config-5.19.0                 System.map-5.15.0-41-generic
config-5.19.3                 System.map-5.15.0-43-generic
efi                           System.map-5.19.0
grub                          System.map-5.19.3
initrd.img                    vmlinuz
initrd.img-5.15.0-41-generic  vmlinuz-5.15.0-41-generic
initrd.img-5.15.0-43-generic  vmlinuz-5.15.0-43-generic
initrd.img-5.19.0             vmlinuz-5.19.0
initrd.img-5.19.3             vmlinuz-5.19.3
initrd.img.old                vmlinuz.old
memtest86+.bin
lkmao@lkmao-virtual-machine:~$ 

相比升级之前,文件夹中多了一系列xxx-5.19.3文件,自此升级完成。

3 config-5.19.0和config-5.19.3的差异

原本以为config-5.19.0和config-5.19.3会相同,然后diff一下,不一样,记录一下。

lkmao@lkmao-virtual-machine:/boot$ diff config-5.19.0 config-5.19.3 
3c3
< # Linux/x86 5.19.0 Kernel Configuration
---
> # Linux/x86 5.19.3 Kernel Configuration
763a764
> CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
8784a8786
> CONFIG_VIRTIO_ANCHOR=y
10957,10958c10959
< CONFIG_CRYPTO_BLAKE2S=m
< CONFIG_CRYPTO_BLAKE2S_X86=m
---
> CONFIG_CRYPTO_BLAKE2S_X86=y
11607d11607
< CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
lkmao@lkmao-virtual-machine:/boot$ 

总结

        相比第一次升级,这次升级更加流程,也更加得心应手。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340