问题
从stretch升级到buster后,我的笔记本电脑在fsckd检查期间卡在启动状态,并显示消息:
fsckd-cancel-msg:Press Ctrl+C to cancel all filesystem checks in progress
它不响应“Ctrl+C”或其他任何内容。
背景
升级
我从拉伸升级到破坏跟随这教程。为了防止链接失效,以下是按连续顺序排列的命令:
su
sed -i 's/stretch/buster/g' /etc/apt/sources.list
apt update
apt upgrade
apt dist-upgrade
apt autoremove
apt clean
shutdown -r now
没有错误消息。
开机
在重新启动期间,进行了强制性的 fskd 检查,这以前从未引起过任何问题。然而现在,它以上述错误消息结束。手动关闭电源然后再次打开会导致相同的结果。
我尝试过的
这问题在Ubuntu上也有同样的问题。由于 Debian 和 Ubuntu 很相似,我认为接受的答案可以解决我的问题。我的方法遵循答案:
救援模式
我手边没有 Live USB,所以我在 Linux 4.19.0-12-amd64 x86_64(救援模式)中启动并提供了 root 密码进行维护。
fdisk -l
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 625141759 624640002 297.9G 5 Extended
/dev/sda5 501760 625141759 624640000 297.9G 83 Linux
然后,我对所有列出的磁盘以及/dev/mapper/debian--vg-root
和上运行了手动 fsck /dev/mapper/debian--vg-home
,所有这些磁盘都恢复正常。然后我重新启动,想也许问题已经解决了。
救援模式图形化
唉,重新启动后又出现同样的错误。所以我再次手动关闭并打开电源,再次以救援模式启动。然而这一次,我没有提供 root 密码,而是按下Ctrl+D
继续键。启动完成,除了黑屏什么都没有显示。所以我用 tty 切换Ctrl+Alt+F1
,用我的非 root 标准用户登录。然后我开始了一个 X11 会话startx
(除了我更喜欢图形会话之外,没有什么充分的理由)。
这已经向我表明升级已经成功,因为巴斯特的光学系统与拉伸时的光学系统略有不同。只是为了确保我检查了我的发行版lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
坏块扫描
我跑sudo e2fsck -fccky
了所有/dev/sdaX
和/dev/mapper/debian-vg-X
,花了将近两个小时。重新启动显示错误仍然存在。
格帕特
我运行了 gparted,但由于我的磁盘是 LUKS 加密的,所以我看不到任何有用的东西(有关的问题)。
检查 /var
我在多个地方看到完整的/var
可能会导致类似的问题。由于我无法像建议的那样用 gparted 检查它,所以我按照建议检查了它这里:
sudo du -ks *|sort -nr
然而,输出看起来并不很完整:
698456 lib
100720 cache
53824 log
6688 backups
76 spool
68 tmp
32 snap
8 mail
4 opt
4 local
0 run
0 lock
另外,输出df
看起来像这样:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1988192 0 1988192 0% /dev
tmpfs 402032 6508 395524 2% /run
/dev/mapper/debian--vg-root 28703652 10165160 17057380 38% /
tmpfs 2010160 133528 1876632 7% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 2010160 0 2010160 0% /sys/fs/cgroup
/dev/sda1 240972 89448 139083 40% /boot
/dev/mapper/debian--vg-home 273421644 24010648 235452240 10% /home
/dev/loop0 212864 212864 0 100% /snap/firefox/172
/dev/loop2 100096 100096 0 100% /snap/core/10185
/dev/loop1 100096 100096 0 100% /snap/core/10126
tmpfs 402032 24 402008 1% /run/user/1000
所以我不认为这是问题所在。
启动时停止 fsck
使用电池电源启动
所以我想我可以阻止 fsck 在启动时运行,就像这里。但是,使用电池电源启动并按下Ctrl+C
没有明显效果,仍然是相同的错误。
调2fs
按照提议这里我用了tune2fs -c 0 -i 0 /dev/sda1
。但即使Maximum mount count
设置为-1
和Check interval
to 0 (<none>)
,错误仍然存在。
我还发现这解决方案,但由于这是针对archlinux的,而且我对grub一无所知,所以我没有尝试它。
附加信息
- 启动时,我很困惑地发现我的笔记本电脑上显然有两个内核版本:4.19 和 4.9。这是因为升级还是它一直存在而我只是从未见过?
- 一个常见问题似乎是安装 nvidia 驱动程序时,这就是为什么上面链接的教程建议在升级之前将其删除。不过,我从未安装过 nvidia 驱动程序,所以这不是原因。
- 一个相似的问题通过安装解决了
nvidia-drivers
。然而,apt
告诉我Unable to locate package nvidia-drivers
。
问题
如何防止fsckd
系统在启动时锁定?
答案1
我建议检查托管 Debian 的卷是否有足够的可用空间。如果它已满或几乎已满,您需要增加其可用空间然后重新启动。 Debian 将启动。瞧。
下面是与上面相同的建议。但为那些不熟悉如何检查可用空间并增加可用空间的人提供了详细信息。
我们的一款设备也面临着同样的挑战。在我们的例子中,这个挑战的原因是,存储 Debian 的设备卷已满。可用空间为零。反过来,在启动过程中,fsck 会自动启动。 fsck 需要少量的空间才能完成其自动化。反过来,fsck 也被卡住了。因为它无法完成自动化。不幸的是,fsck 在开始自动化之前不会检查可用空间。这将是一个很好的新功能。
我们能够在其他 3 台设备上重现这一挑战。只需填充他们的存储即可。
解决这一挑战的步骤:
使用终端,执行此命令以查找卷是否已满
须藤 df -h
或者,如果您有权访问 GNOME,请使用终端执行此命令以打开 Baobab
须藤猴面包树
等待几秒钟或几分钟,让 Baobab 分析音量。它将显示哪个文件夹使用的空间最多。该界面是自我解释的。
如果需要,请增加可用存储空间。为此,例如,如果合适,请运行以下命令来清除临时缓存的安装包:
sudo apt-get clean
sudo aptitude 清洁
重启
fsck 会自动完成它的自动化。有时这非常快。甚至不会显示。这个是正常的。
Debian 将启动。瞧。