💻

Arch Linuxのインストール

2021/11/03に公開
1

なにかと難しいと言われるArch Linuxのインストール手順を、備忘録も兼ねて書いていきます。
ただ、Arch Linuxはカスタマイズ性に優れている反面、インストールする環境によって必要な手順が変わりますので、ここで解説する手順は一つの例として参考にしていただけたら幸いです。

環境と方針

今回、私は以下の環境にArch Linuxをインストールしました。

  • 機種: Lenovo ideapad 120S
  • CPU: Intel Celeron N3350
  • グラフィック: Intel HD Graphics 500
  • ストレージ: SATA接続 SSD 128GB

起動モードはUEFI、パーティション方式はGPTでインストールします。
また、HDD(SSD)の中身はすべて消去し、Arch Linux専用にする方針で解説していきます。

インストール前の準備

インストールメディアの作成

Windowsで作成することを前提としています。

  1. まずここからisoファイルをダウンロードします。
    日本のミラーからarchlinux-2021.10.01-x86_64.isoのように日付入りのisoファイルをダウンロードしてください。
  2. Rufusなどを使ってUSBメモリに書き込みます。
    私の場合はRufusを起動してisoファイルを選択したら、パーティション構成をGPT、ターゲットシステムをUEFIに設定します。

BIOS(UEFI)の設定 〜 インストールメディアの起動

インストール前に、マザーボードのBIOS設定を確認します。

  1. PC起動直後のロゴ画面でF2Deleteキーを押してBIOS画面を起動します。
  2. BIOS画面でセキュアブート無効にします。
  3. 設定を保存して再起動したら、次はロゴ画面でF12キーなどを押してインストールメディアから起動します。

システムの設定

無事起動できたら、真っ黒な画面に文字だけが表示され、入力を受け付ける状態になります。
以降は、コマンドライン上でコマンドを入力したりファイルを編集したりして、作業を進めていきます。

キーボード配列をセット

初めにキーボードの設定を行います。
デフォルトではUS配列になっているので、一般的な日本語キーボードを使っている場合は次のコマンドを入力しましょう。

# loadkeys jp106

UEFIモードで起動しているか確認

# ls /sys/firmware/efi/efivars

UEFIモードで起動できている場合、ファイルがたくさん表示されます。
BIOSモードの場合は上記のディレクトリが存在しません。

インターネットに接続

インストールするファイル(パッケージ)はネットからダウンロードする必要があるため、ネットに接続する必要があります。
有線LANの場合は自動で接続されているかもしれませんが、無線LANの場合は手動で接続しなくてはいけません。

無線LANで接続

まず、無線LANデバイスの名前を確認します。
環境によって違いますが、通常はwlan0などです。

# iwctl station list

次に、ルータのネットワーク名(SSID)を確認します。

# iwctl station wlan0 get-networks

確認したら、下記のコマンドで接続します。
<ネットワーク名>のところは、ルータのネットワーク名(SSID)を指定してください。

# iwctl station wlan0 connect <ネットワーク名>

最後に暗号化キーの入力を求められるので、入力してください。

接続の確認

無事にネットに接続されたか、pingコマンドで確認してみます。

# ping archlinux.org

送受信が繰り返されるので、問題がなければCtrl+Cで終了します。

システムの時計を合わせる

システムの時計が正しくなるよう、ネットワーク上の時計と合わせます。

# timedatectl set-ntp true

パーティションの設定

インストール先ディスクのデバイス名を確認

# lsblk

上記のコマンドを入力すると、デバイスの一覧が表示されます。
TYPEがdiskとなっているのがインストール先のディスクになります。
HDDやSSDが一つの場合、NAMEがsdaとなっていると思います。

パーティションの作成

gdiskを使ってディスクのパーディションを切ります。

# gdisk /dev/sda

上記コマンドを入力すると、Command (? for help):と出るので、まずoで空のパーティションテーブルを作成します。

Command (? for help): o

メッセージが出てYES/NOを聞かれるので、yを押してください。

新しいパーティションはnコマンドで作ります。
UEFIの場合、まずブート用のEFIパーティションを作る必要があります。
今回は512MB用意するので、Last sectorに+512M、Hex codeにef00を指定してください。

Command (? for help): n
Partition number (1-128, default 1):    //何も入力せずEnter
First sector (〜) or {+-}size{KMGTP}:    //何も入力せずEnter
Last sector (〜) or {+-}size{KMGTP}: +512M
Hex code or GUID (L to show codes, Enter = 8300): ef00

次に、残りすべてをOSシステム用のルートパーティションにします。
すべて何も入力せずEnterで省略してかまいません。

