Arch Linux インストール (3)

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

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

# ping archlinux.jp

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

有線 LAN の場合、通常は自動で接続されていますが、接続に失敗していた場合は、手動で設定する必要があります。
失敗することはあまりないと思いますが、問題があった場合は、上のページで詳細を確認してください。
無線 LAN で接続
詳細は別ページにまとめました。
>> 無線 LAN 接続

インストール作業用の Linux 上では、systemd-networkd + iwd で無線 LAN 接続できる状態になっているので、iwctl コマンドを使って、無線接続のみ手動で行います。

以前は wifi-menu というコマンドがあり、手順に従って簡単に接続できましたが、現在はインストール ISO 内に含まれていません。

## 無線 LAN デバイスの名前を取得
# iwctl station 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 コマンドは、Arch Linux のミラーを取得するためのコマンド (Python スクリプト) です。
インストール ISO には含まれていますが、Arch Linux の基本システムには含まれないので、インストール後に使いたい場合は、reflector パッケージをインストールしてください。

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

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

テキストファイルの編集
テキストファイルを直接編集する場合は、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 で決定します。

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

# https://www.archlinux.jp/mirrors/status/
このページで、日本のサーバーの状態がわかるので、参考にしてください。
パッケージのインストール
インストール先に、Linux のディレクトリ構造を構築し、最低限必要なパッケージをインストールします。

実際のインストール先に、必要なファイルをインストールした後は、起動に必要となる設定を行っていきます。

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

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

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 オプションは、インストール途中に表示される確認事項を有効にします。
このオプションがない場合は、すべてデフォルトの回答となり、すぐにインストールが開始します。

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

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

また、現在のインストールシステム上にある mirrorlist ファイルが、インストール先の mirrorlist にコピーされるので、ミラー情報は引き継がれます。
パッケージについて
baseArch Linux の基本パッケージ。必須です。
https://www.archlinux.jp/packages/core/any/base/
base-devel開発時に使われることが多いパッケージのグループ。
ソフトウェアなどをソースコードからコンパイルすることがある場合は、インストールしておくといいでしょう。
sudo も含まれています。
https://www.archlinux.jp/groups/x86_64/base-devel/
linuxLinux カーネル。カーネルがなければ、Linux は起動できません。
このパッケージは、一般的な選択肢となる Linux カーネルです。
# カーネル - Arch Wiki

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

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

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

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

ここから先は、/mnt 以下のファイルを操作して、インストール先のシステム内の設定を行っていきます。
fstab
# fstab - ArchWiki

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

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


ここで、最低限 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 ファイルには、デフォルトで、コメントとして設定項目のヒントが書かれているので、その後に、出力された情報を追加させます。

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

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

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

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

# nano /mnt/etc/fstab

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

...
# /dev/sda2 LABEL=arch
UUID=35ec0740-2208-485a-9d06-e15289eb25ee / ext4 rw,relatime 0 1

# /dev/sda1 (以下は1行です)
UUID=120B-1CA0  /boot  vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 2

まずは、Arch Linux OS 用のパーティションが先に定義されます。
次に、EFI システムパーティションが定義されます。

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

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

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

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

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

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

なお、/mnt/data が存在しない場合は、自動で作成されるので、mkdir コマンドでディレクトリを作る必要はありません。

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

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

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

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

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

>> インストール (4)