別のコマンドラインが同じ結果を提供しない

別のコマンドラインが同じ結果を提供しない

仮想ディスク(1024MB)を作成しました。

~$ dd if=/dev/zero of=MyDrive.img iflag=fullblock bs=1M count=1024 && sync

ケース1:

今構成しましょう。別れた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

パーティションの確認:

~$ 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

質問:

同じ出力(ケース1)を取得するために、ターミナルコマンドライン(ケース2)から直接「-s」(--script)オプションを使用して「parted」を正しく実行するにはどうすればよいですか。

ありがとう

答え1

parted奇数単位はデフォルトで使用されるため、指定するのが最善です。

(parted) unit MiB

または

(parted) mkpart ... 1MiB 1024MiB

パーティションが始まる場所がわかっている場合は、ソートチェックを実行する必要はありません1MiB

このset 1 lba onコマンドは実際にはパーティションタイプをLinuxに変更します。これは多少驚くかもしれませんが、パーティションの種類を変更するのが一般的です(他のオプションは、、、parted...です)。setraidlvm

この詳細を除いて、作業結果はまったく同じです。出力の違いは単に光学の問題です。

partedそれはおそらく、パーティションだけでなくファイルシステム自体を作成するために使用された古い残りの部分でしょう。 (*)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

表示されますが、ntfslba印刷されなくなります。

# 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

ターミナルコマンドを使用する2番目の方法は、レプリカで実行することです。

# 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(コピー方法を使用しないと、使用するたびにランダムであるため、異なるディスク識別子を持つことになります。を示すことを確認します。)


だからあなたはするsetコマンドが異なっていない限り(最初の例ではそうではありません)、最終的に同じ結果が得られます。


(*)

混乱を取り除くためにmkntfsパーティションを分割した後、partedNTFSが検出され、set 1 lba onLinuxはパーティションタイプに設定されなくなりました。これはまた、ディスク上の任意のデータに対してパーティションテーブルから任意の結果を得ることができることを意味する。

したがって、最終的にはNTFSを指定するのが合理的かもしれませんmkpartpartedこのタイプを覚えてください現在のセッションの場合パーティションの種類を選択するときは、適切な処置を取ってください。端末に変換されたら、1つのコマンドですべての操作を実行するのが最善です。

# 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

関連情報