1、问题描述
使用命令行升级ubuntu18到20版本后,系统提示重启,使用reboot命令重启后,不显示服务器ip,或是显示但无法ssh远程连接服务器了,使用屏幕连接服务器后发现出现grub问题。
2、问题经过
命令行输入如下升级ubuntu的命令,
升级完成后,使用reboot命令重启,出现如下grub问题
error:symbol grub_file_filters' not found.
Entering rescue mode...
grub rescue>
查询资料知道,这是进入救援模式了。因为升级后有了两个系统,系统不知道进入哪个了,电脑无法正常启动了,需要用户进行引导。
在救援模式下只有很少的命令可以用:set , ls , insmod , root , prefix
(1)set 查看环境变量,这里可以查看启动路径和分区。
(2)ls 查看设备
(3)insmod 加载模块
(4)root 指定用于启动系统的分区,在救援模式下设置grub启动分区
(5)prefix 设定grub启动路径
这里我不太会用,如有想了解的可以参考这篇文章
https://www.cnblogs.com/jins-note/p/9513335.html
我尝试了一些,最后放弃这种办法。
3、问题解决
3.1 制作u盘启动器
找一个空u盘,不然在制作启动器时也会格式化u盘,我使用的rufus,下的镜像是
rufus下载处:https://rufus.ie/zh/
ubuntu镜像下载处:https://ubuntu.com/download/alternative-downloads
点击网址进入后,下拉找到ubuntu20.04LTS,点进去
下拉,选择ubuntu-20.04.6-desktop-amd.iso,即带desktop且以iso结尾的,下载。
下载成功后,打开rufus,设备会自动检测到你的u盘,点击选择选中刚才下载的iso镜像,点击开始,
默认以iso镜像模式写入(推荐),点ok,
点确定,这里会格式化u盘。
准备就绪后,关闭即可,u盘启动器制造完成。
3.2 ubuntu引导修复
将u盘插入服务器主机,然后重启服务器,开机画面闪过时,点F11
通过上下键把选中状态移动到自己的磁盘上,通常是最后一个,然后enter确定。(如果不能确定哪一个是u盘,那可以先不插u盘到这一步,在插u盘到这一步对比可知)
然后会有try ubuntu和install ubuntu两个选项,这个图我没记录下来。由于我在等待过程中一直摁esc键,所以显示如下画面,其实一样,
选第一个 try ubuntu without installing。 如果是两个选项的也选try ubuntu就可以了。
然后就进入系统了,可以输一些命令了
打开命令行,以此输入如下命令,
安装 boot-repair
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair boot-sav
启动 boot-repair
sudo boot-repair
打开软件后选择 Recommended repair(推荐修复),根据提示进行操作。上述命令输入完毕后,关机,拔掉u盘,重启。
成功进入系统,更新grub
sudo update-grub
系统可以顺利打开,ubuntu系统也顺利更新,不过是从18更新到20,不知是什么原因没更新到22,完全使用的未指定版本的系统升级命令。此种升级办法有风险,不建议使用。
finish