这篇文章上次修改于 885 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

文章头图

我经常使用ssh连接到树莓派,并使用 apt update && apt upgrade 进行系统更新。但由于使用无线网络连接,网络并不是很可靠偶尔会出现断连的情况,重连后看不到系统更新的进度,这时候突然断开电源可能会造成系统损坏导致无法开机。

正常使用的时候建议先使用命令 sudo poweroff 关闭系统,等绿灯不再闪烁后再断开电源;

或者在GPIO接口安装物理按键,配合脚本关机。

下面讲讲我是如何修复这个问题的,下面的命令使用根权限执行

将闪存卡挂载到 Linux 系统

使用读卡器读取树莓派的闪存卡

fdisk -l

查看系统分区,找到闪存卡里面有一个 boot 分区和 ext4 系统

mkdir /media/sdb2/

mount /dev/sdb2 /media/sdb2/
mount /dev/sdb1 /media/sdb2/boot/

rootfs=/media/sdb2/
mount -t proc proc ${rootfs}/proc
mount --rbind /sys ${rootfs}/sys
mount --make-rslave ${rootfs}/sys
mount --rbind /dev ${rootfs}/dev
mount --make-rslave ${rootfs}/dev

新建文件夹,并挂载分区

修复文件系统

推荐使用,特别是 boot 分区,可跳过

fsck.fat /media/sdb2/boot/
fsck.ext4 /dev/sdb2/

使用 qemu-arm-static 进入 chroot

树莓派使用的 ARM 平台,Linux PC 使用的是 x86 平台,不能直接 chroot 进入树莓派系统。

apt install qemu-arm-static
cp -a /usr/bin/qemu-aarch64-static /media/sdb2/usr/bin/
chroot  /media/sdb2/

进入 chroot ,树莓派 Raspbian 系统

apt update
dpkg --configure -a

现在便能使用树莓派的系统命令,尝试修复系统。

exit
umount /dev/sdb2
umount /dev/sdb1

退出 chroot ,卸载分区并弹出读卡器,重新尝试能否启动树莓派。