Arch LinuxをUEFI + GPT環境にインストールする

【2022年版】Arch LinuxをUEFI + GPT環境にインストールするを公開しました。こちらの情報の方がより新しい内容となっていますのでご参考にしてください。

こんにちは。今回のテーマは『Arch LinuxをUEFI + GPT環境にインストールする』です。最近はUEFI対応のマシンが増えてきてLinuxディストリビューションもUEFI対応が進んでいます。Arch LinuxもUEFIに対応しています。しかし、インストール方法はBIOSマシンと若干異なる点がありますので今回記事にしてみました。
【関連記事】
Arch Linuxをインストールする



【目次】
UEFIマシンが主流に
パーティション管理はMBRからGPTが主流に
インストールメディアの入手
UEFIモードでの起動
インストール準備
パーティショニングとファイルシステムの作成
システムのインストール
システム設定
ブートローダーのインストール
再起動・起動確認

UEFIマシンが主流に

本記事を書いている2015年現在、UEFIはBIOSを代替として主流になってきました。現在新品で販売されているPCやマザーボードの多くがUEFIマシンだと思います。LinuxディストリビューションもUEFI対応のディストリビューションが増えてきました。

まだUEFIに未対応のディストリビューションもあります。もしUEFIマザーボードにインストールする場合には「レガシーモード」等のBIOS互換モードにすることでBIOSマシンと同様のインストールができます。

パーティション管理はMBRからGPTが主流に

UEFIの普及に伴いハードディスクドライブのパーティションテーブルも従来のMBR(マスターブートレコード)からGPT(GUID パーティションテーブル)へ置き換わっていく流れだと思います。

MBRでは2TB以上のパーティションを扱えず、プライマリパーティションの数が4つに制限されるなどの問題がありましたが、GPTでは2TBの壁を越え、パーティションも最大128個(gdiskを使うと更に増やせるらしい)作成可能です。ただ、GPTをBIOS経由で起動するにはブートローダーのインストール場所を工夫するなど従来のMBRと同じ感覚で使えない点もあります。

インストールメディアの入手

Arch LinuxのインストールメディアはUEFIに対応しています。Arch Linuxのダウンロードページからインストールメディアをダウンロードしてください。

UEFIモードでの起動

UFEIマシン側でHDDよりもメディアのブートを優先に設定して下さい。インストールメディアを入れて起動すれば自動的にArch Linuxのブートローダーが起動します。以下のような画面が出るので最初のアイテムを選択します。

この後しばらく真っ黒な画面が続きますが、慌てず待って下さい。Arch Linuxが起動します。
01

インストール準備

キーボードレイアウトの設定

まずはキーボードレイアウトを設定しましょう。

# loadkeys jp106

ネットワーク接続の確立

有線で接続することを強くオススメします。大抵の場合、起動時にネットワーク接続は確立されます。以下コマンドで確認して下さい。

# ping -c 3 www.google.com

もしping: unknown hostのエラーが出た場合はArch wikiを参考にネットワーク接続を確立して下さい。

パーティショニングとファイルシステムの作成

パーティショニングにはgdiskがオススメ

UEFIブートではGPTを使うことが推奨されています。今回もGPTでパーティショニングをします。
Arch Linuxのインストールメディアに同梱されているパーティショニングツールは以下の3つです。

  1. parted:MBR/GPT対応
  2. fdisk:MBR対応
  3. gdisk:GPT対応

PartedはMBRとGPTに対応していますが、少々使い勝手が悪いです。筆者としてはGPTでパーティショニングをする場合はgdiskをオススメします。gdiskは以下コマンドで実行します。(OSをインストールするHDDがsdaの場合)

# gdisk /dev/sda

gdiskを起動したら以下のようにoでGPTのパーティションテーブルを作成します。(この作業で既存パーティションは全て削除されますので注意して下さい)

Command (? for help):o

ESP(EFI System Partition)の作成

UEFIブートをする場合はESPと呼ばれるFAT32でフォーマットされたパーティションを作成する必要があります。容量は512MB程度が推奨されています。

Command (? for help):n
Permission number: 1
First sector     : 何も押さずエンター
Last sector      : +512M
Hex code or GUID : EF00

その他のパーティショニング

ESP以外は自由にパーティショニングして下さい。root,swap,home等のパーティションに分けるのが一般的です。今回はrootとswapのみ作成します。

swapパーティション(作成例)

Command (? for help):n
Permission number: 2
First sector     : 何も押さずエンター
Last sector      : +1G
Hex code or GUID : 8200

rootパーティション(作成例)

Command (? for help):n
Permission number: 3
First sector     : 何も押さずエンター
Last sector      : 何も押さずエンター 
Hex code or GUID : 8300

今回はこのようなパーティションにしてみました。
02

ファイルシステムとswapの作成

ESPのフォーマット

# mkfs.vfat -F32 /dev/sda1

Linuxファイルシステム(ext4)のフォーマット

# mkfs.ext4 /dev/sda3

スワップの作成と読み込み

# mkswap /dev/sda2
# swapon /dev/sda2

パーティションのマウント

先ほど作成したパーティションをマウントしましょう。まずはルートからです。

# mount /dev/sda3 /mnt

