使用Linux命令调整SD卡分区大小以解决Android设备启动失败问题

31次阅读
没有评论

问题描述

在尝试通过dd命令将一张存在多个文件的64GB SD卡(原SD卡)复制到另一张同样容量且同品牌的新SD卡过程中遇到了问题。尽管两块SD卡的品牌和容量相同,但在复制过程中提示“not enough space let”并导致分区损坏,使得Android设备无法识别这张新SD卡。用户询问是否可以从现有64GB SD卡中缩小android_expand分区的大小,以便解决启动失败的问题。

解决方案

方案1:调整android_expand分区大小以适应较小的SD卡

步骤一:卸载并挂载SD卡

  • 卸载SD卡:
    bash
    sudo umount /dev/sdXn # 替换sdXn为实际标识符,如/dev/mmcblk0p1
  • 挂载以读写权限重新识别的分区(可能需要扩展文件系统):
    bash
    sudo mount -o remount,rw /dev/sdXn /mnt/mountpoint # 替换为实际挂载点

步骤二:使用resize2fs调整分区大小

  • 首先确认当前文件系统类型:
    bash
    file -s /dev/sdXn
  • 调整android_expand分区大小到接近新SD卡的可用空间,确保不会超过64GB限制(例如50GB):
    bash
    sudo resize2fs /dev/sdXn 51G # 假设目标大小为51GB
  • 然后需要调整分区表以适应新的文件系统大小:
    bash
    sudo parted /dev/sdX unit s print all

步骤三:调整分区表并更新启动项

  • parted提示符下添加必要的分区:
    bash
    (parted) n 1 8253L primary ext4 # 替换为具体起始位置和结束大小,单位为扇区。
    (parted) w
  • 更新所有启动项、MBR等:

方案2:迁移数据到新SD卡

步骤一:使用rsyncdd命令迁移文件

  • 使用rsync命令:
    bash
    sudo rsync -avxH --progress /mnt/mountpoint/ /path/to/new-sd-card/
  • 或者直接使用dd命令,但要确保目标分区大小足够大(这里假设目标卡已经预处理好)。

步骤二:调整新SD卡的文件系统及启动项

注意事项

  • 重要的是在进行任何操作之前备份所有数据。
  • 在执行这些步骤时请遵循正确的命令和警告信息,以避免数据丢失。
  • 针对嵌入式设备如Android,还需要相应地调整grub菜单或fastboot相关脚本。

通过以上步骤,用户可以在现有64GBSD卡上成功缩小android_expand分区,并顺利将其内容迁移至新准备好的SD卡上。同时请结合实际情况细化操作步骤!

正文完