Arch Linux インストール (4)

インストールしたシステム内に入る
ここからは、インストールした Arch Linux システム内に入って、設定を行っていきます。

以下のコマンドでルートを切り替えて、インストールメディアのシステムから、ストレージにインストールした Arch Linux へと移ります。

# arch-chroot /mnt

arch-chroot は、Arch Linux インストール用のスクリプトです。
実行後、カーソルの左側が、「root@archiso ~ #」 から 「[root@archiso /]#」 に変わります。
注意点
なお、今まではインストールメディアに存在するコマンドを使って操作してきましたが、ここからは、インストールした Arch Linux 内にあるコマンド (base, base-devel のパッケージ) を使って操作していきます。

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

# pacman -S <packages...>
タイムゾーン
時刻を、地域ごとの時間に合わせるために、タイムゾーンを設定します。

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

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

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

Linux は、/etc/localtime のファイルを読み込んでタイムゾーンを設定するので、/etc/localtime に自分の地域の設定ファイルを作成する必要があります。
各地域ごとの設定ファイル (バイナリファイル) は、/usr/share/zoneinfo ディレクトリ以下にあります。
ここからファイルを選んで、/etc/localtime をそのシンボリックリンクとすることで、任意の設定ファイルを読み込ませることができます。

-sf は、-s-f オプションを同時に指定しています。
-s は、シンボリックリンクを作成します。
-f は、すでに対象のファイルが存在する場合、削除します。
シンボリックリンクについて
Linux において、「シンボリックリンク」 とは、ショートカットファイルみたいなものです。

シンボリックリンクは ln コマンド (link の略) で作成し、リンク先のパスと、作成するシンボリックリンクのパスを指定します。

シンボリックリンクは、ほぼリンク先のファイルと同じように扱うことができ、シンボリックリンクのファイルを開くと、そのリンク先のファイルを開くことになります。

今回の場合、/etc/localtime はシンボリックリンクとして作成されているので、/etc/localtime のファイル内容を読み込むと、リンク先の /usr/share/zoneinfo/Asia/Tokyo のファイル内容が読み込まれます。

Linux 上では、複数のファイルの中から特定のファイルを選択し、別名で使いたい時によく使われます。
ハードウェアクロック
現在の時間を、ハードウェア (マザーボード内の内部時計) に書き込みます。

ネット接続後に時刻合わせを行いましたが、あれは、インストールシステムの Linux 上での時刻を合わせたに過ぎません。
再起動すると、その時刻は破棄されて、マザーボードの内部時計から時刻が読み込まれるので、ネットで合わせる以前の時刻に戻ってしまいます。

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

# hwclock --systohc --utc

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

※ Windows の場合、UTC ではなく地域ごとのローカルタイムを使うので、Windows とデュアルブートする場合は、時刻が狂います。
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 上でのコンソール (GUI 構築前の状態や、Alt+Ctrl+[N] でのコンソール切替時) におけるキーボード配列はデフォルトで英語用となっているので、設定ファイルでキーボード配列を指定します。

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

/etc/vconsole.conf ファイルに、「KEYMAP=jp106」 の内容を書き込みます。
ホスト名
自分のパソコンのホスト名 (ネットワーク上で各マシンを識別するための名前) を決めて、設定します。
基本的に自分のネットワークでしか使わないので、名前は適当で構いません。
今回の場合は、Arch Linux なので、仮に arch とします。

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

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

そのため、起動時にネットワーク接続を行うための設定を行います。

実際に Arch Linux を起動した後に設定することも出来ますが、無線 LAN において wpa_supplicant パッケージをインストールしていなかった場合、インストールした Arch Linux 上ではネットに接続することができないので、再度インストールメディアを起動して、パッケージをインストールすることになります。
有線 LAN の場合
>> ネットワーク設定 - ArchWiki

有線 LAN の場合は、いくつか接続管理を行う方法がありますが、dhcpcd を使うのが一番簡単です。
他の方法を使う場合は、上記のページを参考にしてください。

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

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

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

# ip link

■ systemd に登録 (@ 以降はインターフェイス名を指定)

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

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

※ WPA/WPA2 の暗号化を使う場合、別途 wpa_supplicant パッケージが必要なので、インストールしていない場合は、インストールしておいてください。
base パッケージグループ内に含まれていないので、手動でインストールしておかないと、無線 LAN で接続できません。


# pacman -S wpa_supplicant

netctl 設定
インストールシステム上では、wifi-menu を使って接続しましたが、永続的な設定を行うなら、netctl 用のプロファイルを作成し、systemd に登録するのがおすすめです。

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

# cd /etc/netctl

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

# cp exsamples/wireless-wpa wireless

■ プロファイル編集

# nano wireless

(Interface, ESSID, Key の項目を書き換えて、保存します)

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

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

# passwd

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

※ Linux コマンドライン上では、基本的にパスワードの入力文字は一切表示されません。
入力しても何も表示されないので不安になりますが、内部ではちゃんと受け付けているので、問題ありません。
ただ、何文字目かもわからないので、文字を間違えたかもという場合は、BackSpace キーで削除してください。
ブートローダー
>> ブートローダー

ブートローダーの設定を行います。

ブートローダーは、BIOS/UEFI によって起動される最初のプログラムです。
ブートローダーによって、各 OS が起動されます。
これがないと OS が起動できないので、重要な部分となります。

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

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

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

# pacman -S grub efibootmgr

GRUB のファイルをインストール
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/bootbootx64.efi という名前でデフォルトのファイルが必要な場合があります。
これはデフォルトで生成されていません。
そのため、一応 GRUB 用の *.efi ファイルを boot/bootx64.efi にコピーして、作成しておきます。

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

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

設定ファイルの生成
起動する OS など、GRUB の画面で表示する項目を記述した設定ファイルを生成します。
GRUB の設定ファイル名は、/boot/grub/grub.cfg となります。

# 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 領域に対して書き込みを行います。

--targeti386-pc なので、32bit OS 用のような印象を受けますが、64bit の場合でも同じなので、気にしなくて構いません。

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

UEFI の場合と同じように、GRUB ファイルのインストールと、設定ファイルの生成を行います。
再起動
これで、インストールした Arch Linux を最低限起動させる準備ができました。

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

# exit
# umount -R /mnt
# reboot

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

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

問題がなければ、GRUB の画面が出て OS 選択になるので、Arch Linux を選択して Enter を押してください。
数秒何もせずに待つと、一番上の項目が自動で選択されます。

Arch Linux が起動すると、コンソール画面になり、ログインが求められます。
まだ GUI 環境を何もインストールしていないので、引き続き、コマンドライン上で処理をしていきます。

>> インストール (5)