十八比特 十八比特
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于

十八比特

风带来故事的种子,时间使之发芽
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于
  • 从零开始的树莓派4B
  • 安装emby、rclone和aria2
  • 配置树莓派连接WiFi网络
  • 在Docker中开启sftp服务
  • 根据CPU温度控制风扇
  • 记录将树莓派系统从Ubuntu 20.04 LTS升级到22.04 LTS
  • 树莓派的SD卡达到使用寿命进入写保护模式,如何无痛迁移系统
    • 1.起因
    • 2.迁移系统
    • 3.启动树莓派
    • 4.备份系统
    • 5.恢复系统
  • 使用Netdata监控树莓派温度,设置阈值发出警告
  • 开启树莓派4B的硬件看门狗
  • 树莓派
秋澪冬安
2022-11-29
目录

树莓派的SD卡达到使用寿命进入写保护模式,如何无痛迁移系统

# 1.起因

使用apt update命令检查是否有包需要更新时,出现警告Structure needs cleaning,网上查了一下发现可能是因为文件系统损坏,需要修复。

于是关机,取下SD卡准备用fsck.ext4命令修复,结果发现修复不了,提示: 无法设置 writable 的超级块标志。

一通捣鼓发现SD里的文件不管是删除、修改、新增,重新连接电脑之后就都自动恢复原样了,网上一查,说是SD卡寿命到了,进入了写保护模式,这下就只能迁移系统到其它SD卡或者U盘上了。

# 2.迁移系统

网上最多的方法就是使用dd命令进行对拷,但是我发现dd命令在拷贝过程中没有进度显示,几十个G的文件,没有进度那可太难受了。然后我发现Windows上一款软件DiskGenius也能对分区进行对拷,能看到进度,也不需要什么学习成本。

# 2.1 备份和还原分区表

打开DiskGenius软件,选中有写保护的,出问题的SD卡右键,选择“备份分区表”

然后选中系统要迁移到的新SD卡右键,选择“还原分区表”。这样我们新SD卡和旧SD卡的分区大小就是一样的了

# 2.2 克隆分区

右键选中旧SD卡的分区,选择“克隆分区”

然后选择新SD卡对应的分区,注意不要选错。选择完分区后,勾选按文件系统结构原样复制,如果是灰色的不能选中,那证明两个分区大小不一样,这就是为什么步骤2.1要备份和还原分区表。

然后点击“开始”,等待克隆完成。旧SD卡的所有分区都需要这样进行克隆。

# 2.3 扩展分区

如果你的新SD卡显示还有“未分配的空间”,比如在软件中看到有这样“空闲”,如果没有,可以跳过此步骤

右键新SD卡的 writable 分区,选择”扩容分区“

鼠标放在交界处,往右边拉完即可

# 3.启动树莓派

将迁移好的新SD卡插上树莓派,通电,系统就正常启动了

# 3.1 修改树莓派4B为USB启动

如果你是用的SD卡进行的迁移,那么这一步你就不用看了。

因为我手上没有其它同容量或者更大的SD卡,所以我迁移系统到的U盘,还需要修改启动方式。由于旧卡进入了写保护,系统也进不去了,所以没法通过 raspi-config (opens new window) 命令来修改,只能手动修改配置文件。

找到迁移好系统的U盘,进入system-boot这个分区下面的config.txt文件,找到下面这部分:

[all]
# added by do-release-upgrade (LP: #1936401)
kernel=vmlinuz
initramfs initrd.img followkernel
arm_64bit=1
# commented by do-release-upgrade (LP: #1936401)
#device_tree_address=0x03000000

在 [all] 这一行下面新建一行,填写 BOOT_ORDER=0xf14,变成这样

[all]
BOOT_ORDER=0xf14
# added by do-release-upgrade (LP: #1936401)
kernel=vmlinuz
initramfs initrd.img followkernel
arm_64bit=1
# commented by do-release-upgrade (LP: #1936401)
#device_tree_address=0x03000000

然后将U盘插上USB口,通电就能成功进入系统。

# 4.备份系统

以防万一以后SD卡或者系统又出什么问题导致无法启动,所以还是备份一下系统

备份系统这里用的是 Win32DiskImager 这个软件,如果你只想备份已使用的空间,那还需要linux系统下的 GParted 这个软件。

# 4.1 全卡备份

全卡备份,顾名思义就是对整张卡进行备份,不管实际使用了多少空间,128G的卡即使只用了30G,备份出来的文件也有128G。

在电脑上新建一个文本文件,例如:backup.txt,将后缀名改为img,即:backup.img

打开 Win32DiskImager,“镜像文件”选择刚才新建的文件,“设备“选择插入的SD卡,点击”读取“即可

# 4.2 压缩备份

# 4.2.1 调整分区

只备份已使用的空间。进入linux系统,安装并打开GParted,选择我们插入的SD卡

右键分区,点击卸载

再次右键分区,点击调整大小

鼠标放最右边,向左拖动调整至最小

然后点击”调整大小/移动“,等待完成

# 4.2.2 备份

回到Windows系统,打开Win32DiskImager软件,按照”全卡备份“那样,选择”镜像文件“和”设备“,然后勾选上”仅读取已分配分区“,点击”读取“等待完成。

# 5.恢复系统

打开Win32DiskImager,”镜像文件“选择之前备份的镜像,”设备“选择要恢复的SD卡,点击”写入“等待完成即可。

#树莓派
上次编辑: 2024/08/30, 16:21:31

← 记录将树莓派系统从Ubuntu 20.04 LTS升级到22.04 LTS 使用Netdata监控树莓派温度,设置阈值发出警告→

最近更新
01
SSH跳板机访问内网服务
06-16
02
GPG 导出导入命令
06-16
03
从零开始的 All In One
06-14
更多文章>
Theme by Vdoing | Copyright © 2020-2025 十八比特 | 蜀ICP备2022002410号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式