arch Linuxのインストール手順 2023年最新版

# はじめに
こんにちは。くりもちです。この記事では、arch Linuxのインストール手順を解説しています。公式のインストール手順で挫折してしまった方・arch Linuxをまだインストールしたことがない方などにインストール手順をできるだけ簡単にお伝えできればと思います。

# 事前準備
### 必要なもの
* インストールするPC(仮想マシンでも大丈夫です)
* インストールメディア(仮想マシンにインストールする方はisoファイルを用意してください・作成する手順を下で解説しています)
* ある程度のbash・zshの知識(vimの使い方とファイル操作とリダイレクトぐらい覚えておけば多分大丈夫です)
* 気合い
### インストールメディアの作成方法(ある方は飛ばしてください)
[arch Linuxのダウンロードページ](https://www.archlinux.jp/download/)の日本サーバーのどこかからisoファイルをダウンロードし、EtcherやRufusなどでCDやUSBに焼いてください。

これでインストールメディアが準備できました。
### arch Linuxを起動
インストールメディアをインストールするPCに挿入して起動すると以下の画面が表示されるるので、`Arch Linux install medium (x86_64, x64 UEFI)`を選択して下さい。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583252/5b175bc7-e78f-a3cf-e90f-7760766c051c.png)
自動的にrootにログインされ、zshのシェルが開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583252/417cf4fd-7a30-7695-a1f4-8bc77b427c83.png)
### キーボードレイアウト
標準のキーボードレイアウトはUSキーボードなので、以下のコマンドでJISキーボードに変更します。USキーボードを使っている人はこのコマンドを実行する必要はありません。
```
loadkeys jp106
```
### 起動モードの確認
今回のインストール方法は起動モードがUEFIであることを前提としています。BIOSとUEFIではインストール手順が多少異なるので、以下のコマンドで起動モードを確認します。(BIOSのインストール手順もいつかやると思います)
```
ls /sys/firmware/efi
```
実行結果に「efivars」という項目があればUEFIなので大丈夫です。
## パーティションの作成
### 対象のディスクの確認
他のディスクに間違えて書き込んでしまうとまずいので以下のコマンドでインストール対象のディスクを確認します。
```
lsblk | grep -v 'rom\|loop\|airoot'
```
「/dev/NAMEの下の欄」がディスクの名前になります。インストール対象のディスクの名前を覚えておいてください。
### パーティションの作成
今回は以下のパーティション構成にします。
|  パーティション  |  サイズ  |  フォーマット  |  マウントポイント  |
| ---- | ---- | ---- | ----|
|  /dev/sda1  |  512M  |  FAT32  |  /boot/efi  |
|  /dev/sda2  |  512M  |  ext4 | /boot  |
|  /dev/sda3  |  残り全部  |  ext4  |  /  |

今回はswapパーティションは作成せず、動的に変化するswapにします。
必要に応じてパーティション構成を変更してください。(ただし、`/boot/efi`と`/boot`は必ず作成してください。)

それでは以下のコマンドでパーティションを作成します。
```
sgdisk -z /dev/sda
sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/sda
sgdisk -n 2:0:+512M -t 2:8300 -c 2:"Linux filesystem"　/dev/sda
sgdisk -n 3:0: -t 3:8300 -c 3:"Linux filesystem" /dev/sda
```
### パーティションのフォーマット
次に、以下のコマンドでパーティションをフォーマットします。
```
mkfs.vfat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
```
### パーティションのマウント
続いて、以下のコマンドでパーティションをマウントしていきます。
```
mount /dev/sda3 /mnt
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
```
### 無線LANの方のみ:wifiに接続
無線LANでパッケージをインストールする方は、以下のコマンドでwifiに接続させます。
```
wifi-menu
```
実行したら、画面の指示に従ってSSIDとパスワードを入力してください。
# arch Linuxをインストール
事前準備が完了したので、arch Linuxをインストールしていきます。
### ネットワークの疎通確認
インストールする前に、`ping`コマンドなどでネットワークが疎通していることを確認するといいかもしれません。
### リポジトリの選択
インストールできれば何でもいいという方は必要ないですが、地理的な事情を考慮すると日本のリポジトリの優先度を高くした方がいいので、`/etc/pacman.d/mirrorlist/`に以下の文を上に追記します。
```
Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
```
### パッケージのインストール
では、`pacstrap`でパッケージをインストールしていきます。
インストールするパッケージは以下の通りです。
* base
* base-devel
* linux
* linux-firmware
* grub
* efibootmgr
* dosfstools
* netctl
* vim
(ここから無線LANの方のみのパッケージ)
* iw
* wpa_supplicant
* networkmanager
* dialog

