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引导不上的时候不知所措。希望大家不要遇到同样的问题。

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

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值