Arch Linux KDE: Installation (1)
インストールの流れ (前編)
- はじめに
- インストーラの起動
- キーボードの選択
- 起動モードの確認
- インターネット接続状態の確認
- システムクロックの更新
- インストール先ストレージのパーティション構築
- 各パーティションのマウント
- インストール実行
- ファイルシステムマウント構造の登録
- 休憩
1. はじめに
Arch Linuxのインストールは他のLinuxディストリビューションと比較して難易度が高めですが、公式Webサイトに日本語で手順が丁寧に解説されています。本記事では基本的にそれに準拠した手順を、簡略化しつつ実際の画面表示を添えて解説していますが、より詳細な手順、あるいはハードウェア環境の違いによって応用が必要になった際はArch Linux公式サイトを参照することをお勧めします。
2. インストーラの起動
Arch LinuxのインストーラisoイメージをUSBメモリスティック等に書き込んでコンピュータに装着し、電源を投入するとはじめに以下の画面が表示されます。なお、ここで表示される画面はコンピュータ側のBIOSが昔ながらのBIOSなのかUEFIなのかによって異なり、また後に行うストレージのパーティション構築方法も若干変わってきます。

Fig.2-1: BIOS上での起動時メニュー

Fig.2-2: UEFI上での起動時メニュー
今回は、UEFIを前提に解説します。
一番上の「Arch Linux Install medium (x86, 64, UEFI)」を選択してEnterキーを押して進めてください。
3. キーボードの選択
インストーラはroot権限でログインした状態で開始されます。
Arch LinuxのインストーラはCUI方式で、かつ対話式ではありません。デスクトップ環境のインストールに行き着くまでの間は全ての操作をキーボードで行う必要があるため、まずはキーボードレイアウトを適切に設定し、記号などの入力に不都合が生じないようにします。

Fig.3-1: インストーラ開始直後の画面
次のコマンドを入力し、選択可能なキーボードレイアウト一覧を確認します。
キーボードレイアウト一覧の確認
ls /usr/share/kbd/keymaps/**/*.map.gz

Fig.3-2: キーボードレイアウト一覧
日本語キーボードを使用している場合、このうちの/usr/share/kbd/keymaps/i386/qwerty/jp106.map.gzが適切です。そこで、以下のコマンドを用いてキーボードレイアウトを設定します。
日本語キーボードレイアウトを適用する
loadkeys jp106
なお、これはあくまでも現在USBメモリスティックから読み込まれて動作しているインストーラ上の操作を日本語キーボードレイアウトに切り替えたのであって、インストール後の環境とは関係ありません。
それでは、次に進みましょう。
4. 起動モードの確認
UEFIモードには64ビット版と32ビット版の二種類があります。よほど古い、あるいは特殊なマザーボードやコンピュータではなければまず64ビットのはずです。
起動モードの確認
cat /sys/firmware/efi/fw_platform_size

Fig.4-1: UEFIビット数の確認結果
参考画像のように「64」という数字が帰ってくるかどうか確認してください。もし32だった場合でもインストール自体は行えますが、後述するブートローダーのインストールにおいて若干制約が出てきます。
5. インターネット接続状態の確認
有線ネットワークの場合はよほど特殊な接続方法でない限り既にインターネット接続が有効になっていますが、Wi-Fiの場合は接続のためにいくつかのステップを踏む必要があります。
ここでは有線ネットワークに接続されている前提で解説を進めます。以下のコマンドで接続状態を確認してください。
ネットワークアダプタの接続状態確認
ip link

Fig.5-1: インターネット接続状態の確認
ネットワークアダプタ一覧が列挙されますので、2番目以降のenp***が参考画像のように緑色で「UP」と表示されていれば無事インターネットに接続されています。もし赤色でDOWNと表示されているようであればLANケーブルの接続状態などを再確認してください。
なお、1番目のloは自分自身を指すループバックアドレスを示す仮想のインタフェースであり、物理的なネットワークアダプタではありません。
6. システムクロックの確認
時刻合わせのため、インストーラのシステムクロックを確認しておきます。前述のインターネット接続が有効になっていれば自動的にNTP経由でシステムクロックは同期されるようになっています。タイムゾーン判別までは自動では行われないのでLocal timeはUTC協定世界時と同じになっていますが、ここで特に何かする必要はなく、確認だけにとどめておいて問題ありません。
システムクロックの確認
timedatectl status

