Arch Linux インストール (4)

インストールしたシステム内に入る
今までは、メモリ上に起動した Linux システム上でコマンドなどを実行してきましたが、ここからは、インストールした Arch Linux システム内に入って、設定を行っていきます。

以下のコマンドで、Linux のルートを切り替えて、インストール先の Arch Linux へと移ります。

# arch-chroot /mnt

arch-chroot は、Arch Linux インストール用のスクリプトです。
注意点
ここから先、実行するコマンドは、実際にインストールした Arch Linux 上にあるコマンドが使われます。

ルートを切り替えた後は、インストールメディア内にあるコマンドは使えないので、注意してください。

途中で、追加で必要になるパッケージがあった場合は、pacman コマンドでインストールしてください。
-S オプションで、指定パッケージをインストールします。

(パッケージのインストール)
# pacman -S <package...>

(パッケージの検索)
# pacman -Ss <name>

なお、インストール先の Arch Linux から抜けて、元のインストール作業システムの方に戻りたい場合は、exit コマンドを実行します。
その後作業をして、また戻ってくる場合は、再び arch-chroot を実行してください。
タイムゾーン
時刻を、各地域ごとの時間に合わせるために、タイムゾーンを設定します。

日本の場合は、東京に合わせるので、以下のようになります。
成功した場合は、何も表示されません。

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

ln コマンドで、/etc/localtime にシンボリックリンクを作成し、/usr/share/zoneinfo/Asia/Tokyo にリンクさせています。

Linux は、/etc/localtime のファイルを読み込んで、タイムゾーンを設定します。

各地域ごとの設定ファイル (バイナリファイル) は、/usr/share/zoneinfo ディレクトリ以下にあります。
ここから任意のファイルを選びます。

/etc/localtime のシンボリックリンクにアクセスすると、/usr/share/zoneinfo/Asia/Tokyo にアクセスするのと同じことになります。

-sf は、-s-f オプションを同時に指定しています。
-s は、シンボリックリンクを作成します。
-f は、すでに対象のファイルが存在する場合、削除します。
ハードウェアクロック
現在の時間を、ハードウェア (マザーボード内の内部時計) に書き込みます。
※すでに正しく書き込まれているのがわかっている場合は、実行しなくても構いません。

ネットを接続した後に時刻合わせを行いましたが、あれは、インストール作業用の Linux システム上での時刻を設定したに過ぎません。

再起動すると、その時刻は破棄されて、再びマザーボードの内部時計から時刻が読み込まれてしまいます。

再起動しても時刻が正しくなるように、現在の Linux 上での時刻を、マザーボードの内部時計に書き込みます。
書き込みには、hwclock コマンドを使います。

# hwclock --systohc --utc

--systohc で、Linux 上での時刻を、ハードウェアに書き込みます。
--utc で、時刻に UTC (協定世界時) を使います。

Windows の場合、UTC ではなく地域ごとのローカルタイムを使うので、Windows と Linux をデュアルブートする場合は、時刻が狂います。
Windows で UTC を使うためには、手順が必要なので、以下を参照してください。

# 時刻 - ArchWiki
ロケール
# ロケール - ArchWiki

Linux 上で使用する言語を設定します。
日本の場合は ja_JP (日本語) を使いますが、デフォルトとして en_US (英語) も必須となるので、それも指定します。
locale.gen 編集
まずは、/etc/locale.gen ファイルを編集し、使う言語の、先頭の # を削除して、使用する言語を複数選択します。

$ nano /etc/locale.gen

言語名のアルファベット順に並んでいるので、まずは 「#en_US.UTF-8 UTF-8」 の行を探します。
見つけたら、その行の先頭の # を削除します。

次に、「#ja_JP.UTF-8 UTF-8」 を見つけて、同じように # を削除します。

結果的には、行頭が # のコメント行を除いて、以下のようになっていれば OK です。

en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8

日本語では、他に 「ja_JP.EUC-JP EUC-JP」 がありますが、そちらは文字コードに EUC-JP を使います。
今は Linux 上では UTF-8 を使うのが一般的なので、UTF-8 の方を使います。

終わったら、Ctrl+XyEnter で、上書き保存します。
locale-gen
次に、/etc/locale.gen の内容を元に、locale-gen コマンドで、各言語のロケールを生成します。

# locale-gen

Generating locales...
  es_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

各ロケールが生成されたのがわかります。
locale.conf
次に、/etc/locale.conf ファイルを作成して、デフォルトのロケールを指定します。

nano コマンドを使ってもいいのですが、下のコマンドで、ファイルの作成と書き込みを行うことができます。

# echo LANG=en_US.UTF-8 > /etc/locale.conf