次にESPを/mnt/bootにマウントします。ESPの場所は後に重要になってきます。

# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot

システムのインストール

ミラーリストの設定

インストールするためのシステムをダウンロードするミラーを設定します。以下コマンドで設定ファイルを開きます。設定例のように使いたいミラーを一番上にコピーします。

# nano /etc/pacman.d/mirrorlist

##
## Arch Linux repository mirrorlist
## Sorted by mirror score from mirror status page
## Generated on YYYY-MM-DD
##
Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch

インストール

ではシステムのインストールの準備が整いましたのでマウントした/mntにシステムをインストールしていきます。以下コマンドを実行します。

# pacstrap -i /mnt base base-devel

fstabの作成

# genfstab -U -p /mnt >> /mnt/etc/fstab
# nano /mnt/etc/fstab

システム設定

以下ではインストール時に必要と思われる設定項目につき設定を行っていますが、必ずしもこのタイミングで行う必要のあるものばかりではありませんので、再起動後に行ってもOKをですが最低限rootパスワード設定は忘れずに行って下さい。

新システムへの移動

さて、必要なファイルのコピーは完了したので、新しいシステムに入っていきます。以下コマンドを実行して下さい。

# arch-chroot /mnt /bin/bash

ロケール設定

# nano /etc/locale.gen

以下の行をコメントアウトします。

en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8 

次に以下コマンドを実行します。

# locale-gen

次にlocale.confファイルを作成します。この段階では日本語設定はせずに、GUI環境導入後に設定することをオススメします。

# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8 

コンソールフォントとキーボードレイアウトの設定

/etc/vconsole.confファイルを作成します。

# nano /etc/vconsole.conf 

以下のフレーズを記載します。(フォントなどはお好みでどうぞ)

KEYMAP=jp106
FONT=Lat2-Terminus16

エリア設定

次にエリア設定をします。以下のコマンドは日本在住の場合です。海外にお住まいの場合は/usr/share/zoneinfo/ディレクトリ内の地域とエリアを選択して下さい。

# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

時刻設定

ハードウェアクロックをUTCに設定します。

# hwclock -u -w

ホスト名の設定

以下コマンドを実行してホストネームを設定します。

# echo ホスト名 > /etc/hostname

ネットワーク設定

再起動後にネットワーク接続が有効なようにdhcpcdサービスを有効にしておきましょう。(NetworkManagerを使う場合はそちらを有効にします)

# systemctl enable dhcpcd.service

rootパスワード設定

この設定を忘れると再起動後にログインできなくなります。以下コマンドを実行して忘れず設定しましょう。

# passwd 

ブートローダーのインストール

今回はGRUBをインストールすることにします。gummibootをインストールしたい場合はArch Wikiを参考にしてください。

Grubのインストール

grubと他の必要なパッケージをインストールします。今回はx86_64を前提として説明しています。Grubはpacmanでインストールしただけでは設定が反映されないのでgurb-installを実行します。

# pacman -S grub dosfstools efibootmgr
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
# grub-mkconfig -o /boot/grub/grub.cfg

UEFIファームウェアによってはブータブルスタブが特定の名前で特定の場所に置かれていないと起動できないものがあります。念の為に以下のコマンドを実行しておきます。

# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi  /boot/EFI/boot/bootx64.efi

再起動・起動確認

インストール作業はここまでです。では再起動して起動できるか試してみましょう。まだchrootでインストール先のシステムに入っているのでexitします。

# exit

インストールメディアを抜いて以下のコマンドで再起動します。

# reboot

以下の様にGRUB画面が出てArchが起動できればUEFIブート成功です。
03

現段階ではGUI環境が入っていませんのでArch wikiや以下の記事を参考にしてください。
Arch Linuxのインストール後の環境設定まとめ

最後に

少々長くなりましたが、UEFI環境にArch Linuxを導入する際のお役に少しでも立てばと思い記事にしました。ブート周りの変更に戸惑う声もあると思いますが、今後主流になっていくUEFIブートには馴染んでおく必要があるかなと思いました。

Sponsored Link


6件のコメント

  • 新しい規格への以降にはトラブルもつきものですね
    UEFIに対応するようにUSBにインストールしたArchLinuxがBIOS環境のPCで使えず困ったことがあります

    ps
    swapパーティションとrootパーティションのHex codeの記述ですが、文章ではef00、画像では8200,8300となっていますがおそらく誤記ですね

    • 774さん

      コメントありがとうございます。
      新しい規格への対応はいつも大変ですよね。

      パーティショニングの誤記につきご指摘ありがとうございました。
      修正しておきます。

  • この記事のおかげではじめてUEFI環境へのインストルができました。ありがとうございます。

    • uchさん

      コメントありがとうございます。
      UEFI環境へのインストール、最初は戸惑いますよね。
      本記事がお役に立てて幸いです。

      今後共よろしくお願いいたします。

  • この記事のお陰様で、敷居の高かったArchLinuxが身近に感じられるようになりました。ありがとうございました。

    • chibi様

      お返事遅くなりごめんなさい。
      少しでも記事がお役に立てれば幸いです。

      Arch Linuxはカスタマイズが楽しいですよね。
      どうぞ充実したLinuxライフを。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です