本文我们讨论了如何缩小由
dd
命令。这是示例方案。您已经制作了四个分区,总磁盘空间为3GB:
# sfdisk -l -uM ubuntu_USB.img
sfdisk: Disk ubuntu_USB.img: cannot get geometry
Disk ubuntu_USB.img: 950 cylinders, 255 heads, 63 sectors/track
Units: 1MiB = 1024*1024 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End MiB #blocks Id System
ubuntu_USB.img1 1 50 50 51200 b W95 FAT32
ubuntu_USB.img2 51 150 100 102400 b W95 FAT32
ubuntu_USB.img3 * 151 2650 2500 2560000 b W95 FAT32
ubuntu_USB.img4 2651 3000 350 358400 b W95 FAT32
此分区表存在于您的USB驱动器上,并且带有dd
命令已将克隆副本复制到名为usb_dd.img
。但是,输出dd
映像文件的大小等于USB memory 棒的大小,而不是所有分区的总和。一个块等于1MB(1024 * 1024)字节,即,预期大小应为3000MB。但是,我们得到了7.3G。这是因为dd
默认情况下,该命令将克隆整个块设备,而忽略整个分区布局:
# ls -lh ubuntu_USB.img
-rw-rw-r--. 1 lubos lubos 7.3G Jan 24 11:37 ubuntu_USB.img
接下来,我们需要获得扇区总数,以便从该映像中删除多余的磁盘大小。要获取此信息,请执行以下操作:
# fdisk -l -u ubuntu_USB.img
Disk ubuntu_USB.img: 7818 MB, 7818182656 bytes, 15269888 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
Disk label type: dos
Disk identifier: 0x000804a3
Device Boot Start End Blocks Id System
ubuntu_USB.img1 2048 104447 51200 b W95 FAT32
ubuntu_USB.img2 104448 309247 102400 b W95 FAT32
ubuntu_USB.img3 * 309248 5429247 2560000 b W95 FAT32
ubuntu_USB.img4 5429248 6146047 358400 b W95 FAT32
最后一个扇区是6146047。接下来,使用dd命令创建另一个映像,但仅创建最后一个扇区:
# dd if=ubuntu_USB.img of=ubuntu_USB.iso count=6146047
ALTERNATIVELY CLONE DIRECTLY FROM USB eg.:
# dd if=/dev/sdX of=ubuntu_USB.iso count=6146047
基于其分区总和,生成的图像将具有正确的图像大小。
$ ls -lh ubuntu_USB.iso
-rw-r--r--. 1 root root 3.0G Jan 24 11:58 ubuntu_USB.iso