首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“调整大小”的.img为较小的SD卡。如何缩小可引导SD卡映像

“调整大小”的.img为较小的SD卡。如何缩小可引导SD卡映像
EN

Ask Ubuntu用户
提问于 2019-09-16 09:26:09
回答 4查看 52.7K关注 0票数 27

上下文

我有一个16 GB的SD卡,带有一个基于Linux的Raspberry Pi操作系统。大部分空间都是空的。

我想与其他人共享SD .img,但是如果我使用以下命令

代码语言:javascript
复制
dd if=/dev/sdXX of=/home/user123/SD.img

它将创建一个16 GB的图像。太大了。

问题

如何将16 4GB的SD卡图像调整为更小的4GB?

我尝试过使用GParted:它创建了一个4GB的分区,没有问题,但是SD卡的整个.img仍然是16 GB,有12 GB的未分配空间。

我已经阅读了问题并回答了在Ubuntu中克隆多个分区,但我仍然不能将16 4GB的SD卡调整为4GB的。

更多信息

代码语言:javascript
复制
~$ lsblk 
...

sdc      8:32   1  14,9G  0 disk 
├─sdc1   8:33   1   100M  0 part 
└─sdc2   8:34   1     4G  0 part 
代码语言:javascript
复制
~$ sudo fdisk -l /dev/sdc
Disk /dev/sdc: 14,9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf8a631ce

Device     Boot  Start     End Sectors  Size Id Type
/dev/sdc1  *      2048  206847  204800  100M  c W95 FAT32 (LBA)
/dev/sdc2       206848 8595455 8388608    4G 83 Linux

如有任何建议,敬请谅解!

Please注释:正如Melebius在评论中所观察到的,正确使用的单词是收缩:

您不能调整SD卡的大小,因为它是具有给定容量的无法更改的硬件。你显然想缩小SD卡的图像。

EN

回答 4

Ask Ubuntu用户

发布于 2021-02-15 09:04:01

所选的答案完全适用于dos磁盘标签类型。对于 GPT 类型,需要考虑添加33个扇区,因为GPT也在磁盘的末尾存储一个表。

因此,对于GPT用户来说,“截断”命令需要如下所示:

截断-大小=$ myimage.img

这将在fdisk -l中产生一个GPT错误。若要解决此问题,请运行以下命令:

代码语言:javascript
复制
gdisk myimage.img

运行命令来验证磁盘:v。您应该会在磁盘上看到一些错误。

“在gdisk中,您可以键入x以输入专家菜单,然后键入e将备份分区表数据移动到磁盘的新端,然后键入w将更改写入磁盘。”来源

票数 5
EN

Ask Ubuntu用户

发布于 2019-09-16 10:05:30

您可以使用bscount选项dd-command来限制输出文件的大小。

示例:

代码语言:javascript
复制
dd if=sdx of=SD.img bs=1G count=4

将产生一个大小为4 GiB的输出文件。

深入了解man dd

您需要知道要复制多少字节才能完全覆盖所有分区,因此使用sudo fdisk -l /dev/sdx查看哪个扇区是最后需要的扇区。

分区必须位于磁盘的开头(如您提供的图片)。

具有msdos分区表的磁盘可以很容易地以这种方式克隆,但是如果磁盘使用GPT并将其克隆到不同大小的磁盘上,则保护MBR需要修改后字,而驻留在磁盘最末端的GPT备份需要重新创建,这可以用gdisk完成。

fdisk-output中可以看到,最后一个分区的最后一个扇区是扇区8595455,这意味着您必须至少复制8595455+1扇区(第一个扇区是0)。扇区大小为512字节,等于4,400,873,472字节。bscount相乘必须大于或等于这个值。

也许这对于一个4GB的U盘来说还是太大了,你仍然可以缩小sdc2的大小,它里面有很多未使用的空间。

对于您提供的当前示例,

代码语言:javascript
复制
 dd if=/dev/sdc of=SD.img bs=10M count=420

将覆盖分区表、sdc1sdc2。计算:

代码语言:javascript
复制
10*1024*1024*420 = 4,404,019,200 > 4,400,873,472
票数 3
EN

Ask Ubuntu用户

发布于 2020-02-02 07:02:21

resize2fs也可以用来调整大小。

代码语言:javascript
复制
sudo resize2fs -fp SD.img 4G

它还调整文件本身的大小!

票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1174487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档