Arch Linux インストール (3)

ネット接続
ここから、実際にインストールの処理に入っていきますが、インストールするファイル(パッケージ)は、ネットからダウンロードする必要があるので、まずは、インストールシステム上でネットに接続する必要があります。

有線 LAN の場合は、起動時に自動で接続される場合がほとんどですが、接続に失敗した場合や、無線 LAN の場合は、手動で接続する必要があります。
接続確認
ネットに接続されているかどうかを確認したい場合は、以下のコマンドを実行します。

# ping archlinux.jp

実行中はずっと送受信が繰り返されるので、エラーがなければ、Ctrl+C を押して中断してください。
有線 LAN で接続
# ネットワーク設定 - ArchWiki

有線 LAN の場合、通常は自動で接続されていますが、接続に失敗していた場合は、手動で設定する必要があります。
失敗することはあまりないと思いますが、問題があった場合は、上のページで詳細を確認してください。
無線 LAN で接続
インストール作業用の Linux 上では、systemd-networkd + iwd で無線 LAN 接続する形になるので、iwctl コマンドを使って、アクセスポイントに接続します。

以前は、netctl に含まれる wifi-menu というコマンドがあって、ある程度簡単に接続できましたが、今は ISO 内に含まれていません。

無線 LAN については、以下に詳細をまとめました。
>> 無線 LAN 接続

■ 無線 LAN インターフェイスの名前 (Name) を調べる

# iwctl device list

(通常は wlan0 です)

■ 周辺のルータを検索

# iwctl station wlan0 get-networks
                ~~~~~

(ルータのネットワーク名がわからない場合は、検索してください。
 wlan0 の部分は、上記で表示されたデバイス名を指定します。)

■ 接続

# iwctl station wlan0 connect <network-name>
                ~~~~~         ~~~~~~~~~~~~~~

(ルータと接続します。
 ルータのネットワーク名を指定してください。
 Passphrase: で暗号化キーの入力を求められるので、入力してください。)

■ 接続状態の表示

# iwctl station wlan0 show
                ~~~~~
時間調整
ネットからパッケージをダウンロードする際、パソコンの時刻が正しくないと、ダウンロードできない場合があるので、ネットから時刻を調整します。

一度 Linux をインストールしていて、時刻が正しいのがわかっているのであれば、行わなくても構いません。
(Windows から乗り換える場合、時刻の記録基準が異なっているので、必ず実行してください)

# timedatectl set-ntp true

timedatectl は、systemd に含まれるコマンドです。
systemd-timesyncd サービスを起動して、NTP で時刻を調整します。

# systemd-timesyncd - ArchWiki
パーティションのマウント
インストールを行う前に、まず、インストール先のパーティションをマウントします。

Linux 上では、パーティション内のファイルにアクセスする場合、まず、mount コマンドでマウントを行って、パーティションを任意のディレクトリに割り当てる必要があります。

# mount <デバイス> <マウント先>

この後の作業では、OS インストール先のパーティションに、ファイルをインストールしていく必要があるため、インストール先のパーティションを、現在起動している Linux 上の /mnt ディレクトリにマウントします。

/mnt は、一般的にマウント用として使われるディレクトリです。

マウントした後に、/mnt ディレクトリ以下のファイルを操作すると、マウントしたパーティション内のファイルを操作するのと同じことになります。
マウント
Arch Linux 用パーティション
まずは、Arch Linux のインストール先となるパーティションを、/mnt にマウントします。

パーティションのデバイス名は、自分の環境用に置き換えてください。
今回の場合、sda1 を UEFI ブート用にしているので、sda2 が Arch Linux 用になります。

# mount /dev/sda2 /mnt
             ~~~~

EFI システムパーティション
EFI システムパーティションがある場合、ブートローダーや Linux カーネルのファイルなどをそこにインストールする必要があるので、/mnt/boot にマウントします。
(現在、/mnt には Arch Linux 用のパーティションが割り当てられているので、OS パーティション内の /boot ディレクトリにマウントすることになります)