Command (? for help): n
Partition number (1-128, default 1):    //何も入力せずEnter
First sector (〜) or {+-}size{KMGTP}:    //何も入力せずEnter
Last sector (〜) or {+-}size{KMGTP}:    //何も入力せずEnter
Hex code or GUID (L to show codes, Enter = 8300):    //何も入力せずEnter

最後にwコマンドで、パーティションテーブルをディスクに書き込みます。

Command (? for help): w

「既存のパーティションを上書きします!続けますか?」と聞かれるので、yを押します。
書き込み後、自動的にgdiskは終了します。

lsblkコマンドで確認すると、sda1sda2というパーティションができていると思います。

フォーマット

各パーティションをフォーマットして使えるようにします。
EFIパーティションはFAT32、ルートパーティションはext4でフォーマットします。

# mkfs.vfat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2

パーティションのマウント

フォーマットしたパーティションをマウントし、データの読み書きができるようにします。
まず、ルートパーティションを/mntにマウントします。
sda2を指定する点に注意してください。

# mount /dev/sda2 /mnt

次に、EFIパーティションを/mnt/bootにマウントします。
現時点では/mnt/bootディレクトリが存在しないため、作成してからマウントします。
こちらはsda1を指定する点に注意してください。

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

インストール処理

ここから、実際にArch Linuxをインストールする処理に入ります。

サーバーのミラーリストを設定

パッケージをダウンロードするためのサーバーのミラーを選択します。
日本に住んでいる場合、日本のサーバーからダウンロードするよう設定します。

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

必須パッケージのインストール

pacstrapコマンドで必須パッケージをインストールしていきます。
また、インストール後のネット接続に必要なパッケージと、ファイル編集に必要なエディタ、CPUのマイクロコードも一緒にインストールしておきます。

# pacstrap /mnt base base-devel linux linux-firmware nano wpa_supplicant networkmanager intel-ucode

AMDのCPUを使用している場合は、intel-ucodeの代わりにamd-ucodeをインストールしてください。
コマンドを実行すると、パッケージのダウンロードとインストールが始まります。
終了するまで、しばらく待ってください。

fstabの設定

起動時にマウントするパーティションなどを設定します。
genfstabコマンドを使うと自動でやってくれます。

# genfstab -U /mnt >> /mnt/etc/fstab

インストールしたシステムに入る

ここまではUSBブートのArch Linuxで作業してきましたが、ここからはPCにインストールしたArch Linuxのシステム内に入って作業を行います。

# arch-chroot /mnt

各種設定

タイムゾーンの設定

タイムゾーンを日本の東京に合わせます。

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

ハードウェアクロックの設定

現在の時間を、マザーボードの内部時計に書き込みます。

# hwclock --systohc --utc

ロケールの設定

Linux上で使用する言語を設定します。
まず、/etc/locale.genをエディタで開きます。

# nano /etc/locale.gen

言語名がアルファベット順に並んでいるので、#en_US.UTF-8 UTF-8#ja_JP.UTF-8 UTF-8の先頭の#を削除し、コメントを解除してください。

/etc/locale.gen
...
en_US.UTF-8 UTF-8
...
ja_JP.UTF-8 UTF-8
...

Ctrl+XyEnterで変更を保存します。
その後、locale-genコマンドでロケールを生成します。

# locale-gen

最後に/etc/locale.confファイルを作成し、デフォルトのロケールを指定します。

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

現時点では、まだロケールを日本語にしません。
GUI環境を構築したあとで日本語に設定します。

キーボード配列の設定

インストール後のArch Linuxでも日本語キーボードを使うための設定をします。

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

これは、コンソール画面でのキーボード配列の設定です。
GUI環境では、別途設定が必要になります。

ホスト名の設定

自分のPCのホスト名を設定します。
基本的に自分しか使わないのであれば、好きな名前でかまいません。

# echo <ホスト名> > /etc/hostname

インターネット接続の設定

このままでは、次回起動時にネットに接続されません。
pacstrapでインストールしたNetworkManagerを有効にして、再起動後も無線LANで接続できるようにしておきます。

# systemctl enable NetworkManager

パスワードの設定

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

# passwd
New password :
Retype new password :

新しいパスワードの入力を求められるので、入力してEnterを押します。
すると確認のため再入力を求められるので、もう一度同じパスワードを入力してください。

ブートローダーの設定

OSを起動するためのブートローダーを設定します。
いくつか種類がありますが、今回は定番のGRUBを使います。

必要なパッケージのインストール

# pacman -S grub efibootmgr

