自己的电脑是22年买的thinkbook16+,乘着今年双11给它加了一个外接显卡,在windows上能成功识别并使用,但是在ubuntu18.04上因为无法识别出雷电接口,所以无法使用。后来换成20.04的版本竟然又可以,比较两者的区别后,初步推测是内核版本稍低,遂尝试升级内核,已验证自己的猜测。
安装前的说明:
ubuntu18.04自带的内核版本是5.4.0,经过多方查证,并实际测试发现可以在官网下载的最高内核版本(编译不报错的情况)是5.9的,感谢这位好兄弟的资料。但可惜经测试5.9雷电接口也不识别,只能看向6.x的内核
Ubuntu 18.04 系统,显卡、无线、有线网卡驱动丢失,重装系统,升级内核,HDMI输出,等等工作记录_ubuntu更新网卡驱动_Analeptic的博客-CSDN博客
但5.9以上的内核无法在Index of /mainline上,通过下载几个.deb文件,实现对内核的编译升级,(会出现报错如libc6版本低了,不匹配),只能使用编译的方法。
1.查看当前ubuntu的内核版本
uname -r
ok,确定我们当前ubuntu的内核是5.4.0,接下来去选择内核版本。
2.选择内核版本
前往The Linux Kernel Archives,选择内核版本。
2.1对想升级的内核版本无要求
不听不管,直接点上面的黄色下载按钮,坐等下好
2.2对内核版本有要求
看到tarball了没,点他,然后坐等下好
注意:在相关版本前面不是还有mainline、stable、longterm这些前缀嘛,我认为选stable更好,因为这个版本相对较新,而且较为稳定。
3.依赖安装
sudo apt-get install libncurses5-dev openssl libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install pkg-config
sudo apt-get install libc6-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libelf-dev
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
4.解压
对刚刚下载好的安装包进行解压。如,我下载的是6.1.62,所以是
tar -xavf linux-6.1.62.tar.xz
5.开始安装
5.1将解压后的文件移动到/usr/src下
sudo mv linux-6.1.62/ /usr/src/
cd /usr/src/linux-6.1.62/
5.2安装前的准备
将源码目录净化一下,以防万一
sudo make mrproper
sudo make clean
5.3配置内核
sudo make menuconfig
(可能会出现报错,看后面的相关报错的解决方法)
会出现以上的窗口,有需要的可以自己进行配置。我们作为小白,什么都别动,直接选择Exit按回车就行
5.4开始编译安装
sudo make -j16
开始漫长的编译,这段时间去做做其他事吧
注意:建议多执行几次make,这样可以让你看见出现报错的地方。其中我也遇到了一些,解决方法看后面
成功的标志:出现kernel什么ready (#2)
接着执行
sudo make -j16 INSTALL_MOD_STRIP=1 modules_install
sudo make install
这里解释一下加入INSTALL_MOD_STRIP=1的原因。如果不加,编译同样可以成功,grub上也会出现编译好的内核选项,但当你重启选择新编译的内核版本时,可能会出现out of memory,从而导致无法进入系统。
6.更新grub
sudo update-grub
可以看到,我们编译的内核已经在grub中了,然后重启,选择自己新编译的内核。
7.结果
uname -r
可以看到现在我们的内核是6.1.62了,再看看我们需要的雷电接口
ok,也有了。让我们开始接入外界显卡,好好爽爽吧!
报错汇总:
报错1:Your display is too small to run Menuconfig! It must be at least 19 lines by 80 columns.
解决方法:
把窗口拉大(终端)
报错2:No rule to make target ‘canonical-revoked-certs.pem‘
解决方法:
sudo scripts/config --disable SYSTEM_REVOCATION_KEYS
报错3:BTF: .tmp_vmlinux.btf: pahole (pahole) is not available Failed to generate BTF for vmlinux Try to disable CONFIG_DEBUG_INFO_BTF
解决方法:
sudo apt-get install dwarves
报错4:/bin/sh: 1: lz4c: not found arch/x86/boot/compressed/Makefile:144: recipe for target 'arch/x86/boot/compressed/vmlinux.bin.lz4' failed
解决方法:
sudo apt-get update
sudo apt-get install liblz4-tool
报错5:内核编译成功后,重启,选择新内核,出现out of memory
解决方法:
将sudo make modules_install
改为sudo make -j16 INSTALL_MOD_STRIP=1 modules_install
11.15 更新:编译更新前的准备(十分重要!!!)
之后,我再次重装系统后,按照上面的步骤编译更新内核,虽然内核是成功升级了(这次内核的版本是6.6.1),但thunderbolt接口还是不识别!!!
后来通过我的测试,发现在编译安装前需要用dpkg -i *.deb的方式将内核升级至5.9版本(我选择的是5.9.16)
1)去Index of /mainline 选择将要下载的内核版本(我选的是5.9.16)
2)使用wget下载4个.deb文件
wget linux-headers-5.9.16-050916_5.9.16-050916.202012211331_all.deb
wget linux-headers-5.9.16-050916-generic_5.9.16-050916.202012211331_amd64.deb
wget linux-image-unsigned-5.9.16-050916-generic_5.9.16-050916.202012211331_amd64.deb
wget linux-modules-5.9.16-050916-generic_5.9.16-050916.202012211331_amd64.deb
3)运行
sudo dpkg -i *.deb
然后等待完成,完成后重启进行检查文章来源:https://www.toymoban.com/news/detail-761669.html
等内核更新至5.9后,再使用编译的方法更新至6.6,发现thunderbolt接口可以识别了文章来源地址https://www.toymoban.com/news/detail-761669.html
到了这里,关于ubuntu18.04内核升级(使用编译的方法达到内核6.1.62)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!