【2022年版】Arch LinuxをUEFI + GPT環境にインストールする
2022-07-24
今回のテーマは「【2022年版】Arch LinuxをUEFI + GPT環境にインストールする」です。2015年にArch LinuxをUEFI + GPT環境にインストールするという記事を書きましたが、細かい部分で内容が古くなってしまっており、2022年版を書いてみました。目新しい内容はないですが、2015年とはリポジトリのパッケージ構成が異なっていたり、初期インストールされるツールが異なるなどの点が異なっており、単純な記事の修正よりは書き直したほうが適当と判断しました。バージョンリリースのOSですと、バージョンごとのインストール方法を記事化すれば良いのですが、決まったバージョンを持たないローリング・リリースの場合インストール記事の扱いは難しいなと感じました。
それにしてもあれから7年も経ったのですね。(遠い目)
UEFI + GPTが主流化する流れは変わらず
前述のとおり、Arch LinuxのUEFI + GPT環境へのインストール記事を書いたのが2015年でした。その頃、既にUEFIはBIOSに取って代わる存在となっていましたが、2022年の現在ではその傾向は更に進んだと思います。
UEFI関連の話題としては2021年に発表されたWindows11がシステム要件としてシステムファームウェアがUEFI + セキュアブート対応としている点でしょうか。これによりWindows 11はBIOS搭載マシンにはインストールできないということになります。現在市場に新規で出回っているマシンのほとんどがUEFI対応マシンであることを考慮すると、Windows 11が原因でBIOS排除に拍車が掛かるとは思えませんが、それでも近い将来BIOSってなに?って世代が出てきそうですね。
インストールメディアの入手
では早速作業に入っていきましょう。まずはArch Linuxの公式ページよりisoファイルをダウンロードしましょう。Arch LinuxはGUIのついたLive DVDは配布しておらず小さな容量のインストール用メディアを配布しています。
isoファイルをダウンロードしたらCDに焼くか、USBスティックを作成します。USBスティックをLinuxで作る場合はdd
コマンドを利用して作成できます。
dd bs=4M if=/path/to/isofile of=/dev/sdX status=progress && sync
※sdXはデバイス名を表しています。
インストール作業
インストールメディアの起動
CDかUSBスティックからArch Linuxを起動しましょう。起動メディアの順番はUEFIファームウェアで調整しておきましょう。
インストールメディアが無事起動するとGRUB画面が出ます。
起動すると自動でrootとしてログインします。lynxが入っており、インストール作業に困ったらinstallation_guile
コマンドでArchwikiのページを見ることができます。(ただし英語です)
キーボード設定
以下コマンドでキーボードレイアウトを日本語化しておきましょう。
loadkeys jp106
ネットワークの設定
有線で接続している場合は自動でインターネットに接続すると思いますが、ネットワークインターフェースが認識、有効化されているかを確認してください。
ip link
もし無線の場合はiwctlを使って無線ネットワークに接続してください。
次にインターネットに接続可能か確かめてみましょう。以下のようにping
コマンドで確認します。
ping -c 3 archlinux.jp
パーティショニング
UEFI + GPT環境にインストールする際に気をつけなければ行けないのが、ESP(EFI System Partition)を設ける必要があることです。ESPは少なくとも300MiBの容量が推奨されていますが、512MiB程度の容量を確保しておいたほうが良いでしょう。
今回のパーティション構成は以下表を想定しています。
デバイス | マウント位置 | フォーマット | タイプ |
---|---|---|---|
sda1 | /boot | FAT32 | ESP |
sda2 | / | ext4 | Linux filesystem |
sda3 | - | swap | Linux swap |
パーティショニングにはgdiskを用いました。もしGPTパーティションテーブルが作成済みならばcgdiskでも良いと思います。パーティションツールについてはLinuxで使えるパーティション管理ツールの比較もご覧ください。
以下コマンドでgdiskを起動します。今回は/dev/sdaにGPTパーティションテーブルがない前提とします。
gdisk /dev/sda
以下はgdisk内のコマンドです。上記表のパーティショニングを行うための操作例を示します。
[gdiskの操作例]
#GPTパーティションテーブルを作成
[gdisk] g #これでGPTパーティションテーブルを作成
#sda1パーティションを作成
[gdisk] n #新規パーティション作成
[gdisk] Partition number: 1 enterを押下
[gdisk] First sector: enter押下
[gdisk] Last sector: +512MiB
[gdisk] Hex code or GUID: EF00
#sda2パーティションを作成
[gdisk] n
[gdisk] Partition number: 2
[gdisk] First sector: enter押下
[gdisk] Last sector: +37.5GiB
[gdisk] Hex code or GUID: 8300
#sda3パーティションを作成
[gdisk] n
[gdisk] Partition number: 3
[gdisk] First sector: enter押下
[gdisk] Last sector: +2GiB
[gdisk] Hex code or GUID: 8200
ファイルシステムの作成
各パーティションにファイルシステムとスワップを作成していきます。以下コマンドを実行します。
mkfs.ext4 /dev/sda2
mkfs.vfat -F 32 /dev/sda1 #ESP用
mkswap /dev/sda3 #swap作成
ファイルシステムのマウント
作成した各パーティションをシステムにマウントし、swapを有効化しましょう。
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda3 #swapの有効化
基本的なパッケージのインストール
下準備はできました。では/mntディレクトリにArch Linuxの基本的なパッケージをインストールしましょう。以下コマンドを実行します。
pacstrap /mnt base linux linux-firmware nano
今回はエディタとしてnanoを入れています。お好みに応じてnano, vi, vim, neovimなどから選択してください。この段階でエディタをインストールしなくても後ほどpacmanからインストールすることができます。
尚、arch-chrootでシステム内に入ったあとでpacmanでインストールすることも可能です。
fstabの作成
以下コマンドを実行してfstabを作成します。fstabはシステムがファイルシステムをマウントするための設定ファイルです。手動で作成しても構いません。
genfstab -U /mnt >> /mnt/etc/fstab
UUIDを用いる場合は-Uオプションを、ラベルを用いる場合は-Lオプションを用いてください。作成されたfstabを表示して確認することをオススメします。以下コマンドで確認できます。必要に応じて修正をしてください。
cat /mnt/etc/fstab
ルートパスワードの設定
rootユーザー用のパスワードを決めましょう。
passwd
# 新規パスワードを入力
ログインユーザーの作成
この作業は後回しに出来るのですが、ここで作成してしまいます。
useradd -m -G wheel -s /bin/bash <user名>
passwd <user名>
# ユーザー用のパスワード入力
コンソールキーマップの設定
コンソールでのキーマップを設定しましょう。ここで設定をしておくことでログイン後に毎回loadkeys
コマンドを打たなくて済むようになります。
nano /etc/vconsole.conf
vconsole.confの設定例です。以下のように編集します。
KEYMAP=jp106
FONT=Lat2-Terminus16
尚、コンソールフォントは/usr/share/kbd/consolefonts/
以下にありますので一覧を見たい場合は以下のコマンドで確認できます。
ls /usr/share/kbd/consoletrans/ | less
タイムゾーンの設定
タイムゾーンの設定は/usr/share/zoneinfo/<地域>/<都市>にあります。このリンクを/etc/localtimeにリンクを貼りましょう。
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロックをシステムの時刻に設定し/etc/adjtime
を生成します。
hwclock -w
ローカリゼーションの設定
まずは/etc/locale.gen
をエディタで開き、en_US.UTF-8
と他のロケール(ここではja_JP.UTF-8
)をコメントアウトします。そして以下コマンドを実行してロケールを生成します。
locale-gen
次に/etc/locale.conf
を作成し、以下のように編集します。なぜen_USなのか?ja_JPではないのか?という疑問を抱く方もいるかと思いますが、ここで日本語にしてしまうとコンソール画面が文字化けしてしまいます。ですので、コンソール画面では英語、Xorg(またはWayland)を立ち上げてGUI画面となった場合には日本語を使うようにすると良いと思います。(GUIの導入と日本語化については本稿では割愛します)
LANG=en_US.UTF-8
ネットワークの設定
今回はNetworkManagerを導入してネットワークの設定を行います。dhcpcdパッケージを導入しても良いですが、各ネットワーク設定ツールは排他的な関係にあるため、同時にサービスを有効化することは避けてください。NetworkManager以外の選択肢を選びたい場合など、ネットワークの設定に関する詳細はArchwikiをご覧ください。
pacman -S NetworkManager
systemctl enable NetworkManager
ブートローダのインストール
UEFI + GPT環境へのインストールがBIOS + MBR環境と最も異なる点はこのブートローダのインストールだと思います。以下のコマンドでブートローダをインストールします。ここでは(arch-root環境下での)/bootがEPSであるという前提で作業を進めていいます。
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
VirtualBox等のUEFIのファームウェアによってはefiファイルを特定の場所、名前で指定しないと検知できない場合があります。以下のコマンドでファイルをコピーしておきます。
mkdir /boot/EFI/boot/
cp /boot/EFI/GRUB/brubx64.efi /boot/EFI/boot/bootx64.efi
再起動
ではarch-chroot環境から抜け出して再起動しましょう。reboot
コマンドで再起動してもよいのですが、ここではメディアを取り出すことも考慮して一旦システムをシャットダウンします。
exit # これでchroot環境を出る
poweroff
インストールメディアを取り外した後に再度システムを立ち上げます。GRUB画面から無事にArch Linuxを起動できればOKです。お疲れ様でした。
最後に
Arch Linuxのインストール作業はGUIインストーラがないため敬遠されることもありますが、カーネルのビルド作業もなく、パッケージはバイナリでインストールできるため、GentooやCRUXに比べると非常に楽だと思います。Ubuntu等のインストールのハードルが低いLinuxでコマンドライン操作に慣れたらArch Linuxに挑戦してみるというのも面白いと思います。皆様のLinuxライフ向上に本記事が何か貢献できれば幸いです。