2026年8月26日

クアッドブート with rEFInd (その 2/5): パーティションを切る

Linux ×2、FreeBSD ×2 クアッドブート (with rEFInd) の第 2 回です。ストレージにパーティションを切って、クアッドブートにするための下地を整えます。

事前にやっておくこと

必要に応じて Windows のバックアップを取っておきます。また、SecureBoot は FreeBSD のインストーラが対応していないため、UEFI 設定画面で無効にします。SecureBoot を無効にするためには、あらかじめ Windows の BitLocker (デバイスの暗号化) も無効にしておく必要があるようです。

それから、パーティションを切るために何らかのパーティショニングツールが必要です。本稿では FreeBSD インストーラーに付属の gpart コマンドを使用することにします。前回の記事のようにインストールメディアを用意しておいてください。他のツール (GParted Live など) を使う場合は、適当に読み替えてください。

パーティショニングツールを起動する

パソコンにインストールメディアを挿して、インストールメディアから起動します。Zenbook の場合は ASUS のロゴが出るあたりで ESC キーを押すと、起動メディアの選択メニューが表示されます。FreeBSD のインストーラが起動して、最初のメニューが表示されたら Shell を選択します (図 1)。

図 1: ここで Shell を選ぶ
図 1: ここで Shell を選ぶ

ストレージの現状を把握する

ストレージを更地にしてしまう前に、次の情報を取得しておくとよいかと思います。

  • 対象ストレージのデバイス名
  • 論理セクタサイズ
  • 物理セクタサイズ
  • 総容量
  • パーティション情報 (開始セクタ、サイズなど)

これらの情報は、次節で各パーティションの開始セクタを決めるときや、ストレージを工場出荷状態に戻したいときなどに役立ちます。

ストレージのデバイス名を知る

最初に、このあとの操作で必要となる、対象ストレージのデバイス名をゲットします。とりあえず geom disk list コマンドでストレージの一覧を表示してみると、

# geom disk list
Geom name: nda0
Providers:
1. Name: nda0
   Mediasize: 1024209543168 (954G)
   ...

Geom name: da0
Providers:
1. Name: da0
   Mediasize: 15505293312 (14G)
   ...

Geom name: da1
Providers:
1. Name: da1
   Mediasize: 15505293312 (14G)
   ...

この例では、内蔵ストレージが 1 台と、USB メモリが 2 個挿さっていますが、容量から判断して nda0 が内蔵ストレージっぽいなとわかります。

論理セクタサイズと物理セクタサイズ

世の中には、「512 ネイティブ」「4K ネイティブ」「Advanced Format (512E)」という 3 種類のハードディスク / SSD が出回っているそうです:

  • 512 ネイティブ (512n): 論理セクタサイズ、物理セクタサイズともに 512 バイト
  • 4K ネイティブ (4Kn): 論理セクタサイズ、物理セクタサイズともに 4096 バイト
  • Advanced Format (512E): 論理セクタサイズが 512 バイト、物理セクタサイズが 4096 バイト

で、512E の場合、論理セクタの境界と物理セクタの境界がぴったり合っていないと、データアクセスのパフォーマンスが低下します (詳しくは「4K アライメント」などでググってください)。そこで diskinfo コマンドを使って論理セクタサイズと物理セクタサイズを取得します。

# diskinfo -v nda0
nda0
        512             # sectorsize
        1024209543168   # mediasize in bytes (954G)
        2000409264      # mediasize in sectors
        4096            # stripesize
        ...

sectorsize が論理セクタサイズ、stripesize が物理セクタサイズです。つまりこのストレージは 512E であることがわかります。

総容量

ストレージの総容量も上記 diskinfo コマンドの出力からわかります。セクタ数で 2000409264 セクタ、バイト数に直すと 2000409264 × 512 で 1024209543168 バイト (約 954 GiB) です。

パーティション情報

現状把握作業のラストは、どんなパーティションがあるか?とその開始セクタ、パーティションサイズなどの情報です。gpart show コマンドを使います。

# gpart show -l nda0
=>        34  2000409197  nda0  GPT  (954G)
          34        2014        - free -  (1007K)
        2048      532480     1  EFI system partition  (260M)
      534528       32768     2  Microsoft reserved partition  (16M)
      567296  1954429583     3  Basic data partition  (932G)
  1954996879        1393        - free -  (697K)
  1954998272     2934784     4  (null)  (1.4G)
  1957933056    41943040     5  Basic data partition  (20G)
  1999876096      532480     6  Basic data partition  (260M)
  2000408576         655        - free -  (328K)

一般に、パーティションを切る際には、次の点を考慮するのがよいとされています。

  • (1) 先頭パーティションの開始セクタは 2048 が推奨される。
  • (2) 第 2 パーティション以降の開始セクタは 8 の倍数とする (4096 / 512 = 8 に由来)。
  • (3) パーティションのサイズ (バイト数) は 4096B (= 4KB) の倍数とする (4K アライメント)。

このうち (2) については、今はどうなのか知りませんが、以前 gdisk というツールを使ったときに 2048 の倍数になっていないと怒られた記憶があります。そこで私は (1)、(2) をまとめて次の 2 点を考慮するようにしています。

  • 各パーティションの開始セクタは 2048 の倍数になるようにする。
  • パーティションのサイズ (バイト数) は 4096B (= 4KB) の倍数とする (4K アライメント)。

この点をふまえて、上の結果を観察してみましょう。