Fig.6-1: システムクロックの確認結果
- Local time: UTC協定世界時を基準にタイムゾーンの時差ぶんを加算した時刻
- Universal time: NTP経由で同期されたUTC協定世界時
- RTC time: マザーボード上の時計で、UTCに近いですが誤差があります。
- Time zone: そのコンピュータを使用している場所
それでは、次へと進みます。
7. インストール先ストレージのパーティション設定
まずは、インストーラが認識できているストレージの一覧を確認しましょう。
インストーラから見えている全ストレージのサマリーを表示
fdisk -l

Fig.7-1: 認識されているストレージ
この例では、インストーラは/dev/sdaに125GiBのストレージがあることを認識しています。以降、このストレージにArch Linuxをインストールするための手順を進めていきます。
なお、もうひとつの/dev/loop0はループデバイスと呼ばれるもので、実際にはストレージではなく、システム側が便宜上特定のファイルをあたかも仮想のストレージであるかのように認識している事を示しているものであり、その実体は例えばisoイメージであったり、時によって様々です。いずれにしてもこれはインストール先にすることはできません。
それでは、必要なパーティション設定を行うため、fdiskユーティリティソフトウェアの対話モードをこの/dev/sdaを指定して開始しましょう。もしインストール対象のストレージが/dev/sdaではない場合は、その部分を対象のパスに読み替えてください。
fdiskユーティリティソフトウェアの対話モードを/dev/sdaに対して開始
fdisk /dev/sda

Fig.7-2: fdiskユーティリティソフトウェアを特定のストレージに対して開始
今回、まず最初にその対象となったストレージにはまだパーティションテーブルが定義されていないことを示すメッセージが表示されています。ストレージを再利用している場合などはこの操作はスキップできることもありますが、今回はまずパーティションテーブルの作成から始めます。
fdisk対話モード / 対象のストレージにGUID(GPT)パーティションテーブルを作成
g

Fig.7-3: gコマンド
シンプルに一文字「g」と打ち込み、Enterキーを押すことでGUIDパーティションテーブルが作成されます。なお、ここでgではなく「n」と打ち込んで進めると昔ながらのMBR(マスターブートレコード)として扱われますが、その場合は容量の制約などがあります。
それでは、ここから実際のパーティションを作り始めます。
まずは1つめのパーティションとしてEFIシステムパーティションを作成します。
なお、GUIDパーティションテーブルは既に作成済みの状態なので、この時点で打ち込む「n」は上述のMBR作成用のコマンドとは違う意味合いになります。
fdisk対話モード / 1つめのパーティションを作成
n → 1 → デフォルト値(今回は2048) → +1G

Fig.7-4: 1つめのパーティションを作成
nを打ち込んでパーティション番号選択モードに入り、1を打ち込んで1つめのパーティションを指定します。First sectorについては基本的にdefaultとなっている数字をそのまま入力するので良いでしょう。
唯一考える必要があるのはLast sectorです。セクター番号で指定するのは直感的ではないので容量で指定するのがお勧めです。例えば今回の例で示したように「+1G」と打ち込めば、1GiBの容量が確保されます。1つめのパーティションはUEFIのためのEFIシステムパーティションなので、ほとんどのケースにおいて1GiBも確保してあれば十分です。
成功すれば「Created a new partition 1 of type 'Linux filesystem' and of size ****(作成した容量)」のようにメッセージが表示されます。ただしEFIシステムパーティションとして使うにはこのデフォルト指定される分類'Linux filesystem'ではいけませんので、これは後ほど別途変更します。
次に2つめのパーティションとしてスワップ領域用パーティションを作成します。
必須ではありませんが、今回は参考までに一応作ってみましょう。
fdisk対話モード / 2つめのパーティションを作成
n → 2 → デフォルト値(今回は2099200) → +1G

