Arch Linux インストールガイド(UEFIデスクトップ編)



自作PCに Arch Linux をインストールしたときの手順をまとめます.
この記事では, Arch Linux のインストールと実用上において最低限必要なセットアップを行うところまでを解説します.


# はじめに

この記事では, デスクトップ用途を想定しており, サーバ用途ではありません.
(とは言っても, 固定IPの設定をすればサーバ用途にも派生可能です)
また, 日本語環境をセットアップすることを想定しており, そのためのロケールの設定などをしています.

インストールの手順は, Arch wiki に準じます.

<https://wiki.archlinux.org/index.php/Installation_guide>

数年前までは, インストールガイドだけでインストールが完了するような作りになっていたのですが, 方針が変わったようで, 必要なページに必要な情報を見つけにいくようなスタイルになりました.
Arch らしいと言えば Arch らしいのですが, 選択肢が多く直線的ではないので少々わかり辛いという難点があるため, 選択の幅を幾分かなくして手続きを直線的にしました.
そのため, 上のページの単なる写経ではなく, 必要な情報を適宜補う形の記事になっています.

既にいくつもの Arch Linux のインストールに関する記事がありますが, インストール先をUEFIのデスクトップPCに限ることで, できる限りシンプル・直線的になっている点で差別化されていると思います.


<a id="orgb9d1d63"></a>

# 環境と方針

-   CPU: Intel Core i シリーズ
-   グラフィック: Intel UHD graphics
-   起動モード: UEFI
-   ストレージ: NVMe SSD
-   ネットワーク: 有線・動的アドレス(DHCP)

## CPU

CPUは, 流行りの AMD Ryzen ではなく, 第10世代 Intel Core i シリーズで進めていきます.
調べた限りでは, Ryzen に最適化するには, インストールするカーネルを linux-zen にする必要があるようです.

## グラフィック

グラフィックは, Intel UHD graphics を用います. グラフィックボードは用いません.
型番によっては, CPU内蔵のグラフィック機能が非搭載で外部GPUが必要な場合がありますので注意してください.

## 起動モード

起動モードはUEFIを前提とします.
Windows 7 サポートが切れた 2020年1月以降, 新規に購入するPC(マザーボード)でUEFIに対応しないものは事実上ないと思われますので, レガシーなBIOSにしか対応しないマザーボードは考えません.

## パーティショニング
パーティショニングの方法は, MBR ではなくモダンなGPTを選びます. 
ファームウェアによっては, UEFI-MBR はブートできない可能性があることがArch wiki で指摘されており, MBRでパーティショニングするメリットはないと思われます.
ストレージは新規購入した NVMe SSD を用います. インストール開始時にフォーマットはされていないとします.

## ネットワーク

ネットワークへの接続は, 有線かつ動的アドレス(DHCP)を用いることにします. 
サーバ用途は考えないので, 静的アドレス(固定IP)については解説しません.

## その他

Windows や他のOSとのデュアルブートは想定しません.
Arch Linux をシングルブートさせることを考えます.


<a id="org386b8ff"></a>

# 準備

Arch Linux のインストーラを立ち上げるまでの準備です.


<a id="org968bd34"></a>

## ブータブルUSBの用意

Arch Linux のブータブルUSBを用意します.
このブータブルUSBは, 一つあれば様々なシステムにArch Linux をインストールできます.
また, インストール後になんらかの原因でシステムが起動しなくなったときの診断ツールとしても機能しますので, 一つ専用のものをストックしておくと便利です.
容量は4GBあれば十分です.

Windows・Mac におけるブータブルUSBの作成方法については以下を参照のこと.
すでに Linux システムを使っているのであれば `dd` を使うのが手っ取り早いです.

<https://wiki.archlinux.org/index.php/USB_flash_installation_medium>

ISO ファイルは以下から入手できます.

<https://www.archlinux.jp/download/>


<a id="org5d498ed"></a>

