文章目录
1 背景及目的
最近开发时遇到了Ubuntu开机显示:/dev/xxx:clean, num1/num2 files, num3/num4 blocks
,且无法进入系统的问题,难以解决,且项目工期比较紧,寻找解决方法的时间并不充裕。本来已经备份了文件夹所有文件,打算重装系统。但总感觉应该存在转机。终于,皇天不负有心人,最后拼拼凑凑解决了无法启动的问题及之后的衍生问题。在项目阶段性完成后,每次重启都要重新启动网络和设置进入图形界面的问题也得到了解决。故做此记录,希望能帮助到遇到相同问题的同志们。
2 解决过程
2.1 无法进入系统问题的解决过程
Ubuntu开机停留在黑屏画面,且左上角有一行或多行/dev/xxx:clean, num1/num2 files, num3/num4 blocks
的打印(部分可能会多一行recovering journal
的打印)。以下是解决办法:
2.1.1 进入grub界面
重启计算机,进入到grub
界面(在计算机重启时长按shift键进入)。如果能看到有四个选项,那么问题很有可能就是刚好在系统更新时,断电重启了,导致更新终端,系统使用了残缺的旧版本导致了问题(怎么不能分一下A,B区,windows好像更新时重启随便玩)。幸运的是,如果是这个原因的话,刚好和本文高度契合,通过本文有极大概率能解决问题而不用重装系统。
2.1.2 进入安全模式
首先,从四个选项中选择旧版本(版本号更小)的修复模式(行尾有(recovery mode)
表示)进入,通常为倒数第二个。选择fsck
,修复磁盘。(其实这个方法貌似对整体问题没用,但是可以消除recovering journal
的打印)。然后选择root
进入到修复模式的命令行界面。
2.1.3 查看/boot/文件夹
输入命令
cd /boot/
ll
查看当前目录下所有的文件
2.1.4 转存高版本文件
将所有带有高版本版本号的文件存入到其他文件夹中(应该是可以去除的吧。磁盘空间够的话,不放心还是做一个备份吧),接下来几个命令用于达成这一目的,熟悉linux操作或有别的方式来处理可跳过此步骤
创建tmp文件夹
mkdir tmp
移动文件至tmp文件夹
mv FILE1 ./tmp/FILE1
移动(可以理解为剪切)FILE1到tmp中,FILE替换为需要移动的文件。(估计应该是config-VERSION-generic
、System.mp-VERSION-generic
、inittrd.img-VERSION-generic
和vmlinuz-VERSION-generic
四个文件,VERSION替换为高版本的版本号,例如5.15.0-130
,将其替换为自己电脑上的高版本号)。
2.1.5 重新生成grub.cfg
文件
重新生成grub.cfg
文件
sudo grub-mkconfig -o /boot/grub/grub.cfg
重新生成后的grub.cfg
文件会将对(残缺的)高版本的调用去除,此时可以尝试重启电脑,应该会恢复到之前的版本。
重启后能进入到系统,没有图形界面或无法联网,可参考以下解决方案。
2.2 无法联网问题的解决过程
可以通过每次手动输入:
sudo dhclient
来自动获取网络配置信息,等待运行完成后,可联网。但关机后配置丢失,每次开机都需要对此进行配置。
可使用如下方法进行永久设置。
2.2.1 配置Network
- 检查Network是否启用:
如果输出为systemctl is-enabled NetworkManger
disable
或false
则需要重新进行启用:- 启用NetworkManager服务:
sudo systemctl enable NetworkManger.service
- 重启NetworkManger服务:
若问题解决直接进入到2.3对图形界面的配置,若未解决,则尝试接下来的步骤。sudo systemctl restart NetworkManger.service
2.2.2 修改NetworkManger配置
- 编辑
/etc/NetworkManager/NetworkManager.conf
文件sudo vim /etc/NetworkManager/NetworkManager.conf
- 如果电脑中没有vim可以使用vi或任何电脑上有的文本编辑器打开文件进行修改
如果没有任何文本编辑器,先使用临时的方式恢复网络并下载vi或vim。(建议一定要备一个vim,vi非图形界面进行编辑时会显示不全,导致可能界面上还在删除第X行,实际在删除第X+Y行,导致修改问题。在之前用vi尝试手动修改sudo vi /etc/NetworkManager/NetworkManager.conf
grub.conf
文件时数据删错了,当然,有自动生成的方法就不用手动改了) - 确保文件中的
[ifupdown]
项部分包含一下内容,并进行保存[ifupdown] managed = true
- 重启NetworkManager服务
若问题解决直接进入到2.3对图形界面的配置,若未解决,则尝试接下来的步骤。sudo systemctl restart NetworkManager.service
2.2.3 使用Netplan配置网络
- 查看网络接口
找到你的网络接口并记下ip link show
- 编辑
Netplan
配置文件,添加或修改以下内容并保存
将其中的network: version: 2 ethernets: ETH: dhcp4: true optional: true
ETH
替换为步骤1中记录的你的网络接口 - 应用配置
sudo netplan apply
- 启用
networking
服务sudo systemctl enable networking.service
- 重启
networking
服务
等待1min尝试重新联网,应该能解决问题。sudo systemctl restart networking.service
2.3 无图形界面问题的解决过程
2.3.1 调整运行等级
Ubuntu的运行等级决定了系统的状态,当处于低等级时,系统将不会启用图形界面以节省资源。
- 查看当前运行等级
如果显示的等级为3,则说明现在处于文本模式,需要切换到等级5的图形模式。如果为5,则可跳过2.3.1,尝试之后的方法。sudo runlevel
- 设置默认运行等级
sudo systemctl set-default graphical.target
- 查看当前运行等级
如果输出为systemctl get-default
graphical.target
,则表示当前运行级别为5了。若重启后能自动进入图形界面,则问题解决,可跳过2.3.2的步骤。若问题未解决,可尝试一下步骤2.3.2。
2.3.2 重装gdm
未安装完的新版本可能导致显卡驱动出现损坏,导致无法显示图形化界面或只能识别到一块显示屏等奇怪的问题,可以尝试重装gdm来解决此问题。(当然,前提保证首先要有网络才能进行重装)
- 卸载nvidia组件
sudo apt-get
- 卸载gdm和gdm3
sudo apt purge gdm gdm3
- 重新安装gdm3
sudo apt install gam3 ubuntu-desktop
- 重启服务
systemctl restart gdm
3 建议
如果本文未能解决问题,深感遗憾。再去寻找新的办法吧,少年!
有志者,事竟成,破釜沉舟,百二秦关终属楚
苦心人,天不负,卧薪尝胆,三千越甲可吞吴
(实在不行还是重装系统吧,记得做好备份)