gpart を使って GPT パーティションを設定2009年03月09日 12時23分33秒

以前にgpt(8) を使って GPT パーティションの設定をした。しかし、gpt(8) は既に古く gpart(8) を用いるとの指摘を受け、gpart を試して見ることにした。当時は手元に無かった 8-CURRENT 環境だと確かに、gpt は存在しない。なお、以下では GPT はパーティション様式を示すのに、gpt はプログラムを指す様に使い分けている。

まずは、何も使っていないデバイスでの表示を試みた。


$ gpart show -s GPT ad1
gpart: illegal option -- s

何も表示されない。GPT パーティションを先に作らねばいけないようだ。

create を使って GPT を作ってみる。


$ gpart create -s GPT /dev/ad1
gpart: provider '/dev/ad1': Invalid argument

gpt(8) と同じように、/dev があると気に入らないようだ。いつも、/dev を含めたフルパスを使っているので、GPT ではよくエラーになる。

一気に四パーティションを作る。


$ gpart create -s GPT ad1
ad1 created
$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34  2097085       - free -  (1073.7MB)
$ gpart add -b 34 -s 500000 -t freebsd ad1
ad1s1 added
$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34   500000    1  freebsd  (256.0MB)
   500034  1597085       - free -  (817.7MB)
$ gpart add -b 500034 -s 500000 -t freebsd ad1
ad1s2 added
$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34   500000    1  freebsd  (256.0MB)
   500034   500000    2  freebsd  (256.0MB)
  1000034  1097085       - free -  (561.7MB)

$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34   500000    1  freebsd  (256.0MB)
   500034   500000    2  freebsd  (256.0MB)
  1000034  1097085       - free -  (561.7MB)

$ gpart add -b 1000034 -s 500000 -t freebsd ad1
ad1s3 added
$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34   500000    1  freebsd  (256.0MB)
   500034   500000    2  freebsd  (256.0MB)
  1000034   500000    3  freebsd  (256.0MB)
  1500034   597085       - free -  (305.7MB)

$ gpart add -b 1500034 -s 597085 -t freebsd ad1
ad1s4 added
$ gpart show ad1
=>     34  2097085  ad1  GPT  (1073.7MB)
       34   500000    1  freebsd  (256.0MB)
   500034   500000    2  freebsd  (256.0MB)
  1000034   500000    3  freebsd  (256.0MB)
  1500034   597085    4  freebsd  (305.7MB)


使い勝手としては、始点を指定する必要の無い gpt の方が便利だった。毎回、始点を確かめるために show を繰り返した。

もう一つ gpt と gpart の違いがこれだ。上でも作った報告をするときにパーティションの名前は表示される。


$ ls /dev/ad1*
/dev/ad1        /dev/ad1s1      /dev/ad1s2      /dev/ad1s3      /dev/ad1s4

gpt で作った GPT パーティションは /dev/ad1p1 の様に、p で区切られていたが、gpart で作った GPT パーティションは /dev/ad1s1 の様に s で区切られている。これは、7.1-RELEASE と 8-CURRENT の違いではなく、gpt で作られたか gpart で作られたかの違いだ。7.1-RELEASE で作成した GPT パーティションも p で区切られる。

前回