最初に現れる 2014 セクタの free な領域は、第 1 パーティションを 2048 セクタ目から開始するための詰め物です。この領域は 34 セクタ目から始まっています。その前には何があるかというと、Protective MBR と Primary Partition Table というものがあります。

次にパーティション 1 ~ 3 があります。順にEFI システムパーティション、Microsoft 予約パーティション、C ドライブ用パーティションです。そのあとに (恐らくパーティション 4 を 2048 の倍数のセクタから開始するための詰めものとして) free な領域があって、パーティション 4 ~ 6 が続きます。これらは WinRE や ASUS 独自のリカバリー領域と思われます。こうしてみると、いずれのパーティションも上に挙げた 2 つの条件をきっちり守っています。

最後に 655 セクタ分の free な領域がありますが、これはアライメントの条件を守ったために生じた端数と思われます。また、上の出力には表示されない謎の領域が、ディスクの末尾に 33 セクタ分 (= 2000409264 - (2000408576 + 655)) あります。ここには Backup Partition Table が格納されていると思われます (UEFI Specification 2.10 第 5.3.1 節参照)。

パーティション構成を検討する

前出の「パーティションの開始セクタを 2048 の倍数にすること」「パーティションのサイズは 4096 の倍数にすること」の 2 条件と、前回ざっくりと決めた各パーティションの容量配分を元に、次のように各パーティションを作ることにしました。

No.開始セクタサイズ [sector]サイズ用途 (or ディスクラベル)ファイルシステム暗号化
1

2048

1048576

512 MiB

ESP

FAT32

2

1050624

2097152

1 GiB

zorin-boot

ext4

3

3147776

708837376

338 GiB

zorin-root

ext4

LUKS

4

711985152

2097152

1 GiB

artix-boot

ext4

5

714082304

708837376

338 GiB

artix-root

ext4

LUKS

6

1422919680

92274688

44 GiB

freebsd-a-root

UFS

7

1515194368

167772160

80 GiB

freebsd-a-home

UFS

Geli

8

1682966528

16777216

8 GiB

freebsd-a-swap

Geli

9

1699743744

92274688

44 GiB

freebsd-b-root

UFS

10

1792018432

167772160

80 GiB

freebsd-b-home

UFS

Geli

11

1959790592

16777216

8 GiB

freebsd-b-swap

Geli

12

1976567808

20971520

10 GiB

共有

FAT32

各パーティションにはディスクラベルを付けておくと、あとで何かと便利なので、パーティション 2 ~ 11 に関しては表のように付けることにします。

また、この表にはありませんが、ディスクの先頭に Protective MBR & Primary Partition Table が、末尾に Backup Partition Table が、それぞれ 40 セクタ分だけ付きます。これは gpart コマンドが勝手にやってくれるので、気にしなくて大丈夫です。

パーティションを切る

あとはこの表にしたがって黙々とコマンドを打っていくだけです、が、gpart は 「ディスクを消去しますか?」みたいな確認を一切行わず、与えられたコマンドをその場でバンバン実行していくつくりになっているみたいなので、慎重に進めるようにしてください。

まず現在のパーティションを全削除します。

# gpart destroy -F nda0
nda0 destroyed
# gpart show -l nda0
gpart: No such geom: nda0.

新しいパーティションスキームを作成します。

# gpart create -s gpt nda0

上のほうで検討した表にしたがってパーティション 1 ~ 12 を作成します。

# gpart add -i  1 -t efi -b 2048   -s   1048576 nda0
# gpart add -i  2 -t linux-data    -s   2097152 -l zorin-boot nda0
# gpart add -i  3 -t linux-data    -s 708837376 -l zorin-root nda0
# gpart add -i  4 -t linux-data    -s   2097152 -l artix-boot nda0
# gpart add -i  5 -t linux-data    -s 708837376 -l artix-root nda0
# gpart add -i  6 -t freebsd-ufs   -s  92274688 -l freebsd-a-root nda0
# gpart add -i  7 -t freebsd-ufs   -s 167772160 -l freebsd-a-home nda0
# gpart add -i  8 -t freebsd-swap  -s  16777216 -l freebsd-a-swap nda0
# gpart add -i  9 -t freebsd-ufs   -s  92274688 -l freebsd-b-root nda0
# gpart add -i 10 -t freebsd-ufs   -s 167772160 -l freebsd-b-home nda0
# gpart add -i 11 -t freebsd-swap  -s  16777216 -l freebsd-b-swap nda0
# gpart add -i 12 -t ms-basic-data -s  20971520 nda0

出来映えを確認。

# gpart show -l nda0
=>        40  2000409184  nda0  GPT  (954G)
          40        2008        - free -  (1004K)
        2048     1048576     1  (null)  (512M)
     1050624     2097152     2  zorin-boot  (1.0G)
     3147776   708837376     3  zorin-root  (338G)
   711985152     2097152     4  artix-boot  (1.0G)
   714082304   708837376     5  artix-root  (338G)
  1422919680    92274688     6  freebsd-a-root  (44G)
  1515194368   167772160     7  freebsd-a-home  (80G)
  1682966528    16777216     8  freebsd-a-swap  (8.0G)
  1699743744    92274688     9  freebsd-b-root  (44G)
  1792018432   167772160    10  freebsd-b-home  (80G)
  1959790592    16777216    11  freebsd-b-swap  (8.0G)
  1976567808    20971520    12  (null)  (10G)
  1997539328     2869896        - free -  (1.4G)

いいんではないでしょうか。これでようやく OS のインストールに取りかかれます。

関連記事

広告