周末值班,碰到台麒麟V10的机器,开机直接卡在 Plymouth 引导动画那,进度条死活不动。同事说昨天还好好的,今天就这样了。
这种问题,大概率是图形界面或者某个驱动服务卡死了。
先别急着想重装。试试进救援模式或者恢复模式。开机的时候,在GRUB引导菜单那里,选带"(recovery mode)"或者"高级选项"进去。麒麟和统信的GRUB菜单长得差不多,Linux的也类似。
进去之后,你会看到一个蓝色的菜单,选"root"或者"以root身份进入shell"。这时候你就有最高权限了。
第一步,看看磁盘是不是满了
我遇到过好几次,/boot分区被旧内核塞满,导致新内核装不上,启动就出问题。
敲命令:
df -h
重点看 / 和 /boot 这两个挂载点,Use% 是不是100%或者接近了。
如果满了,就得清理。清理旧内核,在麒麟和统信上可以用:
sudo apt autoremove --purge
注意,这会移除所有不再需要的旧内核和软件包,比较彻底。
或者手动删,先:
uname -r
看当前用的内核,然后:
dpkg --list 'linux-image-*'
列出所有内核,把版本号比当前旧的,用:
sudo apt remove --purge linux-image-版本号-generic
千万看好别删错了当前内核!
第二步,如果磁盘没问题,试试重建图形界面的配置
有时候Xorg或者Wayland的配置文件坏了。可以尝试:
sudo dpkg-reconfigure xserver-xorg
(针对X11)
或者更简单粗暴点,把当前用户的图形配置文件改个名备份,让它重新生成:
mv ~/.config ~/.config.bak
mv ~/.cache ~/.cache.bak
重启后系统会生成新的默认配置。
桌面环境像UKUI、DDE的个性化设置会丢,但至少能进系统了。这个方法在麒麟(UKUI)和统信(DDE)上都管用。
第三步,检查日志
这才是高级维护的核心。进系统后(或者就在救援模式下),用 journalctl 命令看系统日志。
journalctl -xb -p err
这条命令会显示本次启动以来所有错误(err)及以上级别的日志。仔细看,里面往往有"Failed to start xxx.service"之类的关键信息。
比如,如果是NVIDIA驱动挂了,日志里会有相关报错。
说到驱动,这是个大坑
银河麒麟和统信UOS对闭源驱动,尤其是NVIDIA的,兼容性有时候挺玄学的。
如果你更新系统后黑屏或卡LOGO,八成是驱动问题。在救援模式下,可以尝试卸载现有驱动:
sudo apt purge nvidia
sudo apt autoremove
然后重启,系统会用回开源的nouveau驱动,虽然性能差些,但能保证进桌面。
之后再去"驱动管理器"(麒麟和统信都有这个图形工具)里,选一个官方推荐的、版本号不是最新的稳定驱动试试。
别追新,稳定第一。
再分享一个深度调优的例子
有台跑虚拟化服务的统信UOS,总觉得IO性能不行。
除了常规的检查磁盘健康:
smartctl -a /dev/sda
和调度算法:
cat /sys/block/sda/queue/scheduler
可以尝试改成deadline或noop。
还可以看看是不是内存不足导致频繁交换(swap):
free -h
看swap用量。如果swap used很高,说明物理内存不够用了。
可以临时调整swapiness参数,让系统更积极地使用物理内存:
sudo sysctl vm.swappiness=10
默认是60,数值越低越倾向于用物理内存。
然后写到配置文件里永久生效:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
对于银河麒麟和Linux服务器,这个优化同样有效。
最后,说个通用Linux的急救技巧
用Live USB启动。把系统安装U盘或者一个Ubuntu/Debian的Live USB插上,从U盘启动,选择"试用而不安装"。
进去后,打开终端,挂载你原来系统的根分区:
sudo mount /dev/sdaX /mnt
(X是你的系统分区号)
然后:
sudo chroot /mnt
这样你就"进入"了原来损坏的系统环境,可以随意修复引导:
grub-install
update-grub
修改配置文件、卸载问题软件,而不用受原系统无法启动的限制。
这招是真正的"起死回生术"。
维护这东西,经验都是踩坑踩出来的。多看日志,多动手试,别怕折腾虚拟机。
遇到问题先想"它之前我动了什么",答案往往就在变更里。
关注我,每天一个信创维护经验分享。