【Ubuntu内核】解决Ubuntu 20.04更新内核后无法联网的问题

最近在使用Ubuntu 20.04时,在更新内核后无法进行WiFi联网。我的电脑上装载的是AX211型号的无线网卡,之前安装了相应的驱动,并且一直正常使用。但不小心更新到了Linux 5.15.0-94-generic后,突然发现无法连接网络了。

于是首先怀疑是不是内核版本的问题导致的,尝试降低内核版本启动看是否能够正常连接WiFi。进入了系统启动时的GNU Grub界面,然后选择了Advanced options for Ubuntu,选择较低的内核版本Linux 5.15.0-92-generic进行启动,进入系统后发现WiFi可以正常工作。于是决定修改默认启动的内核版本为该旧版本。

解决方法

1. 查看内核启动顺序

使用以下命令查看内核的启动顺序:

grep menuentry /boot/grub/grub.cfg

结果显示了系统中存在的多个内核版本以及它们的启动选项:

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d19495dd-3419-4586-9b13-b5c523ce9591' {
submenu 'Ubuntu 的高级选项' $menuentry_id_option 'gnulinux-advanced-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu,Linux 5.15.0-94-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-94-generic-advanced-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu, with Linux 5.15.0-94-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-94-generic-recovery-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu,Linux 5.15.0-92-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-92-generic-advanced-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu, with Linux 5.15.0-92-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-92-generic-recovery-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu,Linux 5.15.0-67-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-67-generic-advanced-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu, with Linux 5.15.0-67-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-67-generic-recovery-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu,Linux 5.15.0-46-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-46-generic-advanced-d19495dd-3419-4586-9b13-b5c523ce9591' {
	menuentry 'Ubuntu, with Linux 5.15.0-46-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-46-generic-recovery-d19495dd-3419-4586-9b13-b5c523ce9591' {
menuentry 'Windows Boot Manager (在 /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-5ED4-0D9E' {

居然装了这么多版本的内核。。。
发现了所需的Linux 5.15.0-92-generic。菜单索引从0开始,即:
0: ‘Ubuntu,Linux 5.15.0-94-generic’
1: ‘Ubuntu, with Linux 5.15.0-94-generic (recovery mode)’
2: ‘Ubuntu,Linux 5.15.0-92-generic’
3: ‘Ubuntu, with Linux 5.15.0-92-generic (recovery mode)’

因此希望降低到的内核版本Linux 5.15.0-92-generic在菜单中的位置为2。

2. 编辑GRUB配置文件

然后,编辑GRUB配置文件,使用命令sudo gedit /etc/default/grub打开,并设置GRUB_DEFAULT以指定默认启动的内核版本。

GRUB_DEFAULT="1>2"

GRUB_DEFAULT中,索引值的格式是x>y,其中x表示主菜单中的索引值,而y表示子菜单中的索引值。对于主菜单中的选项,索引从0开始计数,而对于子菜单中的选项,索引同样从0开始计数。

所以,当填写GRUB_DEFAULT="1>3"时,我指定的是主菜单中的第2个选项(索引1,即Advanced options for Ubuntu),以及在子菜单中的第3个选项(索引2)。这个索引值需要根据实际情况调整。

3. 更新GRUB配置文件

保存并关闭文件后,运行命令来更新GRUB配置文件,以使修改生效:

sudo update-grub

4. 重启系统

重启电脑,发现问题得到了解决,系统默认启动了旧的内核版本,可以正常联网了。


卸载内核的方法

请注意:执行操作存在风险,如操作不当可能导致系统不稳定甚至无法运行。请在执行任何操作之前谨慎考虑,并确保备份重要数据。

步骤一:确认已安装的内核版本

首先,我们需要确认系统中已安装的内核版本。运行以下命令来列出已安装的内核版本:

dpkg --list | grep linux-image

这会列出已安装的所有内核版本,包括其版本号:

ii  linux-image-5.15.0-46-generic                 5.15.0-46.49~20.04.1                  amd64        Signed kernel image generic
ii  linux-image-5.15.0-67-generic                 5.15.0-67.74~20.04.1                  amd64        Signed kernel image generic
ii  linux-image-5.15.0-92-generic                 5.15.0-92.102~20.04.1                 amd64        Signed kernel image generic
ii  linux-image-5.15.0-94-generic                 5.15.0-94.104~20.04.1                  amd64        Signed kernel image generic

步骤二:卸载不需要的内核版本

假设你想要卸载版本号为5.15.0-94-generic的内核版本。首先,运行以下命令来卸载该内核版本:

sudo apt-get purge linux-image-5.15.0-94-generic

这一步可能会同时安装一个名字含有image-unsigned的包。接下来,继续运行以下命令来卸载该包:

sudo apt-get purge linux-image-unsigned-5.15.0-94-generic

通过以上步骤,可以卸载Ubuntu 20.04中不需要的内核版本。执行

dpkg --list | grep linux-image

查看已安装内核,可发现linux-image-5.15.0-94-generic已被卸载:

ii  linux-image-5.15.0-46-generic                 5.15.0-46.49~20.04.1                  amd64        Signed kernel image generic
ii  linux-image-5.15.0-67-generic                 5.15.0-67.74~20.04.1                  amd64        Signed kernel image generic
ii  linux-image-5.15.0-92-generic                 5.15.0-92.102~20.04.1                 amd64        Signed kernel image generic

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