インストールしたシステム内に入る
今までは、メモリ上に起動した Linux システム上でコマンドなどを実行してきましたが、ここからは、インストールした Arch Linux システム内に入って、設定を行っていきます。
arch-chroot
以下のコマンドで、Linux のルートを切り替えて、インストール先の Arch Linux へと移ります。
arch-chroot は、Arch Linux インストール用のスクリプトです。
指定したパスがルート "/" になるようにマウントします。
これ以降は、例えば、"/etc/fstab" とパスを指定したら、実際には "/mnt/etc/fstab" のファイルを扱うのと同じになります。
もし、この状態を抜けて、元のインストール作業用の Linux に戻りたい場合は、exit コマンドを実行します。
その後作業をして、再びルートを変更したい場合は、再度 arch-chroot を実行してください。
# arch-chroot /mnt
arch-chroot は、Arch Linux インストール用のスクリプトです。
指定したパスがルート "/" になるようにマウントします。
これ以降は、例えば、"/etc/fstab" とパスを指定したら、実際には "/mnt/etc/fstab" のファイルを扱うのと同じになります。
もし、この状態を抜けて、元のインストール作業用の Linux に戻りたい場合は、exit コマンドを実行します。
その後作業をして、再びルートを変更したい場合は、再度 arch-chroot を実行してください。
注意点
ここから先、実行するコマンドは、実際にインストールした Arch Linux 上にあるコマンドが使われます。
そのため、ルートを切り替えた後は、インストールメディア内にあるコマンドは使えないので、注意してください。
ただし、ネットの接続は継続されているので、パッケージのインストールは行えます。
そのため、ルートを切り替えた後は、インストールメディア内にあるコマンドは使えないので、注意してください。
ただし、ネットの接続は継続されているので、パッケージのインストールは行えます。
パッケージのインストール
途中で、追加で必要になるパッケージがあった場合は、pacman コマンドでインストールしてください。
-S オプションで、指定パッケージをインストールします。
-S オプションで、指定パッケージをインストールします。
## パッケージのインストール # pacman -S <package...> ## パッケージの検索 # pacman -Ss <name>
テキストの編集
テキストファイルの編集を行う必要がある場合、nano コマンドなど、インストール先の Arch Linux にインストールされているテキストエディタを使ってください。
pacstrap 時に、テキストエディタをインストールしていなかった場合は、# pacman -S nano でインストールしてください。
pacstrap 時に、テキストエディタをインストールしていなかった場合は、# pacman -S nano でインストールしてください。
タイムゾーン
時刻を、各地域ごとの時間に合わせるために、タイムゾーンを設定します。
日本の場合は、東京に合わせるので、以下のようになります。
成功した場合は、何も表示されません。
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 は、すでに対象のファイルが存在する場合、削除します。
日本の場合は、東京に合わせるので、以下のようになります。
成功した場合は、何も表示されません。
# 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 は、すでに対象のファイルが存在する場合、削除します。
ハードウェアクロック
現在の時間を、ハードウェア (マザーボード内の内部時計) に書き込みます。
※すでに正しく書き込まれているのがわかっている場合は、実行しなくても構いません。
ネットを接続した後に、timedatectl で時刻合わせを行いましたが、あれは、インストール作業用の Linux システム上における、OS 上の時刻を設定したに過ぎません。
再起動すると、その時刻は破棄されて、再びマザーボードの内部時計から時刻が読み込まれてしまいます。
再起動しても時刻が正しくなるように、現在の Linux 上での時刻を、マザーボードの内部時計に書き込みます。
書き込みには、hwclock コマンドを使います。
-w, --systohc で、Linux 上での時刻を、ハードウェアに書き込みます。
-u, --utc で、時刻に UTC (協定世界時) を使います。
# 時刻 - ArchWiki
※すでに正しく書き込まれているのがわかっている場合は、実行しなくても構いません。
ネットを接続した後に、timedatectl で時刻合わせを行いましたが、あれは、インストール作業用の Linux システム上における、OS 上の時刻を設定したに過ぎません。
再起動すると、その時刻は破棄されて、再びマザーボードの内部時計から時刻が読み込まれてしまいます。
再起動しても時刻が正しくなるように、現在の Linux 上での時刻を、マザーボードの内部時計に書き込みます。
書き込みには、hwclock コマンドを使います。
# hwclock --systohc --utc
-w, --systohc で、Linux 上での時刻を、ハードウェアに書き込みます。
-u, --utc で、時刻に UTC (協定世界時) を使います。
Windows の場合、UTC ではなく地域ごとのローカルタイムを使うので、Windows と Linux をデュアルブートする場合は、時刻が狂います。
Windows で UTC を使うためには、手順が必要なので、以下を参照してください。
Windows で UTC を使うためには、手順が必要なので、以下を参照してください。
# 時刻 - ArchWiki
ロケール
# ロケール - ArchWiki
Linux 上で使用する言語を設定します。
日本の場合は ja_JP (日本語) を使いますが、デフォルトとして en_US (英語) も必須となるので、それも指定します。
Linux 上で使用する言語を設定します。
日本の場合は ja_JP (日本語) を使いますが、デフォルトとして en_US (英語) も必須となるので、それも指定します。
locale.gen 編集
まずは、/etc/locale.gen ファイルを編集し、使う言語の、先頭の # を削除して、使用する言語を複数選択します。
言語名のアルファベット順に並んでいるので、まずは 「#en_US.UTF-8 UTF-8」 の行を探します。
見つけたら、その行の先頭の # を削除します。
次に、「#ja_JP.UTF-8 UTF-8」 を見つけて、同じように # を削除します。
結果的には、行頭が # のコメント行を除いて、以下のようになっていれば OK です。
日本語では、他に 「ja_JP.EUC-JP EUC-JP」 がありますが、そちらは文字コードに EUC-JP を使います。
今は UTF-8 を使うのが一般的なので、そちらを使います。
終わったら、Ctrl+X → y → Enter で、上書き保存します。
$ 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 を使います。
今は UTF-8 を使うのが一般的なので、そちらを使います。
終わったら、Ctrl+X → y → Enter で、上書き保存します。
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) に新規作成して書き込みます。
結果的に、/etc/locale.conf の中身が以下のようになっていれば問題ありません。
※現段階ではまだ、ロケールを日本語にしないでください。
コンソールで使われるビットマップフォントは、以下のディレクトリにあります。
/usr/share/kbd/consolefonts
ここには日本語用のフォントがないので、通常のコンソール画面では日本語は表示できません。
そのため、この段階でロケールを日本語にしてしまうと、出力された日本語の文字列が文字化けしてしまい、読めないので、コンソール環境上では、常に英語で作業をしていく必要があります。
実際にロケールを日本語にするのは、GUI 環境を構築した後です。
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
※現段階ではまだ、ロケールを日本語にしないでください。
日本語について
純粋なコンソール画面上では、ビットマップフォントを使って文字を表示しています。コンソールで使われるビットマップフォントは、以下のディレクトリにあります。
/usr/share/kbd/consolefonts
ここには日本語用のフォントがないので、通常のコンソール画面では日本語は表示できません。
そのため、この段階でロケールを日本語にしてしまうと、出力された日本語の文字列が文字化けしてしまい、読めないので、コンソール環境上では、常に英語で作業をしていく必要があります。
実際にロケールを日本語にするのは、GUI 環境を構築した後です。
キーマップ
インストール先の Arch Linux 上での、コンソール環境におけるキーボード配列は、デフォルトで英語用のままになっているので、設定ファイルで、キーボード配列を指定します。
/etc/vconsole.conf ファイルに、「KEYMAP=jp106」 の内容を書き込みます。
これで、起動時に毎回 jp106 の配列が使われることになります。
※ GUI 環境においては、別途キーボード設定が必要になります。ここでは、純粋なコンソール画面におけるキーボード配列の設定です。
# echo KEYMAP=jp106 > /etc/vconsole.conf
/etc/vconsole.conf ファイルに、「KEYMAP=jp106」 の内容を書き込みます。
これで、起動時に毎回 jp106 の配列が使われることになります。
※ GUI 環境においては、別途キーボード設定が必要になります。ここでは、純粋なコンソール画面におけるキーボード配列の設定です。
ホスト名
自分のパソコンのホスト名 (ネットワーク上で各マシンを識別するための名前) を決めて、設定します。
基本的に自分のネットワークでしか使わないので、名前は適当で構いません。
今回の場合は、仮に arch とします。
/etc/hostname ファイルに、テキストでホスト名だけを記述してください。
基本的に自分のネットワークでしか使わないので、名前は適当で構いません。
今回の場合は、仮に arch とします。
/etc/hostname ファイルに、テキストでホスト名だけを記述してください。
# echo arch > /etc/hostname
ネットワーク設定
現在のインストール作業の Linux 上においては、ネットワークに接続された状態になっていますが、インストール先の Arch Linux 上では、まだネットワークの設定を行っていないので、別途設定する必要があります。
ネットワークの接続には、複数の方法があるため、自分で好きなものを選ぶことができます。
それぞれの方法で、必要なパッケージや設定が異なるので、以下のページを参考にしてください。
>> ネットワーク設定
現在では、systemd-networkd, systemd-resolved, (無線 LAN) iwd を使うのが一般的だと思いますが、netctl を使うと、あまり複雑なことを考えずに設定できます。
ここでは、主に、systemd-networkd を使う前提で説明していきます。
ネットワークの接続には、複数の方法があるため、自分で好きなものを選ぶことができます。
それぞれの方法で、必要なパッケージや設定が異なるので、以下のページを参考にしてください。
>> ネットワーク設定
現在では、systemd-networkd, systemd-resolved, (無線 LAN) iwd を使うのが一般的だと思いますが、netctl を使うと、あまり複雑なことを考えずに設定できます。
ここでは、主に、systemd-networkd を使う前提で説明していきます。
設定について
現在のインストール作業用の Linux 上では、すでにネットワークに接続されている状態なので、ここでは、次回起動時にネットワークに接続できるようにするための設定を行います。
基本的には、# systemctl enable <name> で、各サービスを有効にして、必要な設定ファイルを用意したりします。
ただし、iwd での接続や、systemd-resolved のリンクファイル生成など、実際にインストールした Arch Linux を起動してから設定したほうが良い場合があります。
そのような処理が必要な場合、ここで設定しなくても、実際に Arch Linux を起動してから接続することもできますが、接続で必要になるパッケージだけは、必ずここでインストールしておいてください。
特に、無線 LAN で接続する場合は、iwd か wpa_supplicant が必ず必要になります。
インストール先の Arch Linux に、ネットの接続に必要なパッケージがなければ、もちろんネット接続もできませんし、パッケージのインストールもできないので、再度インストール環境に戻ってくる必要があります。
基本的には、# systemctl enable <name> で、各サービスを有効にして、必要な設定ファイルを用意したりします。
ただし、iwd での接続や、systemd-resolved のリンクファイル生成など、実際にインストールした Arch Linux を起動してから設定したほうが良い場合があります。
そのような処理が必要な場合、ここで設定しなくても、実際に Arch Linux を起動してから接続することもできますが、接続で必要になるパッケージだけは、必ずここでインストールしておいてください。
特に、無線 LAN で接続する場合は、iwd か wpa_supplicant が必ず必要になります。
インストール先の Arch Linux に、ネットの接続に必要なパッケージがなければ、もちろんネット接続もできませんし、パッケージのインストールもできないので、再度インストール環境に戻ってくる必要があります。
systemd-networkd
systemd に含まれる、systemd-networkd のネットワーク接続サービスを使うと、有線/無線 LAN ともに管理でき、設定ファイルで細かい設定もできます。
なお、DNS を管理するために、基本的に systemd-resolved も必要になります。
この2つのサービスを、起動時に有効になるようにします。
/etc/systemd/network/ に *.network ファイルを作成してください。
ファイル名は任意の名前で構いません。複数ファイルがある場合は、ファイル名順に読み込まれます。
Name= に、# ip link で確認した、有線 LAN のインターフェイス名を指定してください。
有線 LAN のインターフェイス名は、enp から始まります。
DHCP=yes で、IPv4/IPv6 ともに、DHCP を使って、IP アドレスを取得します。
「IPv6PrivacyExtensions=true」は、IPv6 の IP アドレスを、プライバシー拡張の機能を使って取得します。
デフォルトのままだと、IPv6 の IP アドレスには、無線 LAN インターフェイスの MAC アドレスが含まれる形になり、セキュリティ的に懸念があるので、拡張機能を有効にして、別の IP アドレスを生成します。
「IgnoreCarrierLoss=3s」は、接続が失われた時、指定時間の間に回復すれば、構成を維持します。
※無線 LAN で接続する場合、別途 iwd か wpa_supplicant を使って、無線接続を行う必要があります。
ここでは、iwd を使うことにするので、iwd パッケージをインストール後、起動時に有効になるようにします。
実際に起動時に接続させるためには、さらに iwctl で接続を行って、/var/lib/iwd/ に設定ファイルを生成させる必要がありますが、インストール作業用の Linux 上で無線 LAN 接続している場合、すでに systemd-networkd + iwd で接続されている状態なので、iwctl での接続は、インストール先の Arch Linux を起動した後で行う方が良いでしょう。
なお、DNS を管理するために、基本的に systemd-resolved も必要になります。
この2つのサービスを、起動時に有効になるようにします。
# systemctl enable systemd-networkd systemd-resolved
ネットワーク設定ファイル
サービスを有効にしただけでは接続されないので、各ネットワークごとに、テキストファイルを生成し、設定する必要があります。/etc/systemd/network/ に *.network ファイルを作成してください。
ファイル名は任意の名前で構いません。複数ファイルがある場合は、ファイル名順に読み込まれます。
有線 LAN の場合
[Match] Name=<インターフェイス名> [Network] DHCP=yes
Name= に、# ip link で確認した、有線 LAN のインターフェイス名を指定してください。
有線 LAN のインターフェイス名は、enp から始まります。
DHCP=yes で、IPv4/IPv6 ともに、DHCP を使って、IP アドレスを取得します。
無線 LAN の場合
[Match] Name=wlan0 [Network] DHCP=yes IPv6PrivacyExtensions=true IgnoreCarrierLoss=3s
「IPv6PrivacyExtensions=true」は、IPv6 の IP アドレスを、プライバシー拡張の機能を使って取得します。
デフォルトのままだと、IPv6 の IP アドレスには、無線 LAN インターフェイスの MAC アドレスが含まれる形になり、セキュリティ的に懸念があるので、拡張機能を有効にして、別の IP アドレスを生成します。
「IgnoreCarrierLoss=3s」は、接続が失われた時、指定時間の間に回復すれば、構成を維持します。
※無線 LAN で接続する場合、別途 iwd か wpa_supplicant を使って、無線接続を行う必要があります。
ここでは、iwd を使うことにするので、iwd パッケージをインストール後、起動時に有効になるようにします。
# pacman -S iwd # systemctl enable iwd
実際に起動時に接続させるためには、さらに iwctl で接続を行って、/var/lib/iwd/ に設定ファイルを生成させる必要がありますが、インストール作業用の Linux 上で無線 LAN 接続している場合、すでに systemd-networkd + iwd で接続されている状態なので、iwctl での接続は、インストール先の Arch Linux を起動した後で行う方が良いでしょう。
systemd-resolved について
systemd-resolved は、DNS を管理するサービスです。
DNS サーバは、ドメイン名から IP アドレスを取得するためのもので、ネット接続においては重要な役割を持ちます。
これが正しく設定されていないと、WEB ページなどが表示できません。
DNS サーバの IP アドレスは、/etc/resolv.conf に記述する必要がありますが、systemd-resolved を使う場合、このファイルは自動で生成されません。
代わりに、/run/systemd/resolve/ にあるファイルをリンクする必要があります。
※ただし、Arch Linux インストール中 (arch-chroot 後) にこれを実行した場合、実際には、インストール先の /etc/resolv.conf にリンクを作成することはできないので、この段階では実行しないでください。
というのも、arch-chroot のスクリプト内容 を見ればわかりますが、この中で、インストール作業 Linux 上における /etc/resolv.conf のリンク先が、/mnt/etc/resolv.conf としてバインドマウント(特定のファイルを別のパスにマウント)されるような形になっています。
つまり、arch-chroot 後に /etc/resolv.conf のパスを使った場合、実質的なパスは /mnt/etc/resolv.conf となりますが、それがバインドマウントされているので、結果として、インストール作業 Linux のメモリ上にある /etc/resolv.conf のリンク先となります。
インストール作業上の Linux で、DNS サーバの設定を継続させるために、インストール作業上で使われている /etc/resolv.conf が必要になるので、このような形になっています。
リンクを正しく作成したい場合、一度 arch-chroot を抜けてから作成することもできますが、インストール先の Arch Linux を起動した後で作成すれば問題ないので、後で実行します。
DNS サーバは、ドメイン名から IP アドレスを取得するためのもので、ネット接続においては重要な役割を持ちます。
これが正しく設定されていないと、WEB ページなどが表示できません。
DNS サーバの IP アドレスは、/etc/resolv.conf に記述する必要がありますが、systemd-resolved を使う場合、このファイルは自動で生成されません。
代わりに、/run/systemd/resolve/ にあるファイルをリンクする必要があります。
# ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
※ただし、Arch Linux インストール中 (arch-chroot 後) にこれを実行した場合、実際には、インストール先の /etc/resolv.conf にリンクを作成することはできないので、この段階では実行しないでください。
というのも、arch-chroot のスクリプト内容 を見ればわかりますが、この中で、インストール作業 Linux 上における /etc/resolv.conf のリンク先が、/mnt/etc/resolv.conf としてバインドマウント(特定のファイルを別のパスにマウント)されるような形になっています。
つまり、arch-chroot 後に /etc/resolv.conf のパスを使った場合、実質的なパスは /mnt/etc/resolv.conf となりますが、それがバインドマウントされているので、結果として、インストール作業 Linux のメモリ上にある /etc/resolv.conf のリンク先となります。
インストール作業上の Linux で、DNS サーバの設定を継続させるために、インストール作業上で使われている /etc/resolv.conf が必要になるので、このような形になっています。
リンクを正しく作成したい場合、一度 arch-chroot を抜けてから作成することもできますが、インストール先の Arch Linux を起動した後で作成すれば問題ないので、後で実行します。
パスワード設定
root (管理者権限) のパスワードを設定します。
New password でパスワードの入力を求められるので、入力して Enter を押します。
次に、Retype new password で、確認のために再入力を求められるので、同じ文字を入力します。
パスワードが2つとも同じなら、設定に成功します。
# passwd
New password でパスワードの入力を求められるので、入力して Enter を押します。
次に、Retype new password で、確認のために再入力を求められるので、同じ文字を入力します。
パスワードが2つとも同じなら、設定に成功します。
Linux のコマンドライン上では、基本的にパスワードの入力文字は、一切表示されません。
入力しても何も表示されませんが、内部ではちゃんと処理されているので、問題ありません。
入力を間違えたかもしれないという時は、複数回 BackSpace キーで文字を削除するか、Ctrl+U でカーソルより前の文字を削除できます。
入力しても何も表示されませんが、内部ではちゃんと処理されているので、問題ありません。
入力を間違えたかもしれないという時は、複数回 BackSpace キーで文字を削除するか、Ctrl+U でカーソルより前の文字を削除できます。
マイクロコード
先にマイクロコードの説明をしておきます。
# マイクロコード - ArchWiki
「マイクロコード」は、CPU のファームウェアです。
脆弱性の対応など、CPU 動作に関する修正があった時に更新されます。
Arch Linux には、Intel/AMD CPU 用のパッケージがあるので、使用している CPU に合わせて、マイクロコードは常に更新しておいた方が良いでしょう。
パッケージをインストールすると、/boot にイメージファイルがインストールされます。
2024/03/04 現在 (mkinitcpio v38)、これからのパッケージがインストールされていれば、initramfs の生成時 (カーネルなどが更新された場合、自動で生成される) に、デフォルトでこのマイクロコードが埋め込まれて、起動時に実行されるので、とりあえず、上記のパッケージだけインストールしておけば問題ありません。
マイクロコードが新しくインストールされたり、アップデートされた場合は、自動で initramfs の生成が行われます。
以前は、ブートローダーにて、マイクロコード用の設定を行う必要がありましたが、現在は不要です。
# マイクロコード - ArchWiki
「マイクロコード」は、CPU のファームウェアです。
脆弱性の対応など、CPU 動作に関する修正があった時に更新されます。
Arch Linux には、Intel/AMD CPU 用のパッケージがあるので、使用している CPU に合わせて、マイクロコードは常に更新しておいた方が良いでしょう。
メーカー | パッケージ名 | ファイル名 |
Intel | intel-ucode | /boot/intel-ucode.img |
---|---|---|
AMD | amd-ucode | /boot/amd-ucode.img |
パッケージをインストールすると、/boot にイメージファイルがインストールされます。
2024/03/04 現在 (mkinitcpio v38)、これからのパッケージがインストールされていれば、initramfs の生成時 (カーネルなどが更新された場合、自動で生成される) に、デフォルトでこのマイクロコードが埋め込まれて、起動時に実行されるので、とりあえず、上記のパッケージだけインストールしておけば問題ありません。
マイクロコードが新しくインストールされたり、アップデートされた場合は、自動で initramfs の生成が行われます。
以前は、ブートローダーにて、マイクロコード用の設定を行う必要がありましたが、現在は不要です。
ブートローダー
# ブートローダー
OS を起動するための、ブートローダーの設定を行います。
Linux で使えるブートローダーにはいくつか種類があり、好きなものを使うことができますが、「BIOS/UEFI」「MBR/GPT」「ファイルシステム」など、ブートローダーによって対応しているものが異なるので、自分の環境に合わせて選んでください。
ここでは GRUB を紹介していますが、UEFI でシンプルなブートローダを使いたいなら、systemd-boot でも良いでしょう。
他のブートローダについては、ブートローダ で解説しています。
成功した場合、エラーがない旨のメッセージが出ます。
/boot/grub 以下に GRUB のファイル、/boot/EFI/arch_grub に EFI ブートファイルが作成されます。
そのため、一応 GRUB 用の *.efi ファイルをコピーして、作成しておきます。
arch_grub の部分は、--bootloader-id で指定した名前に置き換えてください。
日本語にするためには、現在の Linux の言語設定を日本語にする必要があるので、grub.cfg を生成する前に、LANG 環境変数を設定して、日本語にしておくと良いです。
英語に戻す場合は、en_US.UTF-8 に設定してください。
grub-mkconfig コマンドを使うと、現在の Linux システム(今回の場合、新規インストールした Arch Linux)については、自動で設定を書き込んでくれるので、通常はそのファイルをそのまま使えば問題ありません。
ただし、他に起動したい OS がある場合や、起動設定を変えたい場合などは、手動で編集する必要があります。
複数の OS をインストールしている場合は、これを使うと便利です。
書き込み対象のディスクを指定する必要があるので、以下のコマンドの /dev/sda は自分の環境のデバイス名に置き換えください。
※この時、/dev/sda1 のように、パーティションを指定しないでください。ディスク自体の MBR 領域に対して書き込みを行います。
UEFI の場合と同じように、ブート用ファイルのインストールと、設定ファイルの生成を行います。
--target が i386-pc なので、32bit OS 用のような印象を受けますが、64bit の場合でも同じなので、気にしなくて構いません。
OS を起動するための、ブートローダーの設定を行います。
Linux で使えるブートローダーにはいくつか種類があり、好きなものを使うことができますが、「BIOS/UEFI」「MBR/GPT」「ファイルシステム」など、ブートローダーによって対応しているものが異なるので、自分の環境に合わせて選んでください。
ここでは GRUB を紹介していますが、UEFI でシンプルなブートローダを使いたいなら、systemd-boot でも良いでしょう。
他のブートローダについては、ブートローダ で解説しています。
GRUB について
# GRUB - ArchWiki
GRUB は、BIOS/UEFI 両方に対応している、一番多機能なブートローダーです。
BIOS/UEFI や MBR/GPT によって設定方法が異なるため、それぞれで GRUB の設定方法を解説しています。
エラーなどが出た場合は、上記のページに対策が書かれているので、参考にしてください。
GRUB は、BIOS/UEFI 両方に対応している、一番多機能なブートローダーです。
BIOS/UEFI や MBR/GPT によって設定方法が異なるため、それぞれで GRUB の設定方法を解説しています。
エラーなどが出た場合は、上記のページに対策が書かれているので、参考にしてください。
GRUB (UEFI-GPT 64bit の場合)
## インストール # pacman -S grub efibootmgr
GRUB のファイルをインストール
ブートするために必要なファイルを、インストールします。# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub
成功した場合、エラーがない旨のメッセージが出ます。
/boot/grub 以下に GRUB のファイル、/boot/EFI/arch_grub に EFI ブートファイルが作成されます。
--target | x86_64-efi で、UEFI (64bit) 用のファイルを作成します。 |
---|---|
--efi-directory | EFI システムパーティションをマウントしたディレクトリを指定します。 ファイルをインストールする場所になります。 今回の場合、EFI システムパーティションは /dev/sda1 で、fstab ファイルによって、/dev/sda1 を /boot にマウントするように設定してあるので、/boot となります。 |
--bootloader-id | 作成するブートローダー名を、任意の名前で指定します。 /boot/EFI ディレクトリ内に、指定した名前のディレクトリが作成され、その中に、GRUB 用の EFI ブートファイル 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 には、日本語のビットマップフォントが含まれているので、メニュー画面で日本語を表示することができます。日本語にするためには、現在の Linux の言語設定を日本語にする必要があるので、grub.cfg を生成する前に、LANG 環境変数を設定して、日本語にしておくと良いです。
英語に戻す場合は、en_US.UTF-8 に設定してください。
# export LANG=ja_JP.UTF-8
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 領域に対して書き込みを行います。
# grub-install --target=i386-pc /dev/sda ~~~ # grub-mkconfig -o /boot/grub/grub.cfg
UEFI の場合と同じように、ブート用ファイルのインストールと、設定ファイルの生成を行います。
--target が i386-pc なので、32bit OS 用のような印象を受けますが、64bit の場合でも同じなので、気にしなくて構いません。
再起動
これで、インストール先の Arch Linux を起動させる準備ができました。
この段階で、インストールメディアは必要なくなります。
以降は、実際にインストールした Arch Linux を起動して、細かい設定を行っていきます。
exit コマンドでログアウトして、インストールメディアの環境に戻ります。
umount コマンドで、マウントしたパーティションをすべてアンマウントして、Linux から切り離します。
reboot コマンドを実行すると、再起動が行われます。
再起動したら、インストールメディアを取り外します。
起動に問題がなければ、ブートローダのメニューが出て、OS 選択になるので、Arch Linux を選択して Enter を押してください。
Arch Linux が起動すると、コンソール画面になり、ログインが求められます。
この段階では、まだ GUI 環境を何もインストールしていないので、引き続き、コマンドライン上で作業をしていきます。
>> インストール (5)
この段階で、インストールメディアは必要なくなります。
以降は、実際にインストールした Arch Linux を起動して、細かい設定を行っていきます。
# exit # umount -R /mnt # reboot
exit コマンドでログアウトして、インストールメディアの環境に戻ります。
umount コマンドで、マウントしたパーティションをすべてアンマウントして、Linux から切り離します。
reboot コマンドを実行すると、再起動が行われます。
再起動したら、インストールメディアを取り外します。
起動に問題がなければ、ブートローダのメニューが出て、OS 選択になるので、Arch Linux を選択して Enter を押してください。
Arch Linux が起動すると、コンソール画面になり、ログインが求められます。
起動後、しばらくしてもなかなか次の画面に移らない場合は、ネット接続に時間が掛かっているか、接続に失敗して、タイムアウト時間まで待っている可能性があります。
デフォルトでは、90 秒待てば次の画面に移ります。
デフォルトでは、90 秒待てば次の画面に移ります。
この段階では、まだ GUI 環境を何もインストールしていないので、引き続き、コマンドライン上で作業をしていきます。
>> インストール (5)