## UEFIを起動

UEFIを起動マザーボード固有の手順によって起動します. 
マザーボードやPCの取説を参照してください.
F2, F12, DEL, ESC キーを要求されることが多い印象です.

Boot prioirty でUSBメモリからの起動を最優先にしておきます.

Arch Linux でUEFIの起動画面が出たら, インストールに進みます.


<a id="orgb4ecfc3"></a>

# インストール

インストーラが立ち上がったら, システムに Arch Linux をインストールしていきます.


<a id="org942af9a"></a>

## インストールの準備

キーボードレイアウトの設定や,ネットワーク接続の確認などインストールに最低限必要な設定をします.
また, ストレージのパーティション分けとフォーマット, マウントを行います.


<a id="orgeecfc2e"></a>

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

デフォルトではUSキーボードに設定されているので, JPキーボードを用いている場合には 

    # loadkeys jp106

と設定を変更します. 
ターミナルでの作業が中心となり, 不可逆な操作も多いのでキーボードレイアウトの適切な設定は重要です.


<a id="org9ab42cf"></a>

### 起動モードの確認

UEFIで起動していることを確認します.
インストーラの起動時にUEFIの画面に入っていれば, おおよそ問題ないかと思います.

    # ls /sys/firmware/efi/efivarss


<a id="org2440650"></a>

### ネットワーク接続の確認

これも有線LANで接続しているなら, ほとんどの場合は既に接続されていますが, 一応 `ping` で確認をします.

    # ping  -c 3 archlinux.jp


<a id="org6565b2d"></a>

### システムクロックの更新

`timedatectl` を使ってシステムクロックを正確にします.

    # timedatectl set-ntp true


<a id="org76bbe63"></a>

### パーティショニング

`gdisk` を用いてストレージのパーティションを分けていきます.
UEFI-GPTの場合, パーティション分けと適切なフォーマットが必須になります. 
`/boot` 用に500MBほど必要です. 
今回は, 残り全てのパーティションを ルート `/` に割り当てます.

まず, `lsblk` を用いて, デバイス名を確認します.
`/dev/nvme0n1` という名前のデバイスが見つかったので, パーティショニングツール `gdisk` 用いて, パーティションを分けます.
デバイス名は, ストレージの接続の種類によって異なり, SATA接続の場合は `/dev/sda` などと表示されます.

`gdisk` でデバイスを開きます:

    # gdisk /dev/nvme0n1

開くだけで自動で GPT 用にフォーマットされるようです.

1番目のパーティションを `/boot` に, 2番目のパーティションを `/` に割り当てます.
1番目のパーティションには, 「EFI system partition」  2番目は, デフォルトの 「Linux File system」をラベル付けします. 
`gdisk` はインタラクティブなUIなので, わからなくなったら `?` でヘルプを呼び出しましょう.

パーティション分けとラベル付けが終わったら, `w` で書き込んで終了します.
`lsblk` で確認すると, パーティショニングができているはずです.

`gdisk` の使い方については以下を参照:
<https://wiki.archlinux.jp/index.php/Fdisk>


<a id="org4bcf396"></a>

### フォーマットとマウント

`/` は, ext4 を用い, `/boot` にはvfat を用います.

    # mkfs.ext4 /dev/nvme0n2
    # mkfs.fat -F32 /dev/nvme0n1p1

次にデバイスをファイルシステムにマウントします.
まず, ルートをマウント.

    # mount /dev/nvme0n1p2 /mnt

`/boot` ディレクトリを作成してから, マウントします.

    # mkdir /mnt/boot
    # mount /dev/nvme0n1p1 /mnt/boot


<a id="org5611268"></a>

## インストール

パーティション分けしたストレージ領域をマウントしたら, Arch Linux のインストールをします.


<a id="orga29207a"></a>

### ミラーの選択

