问题描述
在尝试通过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卡
步骤一:使用rsync
或dd
命令迁移文件
- 使用
rsync
命令:
bash
sudo rsync -avxH --progress /mnt/mountpoint/ /path/to/new-sd-card/ - 或者直接使用
dd
命令,但要确保目标分区大小足够大(这里假设目标卡已经预处理好)。
步骤二:调整新SD卡的文件系统及启动项
注意事项
- 重要的是在进行任何操作之前备份所有数据。
- 在执行这些步骤时请遵循正确的命令和警告信息,以避免数据丢失。
- 针对嵌入式设备如Android,还需要相应地调整grub菜单或fastboot相关脚本。
通过以上步骤,用户可以在现有64GBSD卡上成功缩小android_expand
分区,并顺利将其内容迁移至新准备好的SD卡上。同时请结合实际情况细化操作步骤!
正文完