pacstrapでマイクロコードをインストールしていない場合は、ここで一緒にインストールしておきましょう。

GRUBのインストール

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

--bootloader-idには任意の名前を指定します。
/boot/EFIディレクトリ内に、指定した名前のディレクトリが作成されます。

.efiのコピー

PCによっては、/boot/EFI/bootディレクトリ内にbootx64.efiという名前でefiファイルが必要な場合があるようです。
必要ないかもしれませんが、念のためコピーしておきます。

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

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

GRUBの設定ファイルを生成

grub-mkconfigコマンドを使うと自動で書き込んでくれます。

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

再起動

これで、インストールしたArch Linuxを起動させる準備が完了しました。
次回以降はインストールメディアは必要ありません。
一度PCをシャットダウンし、USBメモリを抜いてください。

# exit
# umount -R /mnt
# shutdown -h now

USBメモリを抜いたあと再度起動すると、Arch Linuxが立ち上がります。

再起動後の設定

起動するとログイン画面が表示されるため、ユーザー名はroot、パスワードは先程設定した管理者権限のパスワードを入力してください。

インターネットに接続

再起動後は、また無線LANに接続できなくなっています。
nmtuiコマンドでNetworkManagerの設定メニューを表示し、設定しましょう。

# nmtui

設定メニューが立ち上がるので、「Activate a connection」を選択して設定してください。
ここで一度設定しておけば、次回の起動時からは自動的につながります。

システムのアップデートとpacmanの設定

ネットにつながったら、一応システムのアップデートをしておきます。

# pacman -Syu

また、pacmanをカラーで出力できるようにします。
/etc/pacman.confを編集し、#Colorと書かれた行の先頭の#を削除してコメントを解除してください。

# nano /etc/pacman.conf
/etc/pacman.conf
...
# Misc options
...
Color
...

Ctrl+XyEnterで変更を保存します。

一般ユーザーの作成

インストール直後は管理者権限のアカウントしか作られていないため、個人用の普段使うユーザーアカウントを作成します。

# useradd -m -G wheel <ユーザー名>

ユーザーのパスワード設定

作成したユーザーのパスワードを設定します。

# passwd <ユーザー名>
New password :
Retype new password :

sudoの設定

一般ユーザーが管理者権限で操作を行いたいときは、sudoコマンドを使います。
初期状態ではsudoコマンドを使えないので、使えるように設定します。

# EDITOR=nano visudo

# %wheel ALL=(ALL) ALLと書かれた行を探し、先頭の#とスペースを削除してコメントを解除してください。
その後、Ctrl+XyEnterで変更を保存します。

NTPの設定

NTPサーバーから時刻を取得して、自動的に時刻を修正できるようにします。
まず/etc/systemd/timesyncd.confを編集して、NTP=FallbackNTP=に日本のサーバーを指定します。
先頭の#を削除してコメントを解除してください。

# nano /etc/systemd/timesyncd.conf
/etc/systemd/timesyncd.conf
...
[Time]
NTP=ntp.nict.jp
FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org
...

設定ファイルを編集したら、サービスを有効にします。

# timedatectl set-ntp true

ビープ音を無効にする

キーボード操作中にビープ音がなることがあります。
以下のコマンドで、ビープ音が鳴らないようにできます。

# echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf

起動時と終了時のタイムアウト時間を変更する

Linuxの起動時や終了時に、システムは処理が正常に終わるまで待ちます。
そのタイムアウトの時間はデフォルトで90秒と設定されていますが、長すぎるので10秒に変更します。
/etc/systemd/system.confをエディタで開き、DefaultTimeoutStartSecDefaultTimeoutStopSecの値を変更してください。
また、先頭の#を削除してコメントを解除してください。

# nano /etc/systemd/system.conf
/etc/systemd/system.conf
...
DefaultTimeoutStartSec=10s
DefaultTimeoutStopSec=10s
...

一般ユーザーでログイン

exitコマンドでログイン画面に戻り、作成した一般ユーザーでログインします。

# exit

一般ユーザーでPCの再起動やシャットダウンをするときは、以下のコマンドを入力します。

$ sudo systemctl reboot    //再起動
$ sudo systemctl poweroff    //シャットダウン

sudoは管理者権限で実行するため、パスワードを入力する必要があります。


以上で、Arch Linuxのインストール作業は終了です。
以降は、自分の好みに合わせてGUI環境の構築や、アプリケーションのインストールをしていくことになります。

https://zenn.dev/imzrust/articles/4d694619111f07

Discussion

ymshitaymshita

わかりやすかったです、ありがとうございます!色々と調べる手間が省けました😌