この記事を作った動機
arch linux をインストールするときに、いちいち忘れたことが出てきては、wiki を見に行くということをしていたので、自分が普段やっている工程をただ書き出そうというだけです。
いつもどうり、とにかく動くこと優先なので、ロケーション設定とか、なんかいろいろ抜けてたりする可能性は大いになります。
ISO ファイルのダウンロード
ISO ファイルの書き込み
linux
ここでの、/dev/sda
は、USBドライブを意味している。
sudo dd if="archlinux-2025.03.01-x86_64.iso" of=/dev/sda status=progress
windows
Rufus などのツールなど、なんでもいいのでISOファイルを扱うツールをダウンロードして、USBメモリに書き込む。細かいことは今回は省略する。
USB メモリから起動
ここは各PCに固有の仕様に依存するので省略する。
キーボードレイアウト
日本語キーボードのときは、レイアウト設定を変更しないと、後々キーの記号と入力される記号が異なる(US配列と日本語配列の違い)というめんどくさいことになるので、変更しておく。
loadkeys jp106
wifi につなげる
インターネットが必要なので、wifiにつなげる。"[wlan0]“のところには、station list
で表示される任意の wifi カードを選択する。
iwctl
station list
station [wlan0] scan
station [wlan0] get-networks
station [wlan0] connect [targetNetworkName]
# パスワードを入力
exit
# ping が通ればOK
ping google.com
ping 8.8.8.8
ディスクの初期化
ディスク構成の確認
以下の例では、SSD と sd カードが刺さっているときの表示例である。今回は、以下の例 (/dev/nvme0n1
) とは異なるが、/dev/sda
にインストールするという前提で話を進める。
fdisk -l
ディスク /dev/nvme0n1: 1.86 TiB, 2048408248320 バイト, 4000797360 セクタ
ディスク型式: SOLIDIGM SSDPFKNU020TZ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 一応秘匿
デバイス 開始位置 終了位置 セクタ サイズ タイプ
ディスク /dev/mmcblk0: 28.15 GiB, 30224154624 バイト, 59031552 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 一応秘匿
デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
/dev/mmcblk0p1 8192 59031551 59023360 28.1G c W95 FAT32 (LBA)
efi パティーションとメインパティーションの作成
提示されたデフォルト値でいいときはそのまま Enter を押すと、次の設定項目に進める。
一応、usbメモリで普段やっているパティーション構成を再現するようにして、作業した例を載せておく。ちなみに、スワップ用のパティーションまで作っているが、普段私はインストール完了後に有効化する作業をしているので、ここでは特に、これ以上スワップについて記述することはしない。
EFI | Linux filesystem | Linux swap |
---|---|---|
EF00 | 8300 | 8200 |
gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (1-248, default 1):
First sector (64-60620736, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-60620736, default = 60618751) or {+-}size{KMGTP}: 2G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI system partition'
Command (? for help): n
Partition number (2-248, default 2):
First sector (64-60620736, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-60620736, default = 60618751) or {+-}size{KMGTP}: -10G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sda: 60620800 sectors, 28.9 GiB
Model: KUM2
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 一応秘匿
Partition table holds up to 248 entries
Main partition table begins at sector 2 and ends at sector 63
First usable sector is 64, last usable sector is 60620736
Partitions will be aligned on 2048-sector boundaries
Total free space is 20975551 sectors (10.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4194304 2.0 GiB EF00 EFI system partition
2 4196352 39649216 16.9 GiB 8300 Linux filesystem
Command (? for help): n
Partition number (3-248, default 3):
First sector (64-60620736, default = 39649280) or {+-}size{KMGTP}:
Last sector (39649280-60620736, default = 60618751) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
Command (? for help): p
Disk /dev/sda: 60620800 sectors, 28.9 GiB
Model: KUM2
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 一応秘匿
Partition table holds up to 248 entries
Main partition table begins at sector 2 and ends at sector 63
First usable sector is 64, last usable sector is 60620736
Partitions will be aligned on 2048-sector boundaries
Total free space is 6079 sectors (3.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4194304 2.0 GiB EF00 EFI system partition
2 4196352 39649216 16.9 GiB 8300 Linux filesystem
3 39649280 60618751 10.0 GiB 8200 Linux swap
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
フォーマット
mkfs.fat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2
マウントする
mount /dev/sda2 /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
/etc/fstab を生成する
genfstab -U /mnt >> /mnt/etc/fstab
fstab なるものを生成しておかないと、後々 /boot が正常にマウントされないというトラブルになるので気をつける。
最初のうちはなくても実は動いてしまうが、後々 liunx カーネルのアップデートとかがあると、linux kernel 本体と initramfs がアップデートされるときに、UEFI側から見えるパテーションである、/dev/sda1
には、古い linux kernel 本体と initramfs がそのまま更新されないままになり、起動時にはそれが読み込まれてしまう。
これの何が問題かと言うと、モジュールのバージョンが合わないということが起こり、最悪 linux が立ち上がってこなくなる。起動しても wifi が使えないなどの障害になる。
pacstrap
基本的な環境のインストールを行う。これをしないと、arch-chroot
のときに chroot 環境に入ることができない。
pacstrap -K /mnt base linux linux-firmware
ブートローダのインストール
今回は、GRUB をブートローダとしてインストールする。正直以下のやり方が正しいかと言われると怪しいが、とりあえず動く。
grub-install --efi-directory /mnt/boot --boot-directory /mnt/boot
arch-chroot
インストールした環境を設定していく。
chroot 環境に入る
arch-chroot /mnt
hostname の設定
任意の名前を設定できる。あんまり特殊な名前にはできないと思う。
echo "naynmohusahusa" > /etc/hostname
アカウント作成とパスワードの設定
パスワードを設定しないと、あとからこの設定をやり直すことになる。
- root パスワードの設定
passwd
- アカウントを作成する
# -m でホームディレクトリを作る
useradd -m husa
# sudo の管理者権限を付与
usermod -aG wheel husa
# パスワード設定
passwd husa
pacman の設定
multilib を有効化しておく。 よく[multilib]
の部分を忘れて、コメントアウトしたままになり、設定が正しく反映されていないままになることがあるので気をつける。
- /etc/pacman.conf 変更前
...
# [multilib]
# Include = /etc/pacman.d/mirrorlist
...
- /etc/pacman.conf 変更後
...
[multilib]
Include = /etc/pacman.d/mirrorlist
...
アプリケーション群のインストール
sudo pacman -Syyu
sudo pacman -S gnome neovim firewalld reflector sudo networkmanager noto-fonts-cjk
sudoers
管理者権限を wheel グループに属性ているユーザに付与する。
- /etc/sudoers 変更前
...
# %wheel ALL=(ALL:ALL) ALL
...
- /etc/sudoers 変更後
...
%wheel ALL=(ALL:ALL) ALL
...
reflector の設定(オプション)
- /etc/xdg/reflector/reflector.conf
...
--country Japan
...
必要なサービスの有効化
sudo systemctl enable gdm NetworkManager firewalld reflector
sudo systemctl enable bluetooth # オプション
ブートローダの設定を生成
chroot 環境に入る前にインストールした GRUB に対して、設定ファイルを生成する。
sudo grub-mkconfig -o /boot/grub/grub.cfg
タイムゾーンの設定
timedatectl list-timezones
timedatectl set-timezone Japan
timedatectl status
# Local time: Sat 2025-06-21 05:31:02 JST
# Universal time: Fri 2025-06-20 20:31:02 UTC
# RTC time: Fri 2025-06-20 20:31:02
# Time zone: Japan (JST, +0900)
# System clock synchronized: no
# NTP service: inactive
# RTC in local TZ: no
chroot 環境の終了
exit
再起動
ここまでくれば、とりあえず GNOME が立ち上がってくるところまで行けるはずである。
reboot
補足
arch-keyring がうまく機能しない
最終的な対処法としては、単に pacman 署名確認機能を無効化してアップデートさせて、元に戻すしか今のところ私は対処方法を見つけられていない。本来であれば、このようにして安全装置を外すことは推奨されないが、無理やり進めたいならば、以下のように設定することもできる。
- /etc/pacman.conf
# SigLevel = Required DatabaseOptional
SigLevel = Never
一旦署名機能を無効化したあとは、keyringをアップデートすることで、とりあえず元どうり署名機能が使えるときもある。でもうまくいかないときもあって、そういうときは、google を彷徨ってたりしばらく時間をおいて、どうしたらいいか考えたりしている。はっきりとどうしたらいいかということは分かっていない。
sudo pacman -Syyu
sudo pacman -S arch-keyring
パスワードを設定し忘れた
root と作成したアカウントもろともパスワードの設定を忘れると、再起動したときに何もできないということになる。その時はインストールメディアから起動し直して設定を行う。ここでも、ディスクは /dev/sda
として見えることを前提に話を進める。
- fdisk で構成を確認
fdisk -l
- arch linux 本体が入ったパティーションをマウント
mount /dev/sda2 /mnt
- chroot 環境に入る
arch-chroot /mnt
- パスワードを設定
passwd # root ユーザのパスワードを設定
passwd husa # husa という名前のユーザのパスワードを設定
- chroot 環境を抜けて再起動
exit
reboot
関連してそうな記事
参考にしたサイトとか
- Installation guide - ArchWiki
https://wiki.archlinux.org/title/Installation_guide (2025年4月2日) - GRUB - ArchWiki
https://wiki.archlinux.jp/index.php/GRUB (2025年4月2日) - GDisk Hex Codes - Ask Ubuntu
https://askubuntu.com/questions/703443/gdisk-hex-codes (2025年4月2日) - GPT fdisk - ArchWiki
https://wiki.archlinux.org/title/GPT_fdisk (2025年4月2日)