Ubuntu系统误删内核后修复方法

0、前言

        这两天不小心触发了这个问题,导致我花费了很多时间去恢复服务器的使用,在过程中也是查资料遇到很多问题,现在解决问题了,我尽量描述清楚,如果你们不幸也遇到了同样的问题,可以先大致看一遍,避免犯错浪费时间。

1、事件发生

       我的电脑是Ubuntu22.04的一台自用GPU服务器,装的是windows-ubuntu双系统。 前几天我更新了一下系统,即sudo apt update&sudo apt upgrade。导致了内核升级,与nvidia驱动不合,导致nvidia-smi报错,无法使用gpu训练。最后研究驱动的时候不小心把所有内核一下删掉了,导致最后无法进入ubuntu系统,只能进入win系统。内核就是下面这些东西:

2、解决问题(修复内核)

        发现没法进入系统之后,不用担心,文件系统都是独立的,不会丢失,我们只要想办法把内核恢复就行了。

        参考了一些资料:参考网站1参考网站2

2.1 制作Ubuntu启动盘

        这个就是安装Ubuntu系统时肯定做过的,去Ubuntu官网下载自己电脑上对应版本的iso文件,我原本用的Ubuntu22.04,下载的也是22.04。然后我用的UltralSO制作的启动盘。这一步在网上教程很多,很简单。

2.2 进入Try Ubuntu系统

        这一步就是要先调整Bios里的启动顺序,U盘启动,选择try ubuntu,不安装,可以到一个图形界面。

2.3 运行一些命令

运行以下代码,可以查看当前的磁盘分区。

sudo fdisk -l

        我是两块硬盘,Ubuntu系统是装在固态上的,然后还有一个2T的机械当数据盘。输出就是下面这样,显示的有两块设备,一个叫/dev/nvme0n1,一个是/dev/sda1。/dev/nvme0n1是固态,我的系统安装在固态上,我们后面就关注这个固态的分区。其中p2~p5是windows系统的,这里不用管,我们可以看到p6~p8是和windows相关的。

        我记得当时装ubuntu系统的时候,分了4个区域,一个是/boot(很重要),一个swap区域,一个根目录(系统软件),一个存文件的/home。/boot是/dev/nvme0n1p6,swap对应的就是/dev/nvme0n1p7,根目录/是/dev/nvme0n1p8,/home是/dev/sda1

        然后按照上文参考网页的方案,进行挂载。

挂载根目录

sudo mount /dev/nvme0n1p8 /mnt

