无法使用parted正确设置分区类型

无法使用parted正确设置分区类型

我正在尝试使用 FreeDos 创建一个可启动 USB 记忆棒,以便在 Centos 6.5 中更新 BIOS,请按照以下说明进行操作:赫托贝网

我使用以下命令创建了空的 30MB img 文件dd

[root@dumbledore freedos_boot]# dd if=/dev/zero of=FreeDos-image.img bs=1M 
count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.0756911 s, 416 MB/s

上述文章的作者说这个命令应该复制 30MB,我得到 31MB。这是一个问题吗?

然后我用它parted在生成的 FreeDos-image.img 文件中创建分区。

root@dumbledore freedos_boot]# parted FreeDos-image.img 
GNU Parted 2.1
Using /home/dthacker/freedos_boot/FreeDos-image.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit %
(parted) mklabel msdos                                                     
(parted) mkpart primary fat16 0 100%
Warning: The resulting partition is not properly aligned for best performance. 
Ignore/Cancel? C                                                          
(parted) mkpart primary fat32 0 100%
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? I                                                          
(parted) set 1 boot on                                                    
(parted) p                                                                  
Model:  (file)
Disk /home/dthacker/freedos_boot/FreeDos-image.img: 100%
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End   Size  Type     File system  Flags
1      0.00%  100%  100%  primary               boot, lba                                                                                                               

文件系统类型应为 FAT16,但尚未设置。

我需要做哪些不同的事情才能正确设置?

答案1

我是 chtaube.eu 上这些说明的作者:)

dd 在大小方面有点不一致:bs=1M定义块大小为 1兆比字节表示 1024*1024 字节。 30 兆字节为 30*1024*1024 = 31457280 字节。dd的最终输出使用十进制兆字节,1 MB = 1000*1000 字节。这就是为什么它显示为 31 MB。所以没有什么可担心的。我保守地选择了略小于 32 MB 的大小,以确保它适合标榜为“32 MB”的 USB 闪存驱动器。


我刚刚在 Arch Linux 和 Debian 上检查了这个问题parted,并且能够重现该问题。

对我来说,这看起来像是一个外观问题parted,因为(打印)命令的输出p显示“空白”文件系统,而分区实际上正确创建为 FAT16。

fdisk -l FreeDos-image.img您可以像我在下面的打字稿中所做的那样检查这一点:

ct@darkstar ~/tmp % dd if=/dev/zero of=Freedos.img bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.150141 s, 210 MB/s
ct@darkstar ~/tmp % parted Freedos.img 
WARNING: You are not superuser.  Watch out for permissions.
GNU Parted 3.1
Using /home/ct/tmp/Freedos.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit %                                                           
(parted) mklabel msdos                                                    
(parted) mkpart primary fat16 0 100%                                      
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i                                                          
(parted) set 1 boot on                                                    
(parted) p                                                                
Model:  (file)
Disk /home/ct/tmp/Freedos.img: 100%
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End   Size  Type     File system  Flags
 1      0.00%  100%  100%  primary               boot, lba

(parted) q                                                                
ct@darkstar ~/tmp % fdisk -l Freedos.img 

Disk Freedos.img: 30 MiB, 31457280 bytes, 61440 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: 0x0007cae1

Device       Boot Start       End Blocks  Id System
Freedos.img1 *        1     61439  30719+  e W95 FAT16 (LBA)

ct@darkstar ~/tmp % 

所以你这边应该没有什么问题。不管怎样,谢谢你指出这一点。我将更深入地研究parted的行为并相应地更新我的页面上的手册。

相关内容