Fig.7-5: 2つめのパーティションを作成
手順は先程1つめのパーティションを作成した時と全く同じです。なお、今回の例では1GiBという容量にしてありますが、もし本当にスワップ領域を運用上必要とする環境であればこの容量は適切ではありません。スワップ領域はおおむね物理メモリ搭載量の1〜2倍程度に設定してください。
また、これはいわゆる「スワップファイル」とは別物の、固定サイズスワップ領域である点にも注意が必要です。スワップに関してはコンピュータのスペックと運用内容に応じて以下の3つの選択肢があるので、好みに応じて使い分けてください。
- スワップを行わない。
- スワップ領域パーティション(固定サイズ)を作成して適用する。
- スワップファイル(可変サイズ)を作成して適用する。
最後に3つめのパーティションとして、OSインストール先のパーティションを作成します。
fdisk対話モード / 3つめのパーティションを作成
n → 3 → デフォルト値(今回は4196352) → デフォルト値(今回は262141951)

Fig.7-6: 3つめのパーティションを作成
最後のパーティションには残っている全容量を割り当てるので、Last sectorもデフォルト値と同じ値を入力します。これでパーティションの作成は完了です。
次に、各パーティションの分類を指定します。
fdisk対話モード / パーティションの分類を指定
t → パーティション番号 → パーティション分類番号

Fig.7-7: コマンド「t」でパーティションの分類指定を開始
パーティション分類番号を調べたい時には「L」を入力することで一覧表を見ることができます。

Fig.7-8: 一覧表の最初のページ

Fig.7-9: 一覧表の最後のページ
左端に表示されているのがパーティション分類番号です。
それでは、各パーティションに適切なパーティション分類番号を割り当てましょう。
1つめのパーティションはEFIシステムパーティションなので「1」を。

Fig.7-10: EFI System
2つめのパーティションはスワップ領域パーティションなので「19」を。

Fig.7-11: Linux swap
3つめのパーティションはOSインストール領域パーティションなので「23」を。

Fig.7-12: Linux root (x86-64)
以上でパーティション設定の全ての準備が整いました。準備が整った、というのは、このfdiskユーティリティソフトウェアの対話モードでここまでに入力した内容はあくまでもドラフト扱いであって、実際のストレージへの物理的書き込み操作はまだ行われていません。
キーボードから「w」を入力してEnterキーを押し、全ての操作を確定・実行させましょう。
fdisk対話モード / 確定・実行
w

Fig.7-13: 確定・実行
書き込みが完了するとfdisk対話モードは自動終了し、rootでのコマンド入力待機状態へと戻ってきますので、念のため正しくパーティション構築が行われたどうかを確認しておきましょう。
特定のストレージのサマリーを表示
fdisk -l /dev/sda

Fig.7-14: パーティションが3つ構築されていることを確認
これにてパーティションはそれぞれ構築されましたが、まだフォーマットが成されていません。ここからは3つのパーティションそれぞれに適したファイルシステムでフォーマットを行います。
EFIシステムパーティションをfat32ファイルシステムでフォーマット
mkfs.fat -F 32 /dev/sda1

Fig.7-15: fat32ファイルシステムでフォーマット
スワップ領域パーティションをswap形式でフォーマット
mkswap /dev/sda2

Fig.7-16: swap形式でフォーマット
OSインストール先パーティションをext4ファイルシステムでフォーマット
mkfs.ext4 /dev/sda3