挂载/boot(重要!!!

sudo mount /dev/nvme0n1p6 /mnt/boot

参考网站1如果你不知道哪个是根目录哪个,可以挂载后用ls /mnt看看。如果像下图一样有很多文件夹的话就是对的。

而如果是ls /mnt/boot下面出现grub之类的名字就是对的,这个主要是用来引导系统启动的。

挂载完上面两步之后,再按别人方法执行一些别的代码。

sudo mount --bind /dev /mnt/dev
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc

 上面这3个我不太清楚目的是什么,我就照做了。

然后:

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

进入挂载的系统:

sudo chroot /mnt
sudo apt-get install linux-image-generic #安装系统内核
sudo update-grub #更新grub

 如果sudo update-grub这一步出问题的,就是前面/boot没有挂载对。比如我遇到的:运行update-grub的时候报错。sourcing file '/etc/default/grub' sourcing file '/etc/default/grub.d/init-select.cfg' /usr/sbin/grub-mkconfig: 275:cannot create /boot/grub/grub.cfg.new: Directory nonexistent和/usr/sbin/grub-probe 获取/cow的规范路径失败这些。就是前面没挂对,挂对了是不会报错的,我在这里卡了一会,才想起来我装系统的时候boot是单独分区的,不是和根目录一起的。

运行完后我也没有卸载挂载,直接重启了,拔掉U盘。后面又遇到了新的问题。

2.4 修复引导项

        重启后我会遇到和参考网页1 参考网页2 一样的问题,此时如果输入exit直接就进入了Windows系统,这时的问题是这样的,Ubuntu内核虽然修复好了,但引导有问题。

        参考上面的两个网页,先临时进入Ubuntu,然后使用boot repair永久修复一下。这样最后重启的时候就还是和以前一样可以选择Ubuntu和Windows系统了,到此,问题解决。

2.5 解决Nvidia驱动问题

        最后解决我最初的问题,感觉自从ubuntu18.04后都不需要官网下载nvidia驱动包安装,还要禁什么原始驱动很麻烦。打开软件更新器,找到附加驱动,先改成Xorg,应用更改,重启。

然后不管原来有没有驱动,都卸载了。因为我们动了内核了,驱动很可能有问题。

sudo apt-get --purge remove nvidia*
sudo apt autoremove
sudo apt-get --purge remove "*cublas*" "cuda*"
sudo apt-get --purge remove "*nvidia*"

         卸载完后,再到软件更新器,选择nvidia-driver-535,应用更改,最后重启完,回来输入nvidia-smi就显示正常啦。

        这里用不了图形界面的可以用代码。

ubuntu-drivers devices

 先

sudo apt install xserver-xorg-video-nouveau

 然后卸载~~

最后

sudo apt install nvidia-driver-535

这样也是一样的,记得重启电脑,sudo reboot

3、后记

        系统问题还是很烦的,困扰了我很长时间,主要卡在两个点上,一个是/boot没设置对,另一个就是ubuntu引导不上的时候不知所措。希望大家不要遇到同样的问题。

        千万不能手贱了,看到可以更新马上就更新,特别是还要跑程序的时候,耽误了两天时间,真烦啊。

<think>好的,用户想在Ubuntu系统中卸载软件,需要知道方法和命令。首先,我得回忆一下相关的知识。记得在Ubuntu里,卸载软件通常用apt或apt-get命令,但可能还有其他方法。 用户提到要干净卸载,也就是不仅删除软件本身,还要清理配置文件和可能的依赖。根据提供的引用,特别是引用[3]里的命令,--purge参数可以删除配置文件。所以基本的命令应该是sudo apt-get remove或者sudo apt remove,再加上--purge选项。例如sudo apt-get --purge remove package_name。 另外,用户可能不知道如何查找已安装的软件包,所以可能需要告诉他们用dpkg --list或者apt list --installed来找软件名称。还有自动卸载依赖的功能,可能用sudo apt autoremove,但要注意这可能会删除其他软件不需要的依赖,所以需要谨慎。 还有提到使用Synaptic图形界面工具,这可能对不习惯命令行的用户有帮助。引用[1]里也提到干净卸载需要移除配置和依赖,所以需要解释清楚每个步骤的作用。 用户的问题可能还涉及如何确保卸载干净,比如检查残留文件,或者处理开机启动项,但根据引用[2],后者可能是在卸载双系统时的步骤,和软件卸载关系不大,但需要注意区分。 需要确保回答的结构清晰,分步骤说明命令行和图形界面两种方法,并提醒注意事项,比如确认软件名称、谨慎使用autoremove等。还要生成相关问题,可能涉及其他卸载方式、处理依赖问题或者清理残留文件的方法。</think>### 如何在 Ubuntu 系统中卸载软件 #### **方法一:通过命令行卸载(推荐)** 1. **卸载软件并保留配置文件** 使用以下命令仅移除软件本体,但保留用户配置文件(便于重新安装时恢复配置): ```bash sudo apt remove 软件名称 ``` 例如卸载 Firefox: ```bash sudo apt remove firefox ``` 2. **彻底卸载软件及配置文件** 添加 `--purge` 参数可同时删除软件及其配置文件,实现“干净卸载”[^3]: ```bash sudo apt-get --purge remove 软件名称 ``` 3. **自动清理无用依赖** 某些软件安装时会引入依赖包。卸载后,若依赖不再被其他程序使用,可通过以下命令清理: ```bash sudo apt autoremove ``` **注意**:此操作需谨慎,避免误删其他程序所需的依赖。 4. **查找已安装的软件名称** 若不确定软件包名称,可通过以下命令列出所有已安装的软件: ```bash dpkg --list | grep 关键字 ``` --- #### **方法二:通过图形界面卸载** 1. 打开 **Ubuntu 软件中心**,搜索目标软件,点击“移除”按钮。 2. 使用 **Synaptic 包管理器**(需手动安装): ```bash sudo apt install synaptic ``` 安装后打开 Synaptic,搜索软件名称,右键选择“标记以便彻底删除”即可[^1]。 --- #### **注意事项** - 卸载系统关键组件可能导致系统不稳定,操作前请确认软件用途。 - 若遇到依赖冲突,可使用 `sudo apt --fix-broken install` 尝试修复。 - 部分软件(如 Docker、VirtualBox)可能需要额外步骤清理内核模块或服务。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值