Arch Linux をインストールするミラーを選択します.
日本国内のサーバを選択することでインストールが早くなります.
`/etc/pacman.d/mirrorlist` を編集して, 国内サーバのアドレスをファイルの先頭に持ってきます.

エディタは `vi` か `nano` がよく使われます.
初心者には `nano` がオススメです.

`nano` は下の方にコマンドのショートカットが記載されていますが, 便利なコマンドを以下に紹介しておきます:
`Ctrl-w`:単語検索, `Alt-6`:行をコピー, `Ctrl-u`:ペースト


<a id="org729e0f0"></a>

### インストール

`pacstrap` を用いて, マウントしたルートにシステムをインストールします.

    # pacstrap \mnt base base-devel linux linux-firmware

`base-devel` は必須ではありませんが, 大半はすぐ必要になると思うのでここで入れておきます.


<a id="org7624190"></a>

## システムの設定

Arch Linux のファイルシステムの構築と最低限必要なパッケージのインストールは完了しました.
さらに, ローカリゼーション, ネットワーク設定, そしてシステムをブートするためのブートローダーのインストールを行う必要があります.


<a id="org2091ab8"></a>

### fstab の作成

`fstab` を作成します.

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

きちんと生成されたかどうか確認します.

    # cat /mnt/etc/fstab


<a id="org541f91b"></a>

### arch-chroot

新しくインストールしたシステムに chroot します:

    # arch-chroot /mnt


<a id="orgd425433"></a>

### タイムゾーン

タイムゾーンを設定します:

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

`hwclock` を実行して, `/etc/adjtime` を生成します:

    # hwclock --systohc


<a id="org1a490f6"></a>

### ローカリゼーション

ロケールを設定します. 
`en_US.UTF-8` と `ja_JP.UTF-8` の2つを生成します.
日本語環境を設定する必要がないのであれば, `ja_JP.UTF-8` の生成と有効化は必要ありませんが, 今後に日本語環境の構築を想定しているのでここで設定しておきます.

まず, `/etc/locale.gen` を編集して, `en_US.UTF-8 UTF-8` と `ja_JP.UTF-8 UTF-8` の2つをアンコメントします.
なお, ここで編集のために `vi`や`nano`を使うためには、インストールが必要ですので `pacman -S nano`などと実行してインストールします.
次のコマンドを実行してロケールを生成します:

    # locale-gen

その後, `/etc/locale.conf` ファイルを作成して, `LANG` 環境変数を設定します.

    LANG=en_US.UTF-8
    # LANG=ja_JP.UTF-8

いきなり, `ja_JP.UTF-8` を設定してしまうと, 後に再起動したときに仮想コンソール上でのメッセージが文字化けしてしまうのでコメントアウトしています.
後にデスクトップ環境や日本語フォントをインストールした後に有効化します.

日本語キーボードを使っている場合, `/etc/vconsole.conf` にコンソールキーマップを設定します.

    KEYMAP=jp106

これをしないと, システムを起動する度に `loadkey jp106` を打つハメになります.
あくまで仮想コンソールのキーマップ設定なので, X Window system などGUIを導入する場合は別に設定する必要があります.


<a id="org5ccfebf"></a>

### ネットワーク設定

ホストネームの設定とDHCPサービスの設定をします.

まず, ホストネームを設定します.
`/etc/hostname` を作成して, 適当なホストネームを記述します.

    myhostname

ホストネームに使用可能な文字には制限があるようです.
アルファベットとハイフン `-` およびドット `.` 以外は使わないことが推奨されてるようです.

同じホストネームを `/etc/hosts` にも記述する:

    127.0.0.1	        localhost
    ::1		localhost
    127.0.1.1	        myhostname.localdomain	myhostname

次に, 立ち上げたときに自動でネットワークに接続するための設定をDHCPを用いて行います.
`dhcpcd` をインストールし, サービスを有効にします.

`dhcpcd` のインストール:

    # pacman -S dhcpcd

ネットワークインターフェースの確認:

    # ip link

