麒麟OS开机卡在“timed out waiting for device”本质是systemd等待故障或不存在的块设备就绪超时90秒,需通过紧急模式定位失败单元、禁用对应device/mount单元,并注释fstab中问题条目,或配置x-systemd.device-timeout缩短等待时间。

麒麟OS开机卡在“timed out waiting for device”提示,本质是systemd等待某个块设备(如USB移动硬盘、未拔出的NTFS分区、故障SSD或挂载点配置错误的fstab条目)就绪超时,导致启动流程阻塞长达90秒以上。该问题必须从设备依赖链源头切断,不能仅靠延长超时时间掩盖。
确认超时设备并临时跳过
系统启动卡住时无法操作图形界面,需强制进入紧急模式中断引导流程:在GRUB菜单出现时按Ctrl+Alt+F2切换到TTY2终端,登录后执行以下步骤。
运行systemctl --failed查看失败单元,重点找dev-sdX2.device或mnt-data.mount这类以dev-或mnt-开头的红色条目——这就是systemd死等的设备。
执行sudo systemctl disable dev-sdX2.device(将sdX2替换为上一步查到的实际设备名),该命令不删除设备节点,仅移除systemd对该设备的启动依赖跟踪。
若失败单元显示为mnt-external.mount这类挂载点,直接执行sudo systemctl mask mnt-external.mount,这会创建符号链接指向/dev/null,彻底屏蔽该挂载单元加载请求。
永久清除fstab中引发超时的挂载项
多数超时源于/etc/fstab中配置了已不存在、格式不识别或权限不足的设备,systemd会反复尝试挂载直到超时。
第一步:用sudo nano /etc/fstab打开配置文件,逐行检查每行末尾的第6字段(是否启用fs_passno)和第5字段(是否启用dump备份)。若某行第6字段为1或2,且对应设备已移除(如U盘、移动硬盘),则该行必然触发超时。
第二步:定位到问题行后,在整行最前面添加#将其注释掉,例如把/dev/sdb1 /mnt/backup ntfs defaults 0 2改为# /dev/sdb1 /mnt/backup ntfs defaults 0 2。
第三步:特别注意UUID写法的行——运行lsblk -f核对UUID是否真实存在。若sudo blkid | grep sdb1无输出,说明该分区已消失或损坏,必须注释该行。【保留错误UUID会导致每次启动都重试3次,累计耗时27秒】
保存退出后执行sudo systemctl daemon-reload刷新unit缓存。
禁用特定设备的自动等待机制
方法一:用systemd命令屏蔽设备单元
若已知超时设备为/dev/sdc1,直接运行:sudo systemctl add-wants local-fs.target dev-sdc1.device → sudo systemctl disable dev-sdc1.device。
这条命令组合先解除local-fs.target对该设备的依赖,再禁用设备单元本身。
方法二:内核参数级跳过
编辑GRUB配置:sudo nano /etc/default/grub,找到GRUB_CMDLINE_LINUX行,在引号内末尾添加rd.timeout=30 rd.neednet=0(将默认90秒超时压缩至30秒),然后执行sudo update-grub。
方法三:强制标记设备为“可选”
对fstab中暂时无法移除的行,在第4字段(options)里追加x-systemd.device-timeout=5,x-systemd.requires=,例如:defaults,x-systemd.device-timeout=5,x-systemd.requires=。这会让systemd只等5秒就放弃,而非默认90秒。

