ただし、/mnt/boot ディレクトリは存在していないので、先に mkdir コマンドで、ディレクトリを作成します。

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

他のパーティション
他に、/home や /var などに割り当てて使うパーティションを作成した場合は、それらも同じようにマウントしておきます。
Linux システムに関係ないデータ用のパーティションなどは、インストール時には使わないので、今はマウントしなくても構いません。
サーバーのミラーを選択
パッケージをダウンロードするための、サーバーを選択します。

Arch Linux のリポジトリのサーバーは、各国ごとにいくつか存在します。
基本的に、自分がいる国のサーバーを使うのが一番速いので、日本のサーバーを選択します。
(そのままでも使えますが、速度は期待できません)

ミラーのリストは、/etc/pacman.d/mirrorlist のテキストファイルで設定するので、このファイルを編集することになります。
※ここでは、現在メモリ上に起動している、インストール用の Linux 上でのファイルを編集することになります。

mirrorlist ファイルの一番上に記述されている URL から順に接続され、接続に失敗すると、次の行の URL が接続されます。
行頭が '#' で、コメント行となります。

ファイルを直接編集するか、reflector コマンドを使って生成できます。

reflector コマンド
reflector コマンドを使うと、特定の条件で、ミラーの URL を取得することができます。

日本のミラーを、スコアの高い順に取得したい場合は、以下のコマンドを実行します。

# reflector --sort rate --country jp --latest 10 --save /etc/pacman.d/mirrorlist

日本のミラーのみを、スコアの高い順で、最大 10 個取得して、/etc/pacman.d/mirrorlist に保存します。

reflector コマンドは、Arch Linux のミラー の URL を取得するためのコマンド (Python スクリプト) です。
インストール ISO には含まれていますが、Arch Linux の基本システムには含まれていないので、インストール後に使いたい場合は、reflector パッケージをインストールしてください。

テキストファイルの編集
テキストファイルを直接編集する場合は、nano コマンドなどを使います。

# nano /etc/pacman.d/mirrorlist

mirrorlist ファイルには、デフォルトで国ごとのミラーが記述されているので、日本 (Japan) の行を探して、Alt + 6 で必要な行をコピーし、Ctrl + U で先頭行に貼り付けます。
Ctrl + X で終了し、保存します。

Alt + 6現在行をコピー
Ctrl + Uコピーした行を貼り付け
Ctrl + W検索
Alt + W次を検索
Ctrl + X終了。
ファイルを保存するか聞かれるので、保存するなら y を入力。
その後、保存するファイル名を指定します。変更がなければ Enter で決定します。

ミラーについて
サーバーによっては、たまに接続できない時があったり、速度が不安定な場合があるので、実際に使ってみて、好きなサーバーを決めてください。
jaist が一番安定していると思います。

# https://www.archlinux.jp/mirrors/status/
このページで、日本のサーバーの状態がわかるので、参考にしてください。
パッケージのインストール
パッケージをインストールする準備が整ったので、実際に必要なものをインストールしていきます。

ここではとりあえず、Linux の最低限のシステム環境と、テキスト編集ができるだけのパッケージがあれば十分です。
それ以外のパッケージについては、(ネット接続さえ継続されていれば)それぞれ必要になった時に後から追加でインストールすることもできます。
必要なものがあらかじめわかっているなら、まとめてインストールしても構いません。
コマンド
以下は一例です。
base より後の部分は、任意のパッケージなので、必要に応じて変更してください。
主に必要になるパッケージの詳細は、後述しています。

# pacstrap -i /mnt base linux linux-firmware nano sudo

base パッケージは常に必須です。
他に最低限必要なのは、Linux カーネル、ファームウェア、テキストエディタ (CUI) などです。

