2026.01.14
#linux#beginner
blog

Arch Linux インストールの悪戦苦闘メモ

Arch Linuxを使ってみようと思ったきっかけ

なんかかっこいいから。以上。

環境

PC: Lenovo ThinkPad X13 Gen 1

  • CPU: AMD Ryzen 5 PRO(?)
  • メモリ: 16GB
  • ストレージ: 256GB SSD
  • elementary OS(linux)をインストール済み インストールメディア
  • 事前にisoイメージを焼いたUSB
  • 作り方は arch linux - USB インストールメディア を参考にした(わからない人は 「arch linux iso 作り方」とかで検索してね)

※ PCの機種によってBIOS起動などの手順は異なります。今回はThinkPadが前提です。

※ Arch Linux初心者 & Linuxに精通しているわけでもない ため、詳細までは保証できません。あくまで自分用の環境構築メモとなります。

Arch Linuxの起動

F12 を連打するとブートメニューが開けるので、事前に作成したインストールメディアを選択する。

※ ThinkPadの場合は F1 を連打し、セキュアブートを無効化しておく必要がある。

正しく起動できるとarch linuxの画面が開くので、Arch Linux install medium (X86_64, UEFI)を選択する。 BIOS起動の場合は Arch Linux install medium (X86_64, BIOS)となっているはず。

適当に待っていると、root@archiso ~ #という文字列が表示される → ここからインストールを始めていく!!!

※ 補足: JIS配列を使いたい場合は以下を実行する。自分はUS配列のため実行しない。

$ loadkeys jp106

wifi設定

pingでインターネット接続を確認する。

$ ping -c 3 archlinux.jp

64 bytes from ...みたいな感じで出力されていれば接続済み。

今回はwifiに接続したいので、iwctlを使う

$ iwctl

[iwd]# device list  -- 'wlan0'のみ表示された

[iwd]# station wlan0 get-networks  -- 利用できるwifi一覧が表示された

[iwd]# station wlan0 connect xxxxxxxx(SSID)  -- passphraseを求められるので入力

[iwd]# quit

もう一度 ping -c 3 archlinux.jpを実行すると、無事接続できていた模様🎉

システムクロック設定

以下を実行する。

$ timedatectl set-ntp true

timedatectl statusで正しい時刻になっているか確認できる。

パーティションの割当

ここからが難関だった。 正直詳細を説明する自信はないが、↓のような手順でなんとか成功した...

まずは、lsblkを用いてPC本体のストレージを特定する。

$ lsblk -o NAME,TRAN,RM,SIZE,MOUNTPOINT

# 結果
NAME        TRAN    RM   SIZE  MOUNTPOINT
sda         usb      1  14.4G
├─sda1               1   1.2G
└─sda2               1   248M
nvme0n1     nvme     0 238.5G
├─nvme0n1p1 nvme     0   500M
├─nvme0n1p2 nvme     0   954M
└─nvme0n1p3 nvme     0 237.1G

nvme0n1がPC本体のストレージと判断した。不安。。。

すでにインストール済みの elementary OS はぶち消してしまって構わないので、このnvme0n1にパーティションを割り当てて行こうと決意した。

!FAIL 警告 失敗した際の動きを保証できないので、ぶち消す際は自己責任でお願いします...!

fdiskによるパーティショニング

fdisk /dev/nvme0n1を実行すると、対話型のコマンドが進んでいく

コマンドの実行手順を書くと、

  1. fdisk /dev/nvme0n1を実行
  2. gで新しいGPTテーブルを作成
  3. nで1つ目のパーティションを作成
    • Partition number: 1
    • First sector: 2048
    • Last sector: +500M
  4. 3で作成したパーティションに対し、tでタイプをEFI Systemに設定
  5. nで2つ目のパーティションを作成
    • Partition number: 2
    • First sector: [デフォルト値]
    • Last sector: +1G
  6. 5で作成したパーティションに対し、tでタイプをLinux swapに設定
  7. nで3つ目のパーティションを作成
    • Partition number: 3
    • First sector: [デフォルト値]
    • Last sector: [デフォルト値] -> 残りすべてを割り当てる
  8. 7で作成したパーティションに対し、tでタイプをLinux root(x86-64)に設定
  9. wで保存してexit
  10. 念のため、lsblk -fで確認する

パーティションのフォーマット

$ mkfs.fat -F 32 /dev/nvme0n1p1
$ mkswap /dev/nvme0n1p2
$ mkfs.ext4 /dev/nvme0n1p3

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

$ mount /dev/nvme0n1p3 /mnt
$ mount --mkdir /dev/nvme0n1p1 /mnt/boot
$ swapon /dev/nvme0n1p2

最終的なパーティション割当

