我在获取时遇到了一些麻烦分手3.2接受有效的分区方案分手2.3(在 Debian 上使用 jessie 与 wheezy 进行测试)。
分手3.2不会接受一直到卷末尾的分区(在大小为 1024MiB 的卷上标记为 1024MiB),而是会出错:
错误:位置 1024MiB 位于设备 /dev/loop0 之外。
这是一个可以重现的小脚本(使用 GPT 时也会发生):
#!/bin/bash -x
truncate disk.raw --size="1024M"
device_path="$(losetup -f --show disk.raw)"
parted --script --align none $device_path -- mklabel msdos
parted --script --align none $device_path -- unit mib print free
parted --script --align none $device_path -- mkpart primary 0MiB 1024MiB
losetup -d $device_path
rm disk.raw
用parted 2.3输出
+ truncate disk.raw --size=1024M
++ losetup -f --show disk.raw
+ device_path=/dev/loop0
+ parted --script --align none /dev/loop0 -- mklabel msdos
+ parted --script --align none /dev/loop0 -- unit mib print free
Model: (file)
Disk /dev/loop0: 1024MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
0.02MiB 1024MiB 1024MiB Free Space
+ parted --script --align none /dev/loop0 -- mkpart primary 0MiB 1024MiB
+ losetup -d /dev/loop0
+ rm disk.raw
用parted 3.2输出
+ truncate disk.raw --size=1024M
++ losetup -f --show disk.raw
+ device_path=/dev/loop0
+ parted --script --align none /dev/loop0 -- mklabel msdos
+ parted --script --align none /dev/loop0 -- unit mib print free
Model: Loopback device (loopback)
Disk /dev/loop0: 1024MiB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
0.03MiB 1024MiB 1024MiB Free Space
+ parted --script --align none /dev/loop0 -- mkpart primary 0MiB 1024MiB
Error: The location 1024MiB is outside of the device /dev/loop0.
+ losetup -d /dev/loop0
+ rm disk.raw
正如您所看到的,3.2 在分区开始的位置略有不同,但这应该不会产生影响,因为mkpart
只接受[start] [end]
而不接受[start] [size]
.
当然有解决方法,例如减小最后一个分区或增大卷,但我想深入了解并理解为什么有时候是这样的。
答案1
好吧,从技术上讲,如果只有 1024MiB 大并且您认为最终是包容性的,那么 1024MiB 就属于外部......
尝试unit s
一下print free
,这应该可以准确显示该扇区的可用内容,并让您创建最大大小的分区。unit mib
由于进行了太多舍入,因此它可能无法正确显示。
另外,您可以只100%
使用[end]
;尽管可能仍然会留下一些空闲的扇区,可能是由于对齐?
此外,对于 GPT 分区方案,您将无法一直走到最后,因为那里有一个辅助 GPT 标头。
由于其他原因,最后留出一点空间也是有意义的,并非所有驱动器都具有完全相同的大小,即使您现在仍然使用 msdos 分区,您可能希望能够在以后的某个时间点将它们转换为 GPT。