※ネットワーク接続関連のパッケージも必須にはなりますが、後から追加でインストールすることもできるので、後述します。必要なパッケージがわかっていれば、一緒にインストールしても構いません。

2019年10月6日より、base パッケージの構成が大幅に変更されました。
以前は base パッケージのみでも最低限の環境の構築はできましたが、今後はより細かくパッケージを指定していく必要があります。
>> base パッケージの違い
pacstrap コマンド (スクリプト)
pacstrap は、Arch Linux のシステムをインストールするためのシェルスクリプトです。
Linux システムに必要なディレクトリを作成し、指定されたパッケージを pacman コマンドでインストールします。

# https://github.com/archlinux/arch-install-scripts/blob/master/pacstrap.in

-i オプションは、インストール途中に表示される確認事項 (y/n の選択など) を有効にします。
このオプションがない場合は、すべてデフォルトの回答となり、すぐにインストールが開始します。

オプションを除く最初の引数の「/mnt」は、パッケージのインストール先です。
インストール先のパーティションは /mnt にマウントしてあるので、そのパスを指定します。

それ以降の引数では、インストールするパッケージ名を複数指定します。

また、現在のインストール用 Linux 上にある mirrorlist ファイルが、インストール先の mirrorlist にコピーされます。
そのため、ここで設定したミラー情報は、そのまま引き継がれます。
パッケージについて
baseArch Linux の基本パッケージ。必須です。
https://www.archlinux.jp/packages/core/any/base/
base-devel開発用として使われることが多いパッケージがまとめられています。
現在ではあまり使われなくなった古いツールも多いですが、必要であれば追加してください。
https://www.archlinux.jp/packages/core/any/base-devel/
linux通常の Linux カーネル。
カーネルがなければ、Linux は起動できません。
# カーネル - Arch Wiki

カーネルのパッケージは他にも、長期サポート版の linux-lts や、linux-zen などがあります。
linux パッケージの代わりに、それらを使うことも出来ます。
linux-firmware無線 LAN やグラフィックボードなど、多くの製品の Linux 用ファームウェアが、まとめて含まれているパッケージです。
ファームウェアがないと動作しないデバイスなどがあるので、一般的にはインストールしておいてください。
自分の PC 環境で必要なファームウェアのファイルを、すべて自分で用意して、手動でインストールする場合は必要ありません。
nanoコンソール画面用のテキストエディタ。
とりあえず一番使いやすいと思うので、入れておいてください。
sudo一般ユーザーのままで、一時的に root 権限で実行したいときに使います。
使用頻度は高いですが、base には含まれていないので、別途インストールしてください。
man-db,
man-pages
man コマンドを使って、コマンドのヘルプを表示したい場合は、インストールしてください。
man コマンドを使わない場合は、インストールしなくても構いません。

他には、各ファイルシステム用のパッケージもあります。

reiserfsprogsReiserfs
jfsutilsJFS
xfsprogsXFS
pacstrap 実行後
pacstrap の実行後、まずはパッケージのダウンロードが行われ、その後、インストール処理が行われます。
終了するまで、しばらく待ってください。
ダウンロードが遅いと時間がかかりますが、インストール処理自体はそれほど時間はかかりません。