パーティションパーティションタイプfirst sectorlast sectorマウントポイント
/dev/nvme0n1p1EFI Systemdefault+1GB/mnt/boot
/dev/nvme0n1p2Linux swapdefault+16GBswap
/dev/nvme0n1p3Linux root(x86-64)defaultdefault/mnt

OSのインストール

/etc/pacman.d/mirrorlistvimで編集し、先頭に以下を追加する。

Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch

次に、必要なパッケージをpacstrapでインストールする。

$ pacstrap /mnt base base-devel linux linux-firmware

これで基本パッケージのインストールが完了した。

システム設定

fstabを生成する。 これは、パーティション情報等が書き込まれているファイルで、起動時にどのパーティションをマウントするかなどを指定しているらしい。詳しくはわからない。

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

続けて、インストールしたシステムにchrootで入る。

$ arch-chroot /mnt

chroot環境に入ったらタイムゾーンを設定する。

$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc

ロケール設定

いくつかの設定ファイルを編集したいので、まずはvimをインストールする。

$ pacman -Syyu
$ pacman -S vim

/etc/locale.genを開き、en_US.UTF-8ja_JP.UTF-8の行のコメントアウトを外す。 最上部に以下を追記してもよい。

ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8

完了後、locale-genを実行して/etc/locale.genの内容をコンパイルする。

次に、/etc/locale.confにLANG環境変数を設定する。

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

JIS配列を使っている場合は、/etc/vconsole.conf にキーマップを設定する。

$ echo "KEYMAP=jp106" > /etc/vconsole.conf

ホスト名の設定

/etc/hostnameにホスト名を追記する。

$ echo "myhostname" > /etc/hostname

上記で設定したホスト名を/etc/hostsにも設定する。

127.0.0.1    localhost
::1    localhost
127.0.1.1    myhostname.localdomain    myhostname

正しく設定されているか確認。

$ getent hosts

127.0.0.1 localhost
::1       localhost
127.0.1.1 myhostname

ネットワーク設定

今回は無線LANを利用しているため、Network Managerなるものが良いらしい。

$ pacman -S networkmanager

# 次回起動時にNetwork Managerが自動で有効化されるように設定
$ systemctl enable NetworkManager

rootパスワードの設定

$ passwd

ブートローダー

systemd-bootを使う。

先に、マイクロコードのアップデートに対応するためのライブラリ(らしい)amd-ucodeをインストールする。

$ pacman -S amd-ucode  -- intelのCPUの場合は intel-ucode

EFIシステムパーティションに systemd-boot をインストールし、自動更新を設定。

$ bootctl --path=/boot install

$ systemctl enable systemd-boot-update

次は/boot/loader/loader.conf を開いて、ローダーの設定をする。 自分は以下のように設定した。

default arch.conf
timeout 5
console-mode max
editor no

完了したら、/boot/loader/entries/arch.conf を作成し以下を追加。

title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img

option値を取得するため、ルートパーティションのUUIDを取得して /boot/loader/entries/arch.confに書き込む。

$ echo $(blkid -s UUID -o value /dev/nvme0n1p3) >> /boot/loader/entries/arch.conf

末尾にUUIDのみが追加されているはずなので、以下のように整形する。

title   Arch Linux
linux   /vmlinuz-linux
initrd  /amd-ucode.img
initrd  /initramfs-linux.img
options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw

準備は整った!!あとは再起動!!

の前に、chroot環境から抜けて/mntにマウントしたパーティションをアンマウントする。

$ exit
$ umount -R /mnt

願いを込めて再起動。

$ reboot

問題なくインストールできていれば、USBを抜いてもArch Linuxが起動する。 ログインが求められるので、先ほど設定したパスワードを使ってrootユーザーでログインする。

無事起動できたなら、以下も合わせて対応してしまった方がよい。

無線LANの設定

nmcli を使う。 まず、以下でSSIDのリストを確認する。

$ nmcli device wifi

接続したいSSIDを選択し、パスワードを入力する。 --askはパスワードを対話式で入力するためのオプション。

$ nmcli device wifi connect [SSID] --ask

ユーザーの追加

rootユーザーは手放したいので、新しいユーザーを作成する。

$ useradd -m -G wheel -s /bin/bash [username]

各オプションの意味はこんな感じ

  • -m : ホームディレクトリを作成する
  • -G wheel : wheelグループ ( su が使えるユーザーのグループ) に追加する
  • -s /bin/bash : ログインシェルをbashに設定する

パスワードも設定。

$ passwd [username]

次に、sudoをインストールする

$ pacman -S sudo

wheel グループに対して sudo の権限を与える。 これをしないと、追加したユーザーがsudoを使えない。

$ vim /etc/sudoers

## uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL

exitrootユーザーからログアウトし、作成したユーザーでログイン → sudo lsなどが問題なく実行できればOK

おわりに

5回くらいやり直しました。Arch Linuxむずい。


参考にした記事