一、问题现象
今天打开 VMware 中的 Ubuntu20.04,发现系统突然无法进入桌面。
具体表现如下:
- VMware 可以正常启动 Ubuntu
- 黑屏,没有登录界面
- 屏幕只有一个闪烁的光标
- Ctrl+Alt+F2(F3) 可以进入 tty 终端
- 输入用户名密码可以正常登录
- 之前一直正常使用,今天突然出现
如下图所示:
二、第一反应
很多人第一时间会怀疑:
- GDM 服务异常
- 显卡驱动问题
- VMware Tools 损坏
- Xorg 启动失败
于是我首先进入 tty:
Ctrl + Alt + F2
输入用户名密码登录。
三、查看磁盘空间
登录之后第一件事执行:
df -h
结果如下:
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 59G 56G 0 100% /
可以看到:
根目录已经100%占满!
这时候其实问题已经基本找到了。
由于 Ubuntu 图形界面(GDM)需要不断写日志、创建临时文件。
如果根目录已经没有任何可用空间,就会导致:
- GDM 启动失败
- apt update 失败
- 无法写日志
- 图形界面黑屏
四、apt 更新也失败
执行:
sudo apt update
出现大量错误:
No space left on device
例如:
Failed to fetch ...
Error writing to output file
No space left on device
进一步证明就是磁盘空间耗尽导致。
五、查看磁盘到底是谁占用了
执行:
sudo du -sh /*
得到:
33G /home
9.6G /opt
8.3G /usr
4.8G /var
继续查看 Home:
du -sh /home/*
以及
du -sh /home/用户名/*
我的目录主要是:
4.5G qt5.15
4.2G code
4.1G psplash_logo
1.4G occ
说明大量空间都是开发环境占用。
六、查看 /var
继续查看:
sudo du -ah /var | sort -hr | head -30
发现:
2.2G /var/log
1.4G /var/log/syslog
809M /var/log/journal
日志已经非常大。
七、释放磁盘空间
1、清空系统日志
sudo truncate -s 0 /var/log/syslog
清理 journal:
sudo journalctl --vacuum-size=100M
2、清理 apt 缓存
sudo apt clean
3、删除不需要的 build 文件
Qt 工程通常都会生成很多 build。
例如:
build-Desktop_Qt_5_15_Release
build-Desktop_Qt_5_15_Debug
这些都可以删除。
八、再次查看空间
重新执行:
df -h
结果:
Filesystem Size Used Avail Use%
/dev/sda5 59G 54G 1.9G 97%
已经恢复了一部分空间。
九、重新启动图形界面
执行:
sudo systemctl restart gdm3
或者直接:
sudo reboot
Ubuntu 成功进入桌面。
问题解决。
十、为什么磁盘满会导致黑屏?
Ubuntu 的图形桌面(GNOME/GDM)启动时需要:
- 写入日志
- 创建 Socket
- 创建 Runtime 文件
- 创建缓存
当根分区空间耗尽时:
No space left on device
很多服务都会启动失败,其中就包括:
gdm3
最终表现就是:
- 黑屏
- 无登录界面
- tty 可以正常进入
因此很多人误以为是显卡驱动问题,其实只是磁盘满了。
十一、建议
建议 Linux 根目录至少保留:
- 5GB 可用空间(最低)
- 10GB 以上更安全
Qt、OpenCV、OpenCASCADE 等开发环境编译生成大量中间文件,很容易把系统盘占满。
另外可以定期执行:
sudo apt clean
sudo journalctl --vacuum-size=100M
df -h
查看磁盘使用情况。
总结
如果 Ubuntu 在 VMware 中出现:
- 黑屏
- 无法进入桌面
- Ctrl+Alt+F2 可以进入终端
- apt update 提示
No space left on device
那么不要急着重装系统。
第一时间执行:
df -h
如果发现根目录已经 100%,先释放磁盘空间,再重启 GDM 或直接重启系统,通常即可恢复正常。