表示される番号のすぐ右側にある名前がインターフェースの名前です.

本環境ではデバイス名が `eno1` と確認できたので, デバイス名を指定してサービスを有効化します:

    # systemctl enable dhcpcd@eno1.service

これで再起動後にネットワークに自動で接続されます.


<a id="org0c9b760"></a>

### Initramfs

LVM, システム暗号化, RAID環境の構築はしないので, 今回は必要ではありません.


<a id="orge69bc49"></a>

### Root パスワード

root パスワードを設定します.

    # passwd

この手続きを忘れると, システムにログインできません.
忘れてしまった場合は, 再びインストーラを立ち上げ, パーティションを `mount` し, `arch-chroot` した後, パスワードを設定する必要があります.


<a id="org863fe9c"></a>

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

ブートローダーをインストールします.
今回は, `grub` を用いることにします.

`grub` と `efibootmgr` をインストール:

    # pacman -S grub efibootmgr

grub をインストール:

    # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

設定ファイルを生成:

    # grub-mkconfig -o /boot/grub/grub.cfg

`grub` については, 以下を参照のこと.
こちらも多少情報が分散しており, 初心者には分かりづらくなっていると感じます.

<https://wiki.archlinux.jp/index.php/GRUB>


<a id="org60e9a43"></a>

## 再起動

`chroot` 環境から抜けるには, `exit` と打つか, `Ctrl+d` を押します.
その後任意で全てのパーティションをアンマウントして, `reboot` コマンドで再起動します.

再起動する際に, インストールメディアを抜かないと再びインストーラが起動してしまう可能性があります.

Arch Linux のログイン画面が出たら成功です.


<a id="orgd98ede6"></a>

# インストール後

実用上, 最低限必要と思われる設定として, ユーザ設定と `sudo` を設定しておきます.
再起動後, root としてログインします.


<a id="orgc722dc7"></a>

## システムのアップデート

システムは以下のコマンドでアップデートできます:

    # pacman -Syu

インストール直後は本当にミニマルで(システム設定時にインストールしていなければ） `vi` すらインストールされていません.
そこで `vi` と `nano` のインストールをしてみます.

    # pacman -S vi nano

`vi` と `nano` コマンドを実行できるようになるはずです.

Arch Linux の根幹はパッケージマネージャ `pacman` にあると言っても過言ではありません.
使い方は, 他のものに比べるとシンプルであるように思います.
以下に詳しい使い方が載っています.

<https://wiki.archlinux.jp/index.php/Pacman>


<a id="org6817561"></a>

## ユーザの追加

セキュリティ上, root ユーザのまま作業するのは好ましくないとされます.
そこで一般ユーザの追加と `sudo` への登録を行います.

まずユーザを追加:

    # useradd -m -s /bin/bash user

`-m` オプションによって, ユーザのディレクトリ `/home/user` を作成し, 
`-s` オプションによって, ログインシェルを指定します.
ここでは標準的な `bash` を用いますが, 他のシェルを用いる場合は事前にインストールしておくとよいかと思います.

ユーザのパスワードを設定:

    # passwd user

ユーザの追加については, 以下を参照:
<https://wiki.archlinux.org/index.php/Users_and_groups>

`visudo` を使って `sudo` へユーザを登録:

    # visudo 

一度ログアウトし, 一般ユーザとしてログインし直してから, システムのアップデートを実行:

    $ sudo pacman -Syu

最初に `sudo` を使うときには, 注意書きが出ますが特に気にする必要はありません.

`sudo` については以下を参照:
<https://wiki.archlinux.jp/index.php/Sudo>


<a id="org7c53520"></a>

# まとめ

自作PCに Arch Linux をインストールして, 最低限のセットアップを行いました.
PCを自作する場合, ストレージにOSがインストールされていないので, パーティションの手続きが多少楽になります.

GUIや日本語環境, アプリケーションのインストールなどは別記事で解説したいと思います.