echo コマンドで、「LANG=en_US.UTF-8」 を標準出力に出力し、「>」 で、出力された内容を指定ファイル (/etc/locale.conf) に新規作成して書き込みます。

結果的に、/etc/locale.conf の中身が以下のようになっていれば問題ありません。

LANG=en_US.UTF-8

※現段階ではまだ、ロケールを日本語にしないでください。

GUI 環境下での仮想コンソールを除き、純粋なコンソール画面上では、ASCII 文字のみのビットマップフォントを使って文字を表示しているため、日本語は表示できません。

そのため、この段階でデフォルトを日本語にしてしまうと、日本語の部分が文字化けしてしまうため、GUI 環境を構築するまでは、常に英語環境で作業をしていく必要があります。

GUI 環境の構築後は、「LANG=ja_JP.UTF-8」 にして、日本語に設定します。
キーマップ
インストールした Arch Linux 上でのコンソールにおけるキーボード配列は、デフォルトで英語用となっているので、設定ファイルで、キーボード配列を指定します。

# echo KEYMAP=jp106 > /etc/vconsole.conf

/etc/vconsole.conf ファイルに、「KEYMAP=jp106」 の内容を書き込みます。

※ GUI 環境においては、別途キーボード設定が必要になります。
 ここでは、純粋なコンソール画面でのキーボード配列の設定です。
ホスト名
自分のパソコンのホスト名 (ネットワーク上で各マシンを識別するための名前) を決めて、設定します。

基本的に自分のネットワークでしか使わないので、名前は適当で構いません。
今回の場合は、仮に arch とします。

/etc/hostname ファイルに、テキストでホスト名だけを記述してください。

# echo arch > /etc/hostname
ネットワーク設定
現在、インストール作業のシステム上では、ネットワークに接続されていますが、実際にインストールした Arch Linux 上では、ネットワークの設定を行っていないため、このままでは起動時にネットワークに接続されません。

そのため、起動時にネットワーク接続を行うための設定を行います。
有線 LAN の場合
# ネットワーク設定 - ArchWiki

有線 LAN の場合はいくつか方法がありますが、dhcpcd を使うと、設定などをする必要がなく、自動で IP アドレスを取得してくれるので、一番簡単です。
他の方法を使う場合は、上記のページを参考にしてください。

dhcpcd を使う場合、有線 LAN のインターフェイスを確認後、systemd にサービスを登録します。
これで、起動時に dhcpcd が実行されて、接続が行われるようになります。

(Arch Linux では、システムの基本的なサービスは systemd で管理します)

■ 有線 LAN のインターフェイス確認 (enp〜)

# ip link

■ dhcpcd サービスを有効にする (@ 以降は、インターフェイス名を指定)

# systemctl enable dhcpcd@enp0s3
                          ~~~~~~
無線 LAN の場合
-> 無線 LAN 接続

上記のページを参考に、設定してください。

現状では、netctl, dhcpcd, wpa_supplicant を使って接続するのが一番だと思います。

netctl の場合
最短の手順で行うなら、以下のようになります。

■ プロファイルの作成場所へ移動

# cd /etc/netctl

■ サンプルプロファイルをコピー (WPA 用)

# cp exsamples/wireless-wpa wireless

■ 無線 LAN インターフェイス名の確認 (wlp〜)

# ip link

■ プロファイル編集

# nano wireless

- Interface に wlp〜
- ESSID にルータのネットワーク名
- Key に暗号化キー

■ systemd に登録 (start は行わなくていい)

# netctl enable wireless
パスワード設定
root (管理者権限) のパスワードを設定します。

# passwd

New password でパスワードの入力を求められるので、入力して Enter を押します。
次に、Retype new password で、確認のために再入力を求められるので、同じ文字を入力します。
パスワードが2つとも同じなら、設定に成功します。

Linux のコマンドライン上では、基本的にパスワードの入力文字は、一切表示されません。
入力しても何も表示されないので、わかりにくいですが、内部では処理されているので、問題ありません。
ただ、現在の文字数すらもわからないので、入力を間違えたかもしれないという時は、複数回 BackSpace キーで文字を削除してください。
ブートローダー
# ブートローダー

OS を起動するための、ブートローダーの設定を行います。

Linux で使えるブートローダーにはいくつか種類があり、好きなものを使うことができます。
ただし、BIOS と UEFI でそれぞれ処理が異なるので、どちらか一方にしか対応していないものもあります。
GRUB について
# GRUB - ArchWiki

GRUB は、BIOS/UEFI 両方に対応している、多機能なブートローダーです。
Linux では通常、これを使うのが一般的です。