Fig.7-17: ext4ファイルシステムでフォーマット
これにて3つのパーティション全てが利用可能になりました。次は実際にこれらのパーティションをマウントし、インストーラから直接参照可能な状態にします。
8. パーティションのマウント
それぞれのパーティションをマウントします。
少し複雑になりますが、これはインストーラとしてisoイメージファイルから起動された、現在メモリ上に展開されているLinuxのrootディレクトリ構造内の特定の場所に、これからインストールを行うためのパーティションをマウントしているという仕組みになります。
まずは、OSインストール先パーティションのマウントからです。
OSインストール先パーティションのマウント
mount /dev/sda3 /mnt

Fig.8-1: /dev/sda3を、インストーラ環境の/mntディレクトリにマウント
そして次にEFIシステムパーティションのマウントを行います。ここで重要なポイントは、この/mntというディレクトリの実体は、既に上記のコマンドによってOSインストール先パーティションである/dev/sda3へと置き換わっているという点です。よって以下のコマンドに含まれている「--mkdir」は、実際には/dev/sda3/の直下にbootというディレクトリを作っているのと同じことになります。
EFIシステムパーティションのマウント
mount --mkdir /dev/sda1 /mnt/boot

Fig.8-2: /dev/sda1を、/mnt/bootディレクトリにマウント
ここでオプションとして--mkdirを付けていますが、これによりマウント先として指定したディレクトリが存在していなかった時に自動で作成してくれます。
最後に、もしスワップ領域パーティションを作っていた場合は有効化します。
スワップ領域パーティションの有効化
swapon /dev/sda2

Fig.8-3: スワップ領域パーティションの有効化
9. インストール実行
これで一通りの準備が整いましたので、いよいよ実際にインストールを行います。
pacstrapスクリプトを実行することで、以下の3要素のインストールが開始されます。
- 引数 base : Arch Linuxのbaseパッケージ
- 引数 linux : Linuxカーネル
- 引数 linux-firmware : 一般的なハードウェア用のドライバ群
pacstrapスクリプトの実行
pacstrap -K /mnt base linux linux-firmware

Fig.9-1: pacstrapスクリプトの実行
2番めの引数に/mntを指定していることからわかるように、インストールが行われる先は先程そこにマウントされた/dev/sda3です。

Fig.9-2: インストール実行中...
しばらく待っているとインストールが完了します。

Fig.9-3: インストール完了
10. ファイルシステムマウント構造の登録
無事インストールが完了したら、次にファイルシステムテーブルを登録します。このファイルが存在しないとシステムは自らのマウント構造を再現できないため、単体で起動することができません。
ファイルシステムテーブル生成コマンドgenfstabを用いて、OSインストール先パーティションの所定の位置(/etcの直下)にfstabを生成しましょう。
ファイルシステムテーブルの生成
genfstab -U /mnt >> /mnt/etc/fstab

Fig.10-1: genfstabコマンド
ここで行われているのは、/mnt(つまりOSがインストールされた/dev/sda3)以下のファイルシステムマウントポイントを全て検出し、その結果をテキストファイル/mnt/etc/fstab(つまり/dev/sda3/etc/fstab)として生成しています。なお、今回はオプションパラメータ「-U」によって、そのマウントポイントはファイルシステムごとに生成される識別子UUIDで登録していますが、別の方法としてオプションパラメータ「-L」によってラベル名で登録することも可能です。
無事生成されたかどうか、catコマンドで中身を確認できます。
生成されたファイルシステムテーブルの確認
cat /mnt/etc/fstab

Fig.10-2: 生成されたファイルシステムテーブル
このように、ルートディレクトリとして/dev/sda3が、そして/bootディレクトリとして/dev/sda1が、またスワップ領域/dev/sda2は特定のディレクトリにマウントこそされていませんがその存在が登録されていることがわかります。
11. 休憩
これにて、isoイメージから起動されたインストーラ側のArch Linuxのroot権限者として行う処置は完了しました。ここからはインストールされた側の環境(すなわち/dev/sda3内の環境)に移動し、そちらでさらに自らの環境設定準備を進めていくフェーズとなります。
ただ、まだインストールされた側の環境が単体で起動する準備までは整いきっていないので、もう少しの間電源は切らずにこのまま続けましょう。
中編へと続きます。
