Ubuntu 16.04.4 遇到 a start job is running for Hold until boot process finishes up
· 阅读需 3 分钟
昨天在启动 Ubuntu 16.04.4 LTS 系统时遇到一个很奇怪的问题:能够正常启动 X 环境、登录、进入桌面。但是按 Ctrl+Alt+F1 切换到命令行界面 tty1 时却出现了启动 splash 界面,按向上方向键查看启动信息时,发现最下面一行显示:
a start job is running for Hold until boot process finishes up (?min?s/no limit)
由于图形界面能够正常使用,尝试在图形界面下直接重启机器观察是否能够自动解决。重启后依然出现这个问题。
偶然将机器连接上网,系统正常启动,图形界面与命令行界面均正常。
因此怀疑是 Ubuntu 系统自动进行 APT 下载和更新功能阻塞了启动过程。反正平时就有不定时手动进行下载和更新的习惯,干脆全面禁用自动下载和更新特性。Ubuntu 16.04 LTS 版本中涉及禁用 APT 自动下载和更新的地方有三个:
/etc/apt/apt.conf.d/
下的配置文件
修改或创建 /etc/apt/apt.conf.d/10periodic
中的配置内容如下:
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
- Systemd 的定时任务
使用 sudo systemctl list-unit-files | grep apt
命令查看机器上与 APT 有关的全部 Systemd 定时任务或服务文件,一般有以下几个:
apt-daily-upgrade.service
apt-daily.service
apt-daily-upgrade.timer
apt-daily.timer
其中 .service
后缀的为服务,.timer
后缀的为定时任务。执行下列命令全部禁用:
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily.service
sudo systemctl disable --now apt-daily-upgrade.timer
sudo systemctl disable --now apt-daily.timer
附注 :几个可用的 Systemd 启动故障排除命令
sudo systemd-analyze blame
sudo systemd-analyze critical-chain
sudo systemd-analyze critical-chain network.target local-fs.target
sudo systemctl list-dependencies
参考