以下のコマンドでインストールしていきます。(他に入れたいパッケージがある方はスペースで区切って追記してください)
```
# 有線LANの方の例
pacstrap /mnt base base-devel linux linux-firmware grub efibootmgr dosfstools netctl vim
# 無線LANの方の例
pacstrap /mnt base base-devel linux linux-firmware grub efibootmgr dosfstools netctl vim iw wpa_supplicant networkmanager dialog
```
### fstabの作成
`genfstab`コマンドでfstabファイルを作成します。
```
genfstab -U /mnt >> /mnt/etc/fstab
```
### chroot
`arch-chroot`コマンドでrootの作業場所を変更します。
```
arch-chroot /mnt /bin/bash
```
### Localeの設定
arch LinuxのLocaleを設定します。
`/etc/locale.gen`をvimなどで開き、`en_US.UTF-8 UTF-8`と`ja_JP.UTF-8 UTF-8`の行のコメントを解除し、`locale-gen`コマンドを実行します。
```
...
en_US.UTF-8 UTF-8
...
ja_JP.UTF-8 UTF-8
...
```
```
locale-gen
```
LANG環境変数を設定するため、`/etc/locale.conf`を作成し、以下の値を入力します。(以下のコマンドを実行すると入力できます)
```
echo "LANG=en_US.UTF-8 UTF-8" > /etc/locale.conf
```
JISキーボードを使用している方は、`/etc/vconsole.conf`を作成し、以下の値を入力します。(以下のコマンドを実行すると入力できます)
```
echo "KEYMAP=jp106" > /etc/vconsole.conf
```
### timezoneの設定
timezoneを日本に設定します。
```
tzselect
# 次に5、20、1と入力
```
`/usr/share/zoneinfo`ディレクトリ配下に`/etc/localtime`シンボリックリンクを作成します。
```
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```
ハードウェアクロックの時間のずれを修正します。
```
hwclock --systohc --utc
```
### hostnameの設定
`/etc/hostname`と`/etc/hosts`を編集してhostnameを設定します。(以下のhostnameは設定したいhostnameに変えてください)
```
echo "hostname" > /etc/hostname
```
```
127.0.0.1 localhost
::1 localhost
127.0.1.1 hostname
```
### initramfsイメージの作成
`mkinitcpio`コマンドでinitramfsイメージを作成します。
```
mkinitcpio -p linux
```
### rootのパスワードの設定
`passwd`コマンドでrootのパスワードを設定します。
```
passwd
```
実行したら、画面の指示に従ってパスワードを設定してください。
### grubの設定
パッケージのインストールでgrubをインストールした方は以下のコマンドでgrubを設定してください。
```
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --boot-directory=/boot/efi/EFI --recheck
grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
```
この時点でgrubの動作確認・Linuxの起動確認をするので、以下のコマンドを実行した後、インストールメディアを抜いて起動してください。
```
exit
shutdown -h now
```
grubが動作・Linuxが起動したら成功です。rootでログインして続けてください。
### 無線LANの方のみ:wifiの設定
以下のコマンドで起動時にwifiに接続するようにします。(SSIDの部分とpasswordの部分をSSIDとパスワードに置き換えてください)
```
systemctl start NetworkManager
systemctl enable NetworkManager
nmctl d wifi list
# 接続可能なwifiを確認
nmctl d wifi connect SSID password password
# 接続完了
```
### 一般ユーザーの作成
以下のコマンドで一般ユーザーを作成します。(usernameの部分を設定したいユーザーネームに置き換えてください)
```
useradd -m -g wheel -d /home/username -s /bin/bash -m username
passwd username
# 画面の指示に従ってパスワードを設定
pacman -S sudo
EDITOR=vim visudo
# Defaults env_keep += "HOME" の行と %wheel ALL=(ALL) ALL の行のコメントを解除
```
`exit`してログインできるか確認してください。

これでインストールは完了です。お疲れさまでした。
# 参考サイト
https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744https://qiita.com/TsutomuNakamura/items/b60518f8788e5e998744

https://mako-note.com/ja/archlinux-install/#timezone%E3%81%AE%E8%A8%AD%E5%AE%9A

https://qiita.com/mdps513/items/4c29be9d080b47534e7c