Ubuntu 16.04.3 LTS添加nosplash参数后引发严重卡顿问题
让我帮你拆解这个问题——把splash改成nosplash解决了磁盘解密时无法输入密码的问题,却引发登录后系统卡顿,核心原因基本和Ubuntu的启动界面服务Plymouth以及显卡/显示初始化逻辑相关,具体可以从这几个方向分析:
显卡驱动初始化异常,被迫用软件渲染
Plymouth(就是启动时那个带进度条的图形化加载界面)依赖显卡驱动来渲染界面。当你设置nosplash时,系统会跳过Plymouth的加载流程,但部分显卡驱动(尤其是闭源的NVIDIA驱动)会把Plymouth的加载作为自身初始化的触发条件。跳过这一步后,显卡驱动可能在启动阶段没有完成正确的硬件加速配置,导致登录桌面后,Xorg或Wayland服务只能用CPU进行软件渲染——这直接会让输入字符、窗口操作变得延迟极高,毕竟软件渲染完全靠CPU扛下所有图形计算任务。文本控制台分辨率与桌面环境不兼容
启用nosplash后,系统启动时会停留在低分辨率的文本控制台模式(比如800x600)。如果显卡驱动没有在登录桌面时自动切换到你的显示器原生分辨率,桌面会强制拉伸低分辨率画面,或者反复尝试切换分辨率却失败,这会持续占用大量GPU资源,导致操作响应变慢。Plymouth残留服务后台空等,占用资源
虽然你通过grub参数禁用了splash界面,但Plymouth的相关服务(比如plymouth-quit-wait)可能还在后台运行。这些服务原本是配合图形化启动界面完成收尾工作的,现在没有了splash界面,它们会持续等待某个不存在的信号,导致CPU或IO被无意义占用,拖慢整个系统的运行速度。意外修改了其他内核参数(比如丢失了
quiet)
如果你在编辑/etc/default/grub时不小心改动了其他参数(比如删掉了quiet),系统启动时会输出大量内核日志到控制台,这些日志会持续占用磁盘IO资源,甚至登录后还在后台写入,间接导致系统卡顿。
可以尝试的解决方向
- 保留splash并修复输入问题:把grub参数改回
splash,同时添加plymouth:force-udev到GRUB_CMDLINE_LINUX_DEFAULT中,执行sudo update-grub后重启。这个参数会强制Plymouth使用udev设备,既解决解密时无法输入的问题,又能让显卡驱动正常初始化,避免卡顿。 - 检查显卡驱动状态:执行
glxinfo | grep "OpenGL renderer"(需要先安装mesa-utils),如果输出显示llvmpipe,说明系统正在使用软件渲染,建议重新安装对应型号的显卡驱动。 - 彻底禁用Plymouth服务:如果确实不需要splash界面,可以执行
sudo systemctl disable plymouth.service plymouth-quit-wait.service,然后重启系统,看看卡顿是否消失。
内容的提问来源于stack exchange,提问作者Ryan