もしも、ミラーの接続状態が悪くて速度が遅い場合は、/etc/pacman.d/mirrorlist を編集して、他のミラーを使うようにしてください。
(上にある URL の行頭に # を挿入して、コメント化するなど)

インストールが終わったら、インストール先のシステム内の設定を行っていきます。
fstab
# fstab - ArchWiki

起動時に自動的にマウントするパーティションなどの情報を、/etc/fstab のファイルに記述します。

※ここでは、インストール先の Arch Linux システム上のファイルを編集します。
そのため、編集するファイルのパスは /mnt/etc/fstab となります。


fstab には、最低でも1つ、Arch Linux OS 用のパーティションを指定しておかないと、Arch Linux の起動ができません。

なお、現在のパーティションやファイルシステムを確認したい場合は、以下のコマンドを使います。

## パーティションとファイルシステムの確認
# lsblk --fs

## PARTUUID の確認
# blkid
genfstab コマンド
ファイルを直接編集して記述することもできますが、genfstab コマンドを使うと、現在のマウント状態から、自動で必要な情報を生成することができます。

genfstab は、Arch Linux インストール用のスクリプトです。
https://github.com/archlinux/arch-install-scripts/blob/master/genfstab.in

# genfstab /mnt >> /mnt/etc/fstab

>>」 は、genfstab で出力された fstab の情報を、指定ファイルの末尾に追記します。

fstab ファイル内には、デフォルトで、コメントとして設定項目のヒントが書かれているので、その後に、出力された情報を追加させます。

オプション
デフォルトでは、/dev/... でパーティションが指定されますが、実行時にオプションを指定すると、UUID または PARTUUID などで、パーティションを指定することができます。

-UUUID で指定
-t <tag>使用する識別子の種類を指定。
tag = LABEL, UUID, PARTLABEL, PARTUUID

物理的にディスクの接続順を変更することがないのであれば、/dev/... でも構いませんが、PC 構成が変わることがあるのであれば、UUID または PARTUUID を使った方が良いでしょう。

UUID は、フォーマットする度に値が変更されます。
PARTUUID は、GPT の場合のみ使えます。フォーマットしても、値が変化しません。
確認
fstab ファイルの内容を、テキストエディタで確認してみます。
Ctrl+X で終了します。

# nano /mnt/etc/fstab

今回の場合、sda1 が UEFI ブート用、sda2 が Arch Linux 用なので、以下のようになります。

/dev/sda2  /  ext4  rw,relatime 0 1

/dev/sda1 /boot vfat rw,relatime,fmask=0022,... 0 2

まずは、Arch Linux OS 用のパーティションが先に定義されます。
次に、EFI システムパーティションが定義されます。
(なぜなら、"/boot" の前に、ルートである "/" のパーティションが必要だからです)

各行の項目は、空白で区切って、それぞれ、「パーティションのデバイス名」「マウント先のディレクトリ名」「ファイルシステム」「マウントオプション」「dump (dump コマンドでバックアップを行うか)」「pass (fsck のチェックをするか)」となっています。

基本的に、genfstab で出力された情報を、そのまま使えば問題ありません。
ファイルシステムの追加
自動マウントさせるファイルシステムを追加したい場合は、その情報を追記してください。

今回の場合、データ用として作ったパーティション sda3 はまだマウントしていないので、genfstab はそれらの情報を出力しません。

手動で追加するなら、以下のようになります。

/dev/sda3  /mnt/data  ext4  rw,relatime  0 2

マウントディレクトリは、/mnt/data としました。
/mnt 以下の名前は何でも良いのですが、今回はデータ用なので、data としました。

なお、/mnt/data ディレクトリが存在しない場合は、自動で作成されるので、あらかじめ手動でディレクトリを作る必要はありません。

ファイルシステムは ext4 で、オプションは Arch Linux OS 用のパーティションと同じです。
dump は基本的に 0 にしておきます。

pass の値
pass の項目は、Arch Linux OS 用では 1 でしたが、データ用では 2 にしています。
これは、fsck コマンドでの、ファイルシステムのエラーなどのチェックを行うかどうかの値です。

0チェックを行わない。スワップパーティションなどで指定する。
1一番最初にチェックを行う。Linux システムのルート (/) で指定する。
21 のファイルシステムをチェックした後に、チェックを行う。
データ用など、Linux ルート以外のパーティションで指定する。

btrfs の場合、pass はすべて 0 にする必要があります。

基本的に、Linux システム用のパーティションのみ 1、それ以外は 2、チェックを行う必要がなければ 0 とします。
次へ
次からは、インストールしたシステム内に入って、直接細かい設定を行っていきます。

>> インストール (4)