パーティションテーブルのタイプや、BIOS/UEFI によって設定方法が異なるため、以下で GRUB の設定方法を説明します。
エラーなどが出た場合は、上記のページに対策が書かれているので、参考にしてください。
GRUB (UEFI-GPT 64bit の場合)
パッケージのインストール
必要なパッケージをインストールします。

# pacman -S grub efibootmgr

Intel CPU の場合、マイクロコードのパッケージ intel-ucode もインストールしておくと、grub-mkconfig 時に、自動でその処理も行ってくれます。

GRUB のファイルをインストール
ブートするために必要なファイルを、インストールします。

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

成功すれば、エラーがない旨のメッセージが出ます。
/boot/grub 以下に GRUB のファイル、/boot/EFI/arch_grub に UEFI ブートのファイルが作成されます。

--targetx86_64-efi で、UEFI (64bit) 用のファイルを作成します。
--efi-directoryUEFI ブートファイルを置く場所(UEFI ブートパーティションをマウントしたディレクトリ)を指定します。

今回の場合、sda1 が UEFI ブートパーティションで、それを fstab ファイル内で、/boot にマウントするように設定してあるので、/boot となります。
--bootloader-idUEFI が認識するためのブートローダー名を、任意の名前で指定します。

/boot/EFI ディレクトリ内に、指定した名前のディレクトリが作成され、その中に GRUB 用の UEFI ブートファイル grubx64.efi が作成されます。

同じディスクに複数の OS をインストールする場合、各 OS のブートローダーごとに /boot/EFI 内にディレクトリが作成されることになるので、他の OS と重複しないような名前を付けてください。

今回の場合は、Arch Linux 用の GRUB なので、arch_grub としました。

.efi のコピー
UEFI のフォームウェアによっては、/boot/EFI/boot 内に bootx64.efi という名前で、デフォルトの efi ファイルが必要な場合があります。

そのため、一応 GRUB 用の *.efi ファイルをコピーして、作成しておきます。

# mkdir /boot/EFI/boot
# cp /boot/EFI/arch_grub/grubx64.efi /boot/EFI/boot/bootx64.efi
               ~~~~~~~~~

arch_grub の部分は、--bootloader-id で指定した名前に置き換えてください。

grub.cfg の生成
各 OS の起動情報などが記述された設定ファイルを生成します。

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

grub-mkconfig コマンドを使うと、現在の Linux システム(今回の場合、新規インストールした Arch Linux)については、自動で設定を書き込んでくれるので、通常は生成されたファイルをそのまま使えば問題ありません。

ただし、他に起動したい OS がある場合や、起動設定を変えたい場合などは、手動で編集したりする必要があります。
GRUB (BIOS-MBR の場合)
パッケージのインストール
BIOS の場合、os-prober パッケージをインストールしておくと、grub-mkconfig 実行時に、他のパーティションにインストールされている OS を自動で検出して設定してくれます。
複数の OS をインストールしている場合は、これを使うと楽になります。

他に必須となるパッケージはありません。

# pacman -S grub

インストール
BIOS の場合は、ディスクの MBR ブートコード領域にインストールします。

書き込み対象のディスクを指定する必要があるので、以下のコマンドの /dev/sda は自分の環境のデバイス名に置き換えください。

※この時、/dev/sda1 のようにパーティションを指定しないでください。ディスク自体の MBR 領域に対して書き込みを行います。

# grub-install --target=i386-pc /dev/sda
                                     ~~~
# grub-mkconfig -o /boot/grub/grub.cfg

UEFI の場合と同じように、ブート用ファイルのインストールと、設定ファイルの生成を行います。

--targeti386-pc なので、32bit OS 用のような印象を受けますが、64bit の場合でも同じなので、気にしなくて構いません。
再起動
これで、インストールした Arch Linux を、最低限起動させる準備ができました。

この段階でインストールメディアは必要なくなり、以降は、実際にインストールした Arch Linux を起動して、細かい設定を行っていきます。

# exit
# umount -R /mnt
# reboot

exit コマンドでログアウトして、インストールメディアの環境に戻ります。
umount コマンドで、マウントしたパーティションをすべてアンマウントして、Linux から切り離します。
reboot コマンドを実行すると、再起動が行われます。

再起動したら、インストールメディアを取り外します。

問題がなければ、GRUB の画面が出て、OS 選択になるので、Arch Linux を選択して Enter を押すか、数秒待ってください。

Arch Linux が起動すると、コンソール画面になり、ログインが求められます。

起動後、しばらくしてもなかなか次の画面に移らない場合は、ネット接続に時間が掛かっているか、失敗してタイムアウト時間まで待っている可能性があります。
デフォルト状態では 90 秒待てば次の画面に移ります。

この段階では、まだ GUI 環境を何もインストールしていないので、引き続き、コマンドライン上で作業をしていきます。

>> インストール (5)