dd 不使用整个磁盘空间

dd 不使用整个磁盘空间

我正在尝试使用 dd 实用程序创建 Live USB。我做的第一件事是使用以下命令擦除 USB:

~ $ dd if=/dev/zero of=/dev/sdb bs=512 count=1

根据命令可知,8GB USB 的总内存为 7.6GB。

~ $ fdisk -l
...
Disk /dev/sdb: 7.6 GiB, 8097103872 bytes, 15814656 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

问题是执行“dd”操作将ISO写入USB后,分区不会占用整个磁盘空间。

我运行此命令会生成后续输出。

~ $ sudo dd if=kali-linux-2016.2-amd64.iso of=/dev/sdb bs=1M

2934+1 records in
2934+1 records out
3076767744 bytes (3.1 GB, 2.9 GiB) copied, 395.581 s, 7.8 MB/s

然后,我再次运行 fdisk 命令,生成此输出。

Disk /dev/sdb: 7.6 GiB, 8097103872 bytes, 15814656 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: 0x77e6cfe3

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *         64 5794271 5794208  2.8G 17 Hidden HPFS/NTFS
/dev/sdb2       5794272 6009311  215040  105M  1 FAT12

请注意顶行显示 7.6GiB 内存,但分区仅分别占用 2.8GB 和 105M。即使当我分析 gparted 中的分区时,它也只显示这两个分区,并且不会列出 USB 记忆棒上的任何额外空间。

我在这里缺少什么吗?

更新
我对设备上没有剩余空间的假设是错误的。我在下面用我用来利用磁盘上剩余空间的命令回答了我的问题。

答案1

dd 实用程序读取和写入块,而不考虑这些块的内容;它的运行级别低于分区。在这种情况下,您正在编写一个图像,并且该图像仅包含两个具有固定大小的分区。块的大小大约只有 2.9GB,因此较大的磁盘只会写入这些块。

有一篇关于分区表如何工作的不错的文章http://wiki.osdev.org/Partition_Table等地方。简而言之,该表列出了每个分区的开始位置以及每个分区的大小。

答案2

所以事实证明空间是存在的,只是没有显示在 gparted 中。

对于任何未来的用户,这里是我用来利用额外空间的一系列命令。

~ $ parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print devices
/dev/sda (128GB)
/dev/sdb (8097MB)

(parted) select /dev/sdb                                                
Using /dev/sdb

(parted) print                                                          
Model: hp v195b (scsi)
Disk /dev/sdb: 8097MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      32.8kB  2967MB  2967MB  primary               boot, hidden
 2      2967MB  3077MB  110MB   primary  fat16

(parted) mkpart primary 3077 7500       

(parted) quit                                                            
Information: You may need to update /etc/fstab.

确认:

~ $ fdisk -l
...
Disk /dev/sdb: 7.6 GiB, 8097103872 bytes, 15814656 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: 0x77e6cfe3

Device     Boot   Start      End Sectors  Size Id Type
/dev/sdb1  *         64  5794271 5794208  2.8G 17 Hidden HPFS/NTFS
/dev/sdb2       5794272  6009311  215040  105M  1 FAT12
/dev/sdb3       6009312 14648437 8639126  4.1G 83 Linux

答案3

虽然您可能有足够的空间,但应该还有其他单独的分区可能会给您带来问题。刷新 gpart 并检查所有分区是否正常,这不是问题的一部分。

相关内容