我创建了我的虚拟磁盘(1024MB):
~$dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync
情况1:
现在我要用parted内部配置它来分区/格式化MyDrive.img:
~$parted MyDrive.img
(parted) mklabel msdos
(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1
结果:
(parted) print
Model: (file)
Disk /home/user/test/MyDrive.img: 1074MB
Sector size (logical / physical): 512B / 512B
Table of partitions: msdos
Disk Flags:
Start Number End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ntfs lba
Verifying partition:
~$sudo losetup loop1 MyDrive.img
~$sudo -H gparted /dev/loop1
到现在为止还挺好.现在问题……
案例2:
如果我想从命令行启动“parted”(在终端;在parted之外),使用相同的命令,我得不到相同的结果:
~$parted -s MyDrive.img mklabel msdos
~$parted -s MyDrive.img mkpart primary NTFS 1 1024
~$parted -s MyDrive.img align-check optimal 1
~$parted -s MyDrive.img set 1 lba on
日期:
~$parted -s MyDrive.img print
Model: (file)
Disk /home/user/test/MyDrive.img: 1074MB
Sector size (logical / physical): 512B / 512B
Table of partitions: msdos
Disk Flags:
Start Number End Size Type File system Flags
1 1049kB 1024MB 1023MB primary
问题:缺少NTFS和LBA(ext3,ext4等也会发生同样的事情)
原因:
~$parted -s MyDrive.img mklabel msdos # Works
~$parted -s MyDrive.img mkpart primary NTFS 1 1024 # Not Work
~$parted -s MyDrive.img align-check optimal 1 # Works
~$parted -s MyDrive.img set 1 lba on # Not Work
题:
如何直接从终端(案例2)的命令行中使用选项“-s”( – script)正确执行“parted”以获得相同的输出(案例1)?
谢谢 解决方法: parted默认使用奇数单位,因此最好指定它.
(parted) unit MiB
要么
(parted) mkpart ... 1MiB 1024MiB
如果您知道分区以1MiB开始,则无需进行对齐检查.
set 1 lba on命令实际上将分区类型更改为Linux.这可能有点意外,但是parted的设置更改分区类型是正常的(其他选项是raid,lvm,…).
除了这些细节,您的操作结果完全相同.输出的差异仅仅是光学问题.
它可能是用于创建文件系统本身而不是仅用于分区的旧分区的残余.(*)如果你想要ntfs坚持,你实际上必须使用mkntfs.
您的互动方式:
# dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync
# parted MyDrive.img
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos
我此时创建了它的副本,以便我们检查并比较其他方法:
(parted) ^Z
[1] Stopped parted MyDrive.img
# cp MyDrive.img MyDrive-Copy.img
# fg
向前:
(parted) mkpart primary NTFS 1 1024
(parted) align-check optimal 1
1 aligned
(parted) print
Model: (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ntfs lba
显示ntfs和lba但再次打印它已经消失了:
# parted MyDrive.img
GNU Parted 3.2
Using /dev/shm/MyDrive.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary
使用终端命令的第二种方法,在副本上执行:
# parted MyDrive-Copy.img mkpart primary NTFS 1 1024
# parted MyDrive-Copy.img align-check optimal 1
1 aligned
# parted MyDrive-Copy.img print
Model: (file)
Disk /dev/shm/MyDrive-Copy.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary
实际上有什么不同吗?
# cmp -l MyDrive.img MyDrive-Copy.img && echo Identical || echo Different
Identical
(如果没有复制方法,它们会有不同的磁盘标识符,因为每次你mkpart它都是随机的.使用GPT分区,每个单独的分区也会有一个唯一的PARTUUID,因此该方法不适用于其他分区方案,或者你必须检查不同的字节代表什么.)
所以,你总是得到相同的结果,除非命令不同(你的第一个例子中没有设置).
(*)
为了使混淆完美,在分区上的mkntfs之后,parted检测到NTFS存在并设置1 lba on不再将Linux设置为分区类型.这也意味着磁盘上的随机数据可能会在分区表中得到随机结果.
所以当你mkpart毕竟可能有一点指定NTFS. parted会记住当前会话的此类型,并在选择分区类型时采取相应措施.转换到终端,最好在一个命令中完成所有操作.
# parted MyDrive.img mklabel msdos mkpart primary NTFS 1 1024 set 1 lba on align-check optimal 1 print
Model: (file)
Disk /dev/shm/MyDrive.img: 1074MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1024MB 1023MB primary ntfs lba
来源:https://www./content-3-391851.html
|