🫠

ArchLinuxインストール奮闘録

2024/09/24に公開

はじめに

久々にArchLinuxを起動したら色々壊れてしまっていたためクリーンインストールを決行したが、2回目なのに関らず幾度となく失敗した記録。犯したミスを含めて全体の流れを振り返っておこうと思う。

(情報は執筆時2024/09/24のものである)

作業環境

  • CPU: AMD Ryzen 7 5700x
  • GPU: NVIDIA Geforce RTX 3050

インストールまで

ISOイメージの準備

  1. ダウンロードページ からISOイメージをダウンロード
  1. USBに焼く
    手元にあったのがMacOSだったのでbalenaEtcherで焼いた。

起動・キーボード・時計等

  1. USBを刺してbootメニューから起動
    今回は2枚刺しのSSDの片方に導入する予定だったので、安全のためにもう片方のSSDを抜いておいた。
  1. 起動モードの確認

とりあえずJISキーボードにする。

$ loadkeys jp106

そうしたらefivarsディレクトリの存在を確認。

$ ls /sys/firmware/efi/efivars
  1. ネットワーク、システムクロック設定

pingでネットワークの確認。

$ ping archlinux.org

今回は有線なのでこれ以上やることなし。

システムクロックを更新する

$ timedatectl set-ntp true

パーティション割り、マウント

  1. パーティション割り

まずは現状を把握するため

$ lsblk

今回はM2SSDにインストールするためnvme0n1を割っていく。以下のようにGPTで割った。

Partition Type Size
nvme0n1p1 EFI Partition 512MiB
nvme0n1p2 Linux Filesystem(root) rest
nvme0n1p3 swap Partition 3GB

cgdisk が視覚的に分かり易かった。

$ cgdisk /dev/nvme0n1/

とりあえず不要なテーブルを削除した後、パーティションタイプを確認しながら、

  • EFI パーティション: +512M確保し、ef00
  • root: -3G(これで3G残して全部確保できる)、8300
  • swap: +3G、8200

と割ってあげる。

  1. フォーマット、マウント

EFIパーティションはfat32、rootはext4、swapはmkswapでフォーマットしてあげる。

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

次にrootを/mntに、EFIパーティションを/mnt/boot/にマウントする。

$ mount /dev/nvme0n1p2 /mnt
$ mount --mkdir /dev/nvme0n1p1 /mnt

swapはswaponで有効化する。

$ swapon /mnt/nvme0n1p3

インストール

ダウンロードを早くすませるために/etc/pacman.d/mirrorlist/のミラーリストを更新してあげる。先駆者さまのありがたいコマンドをお借りして、

$ cat /etc/pacman.d/mirrorlist | cat <(curl -s "https://archlinux.org/mirrorlist/?country=JP" | sed -e 's/^#Server/Server/') - > /etc/pacman.d/mirrorlist

をすると更新してくれる。vimで/etc/pacman.d/mirrorlist/を覗いて、コメントアウトされてないかを確認する。

ここで、色々パッケージをインストールする。 今回は

  • base
  • base-devel
  • linux
  • linux-firmware
  • linux-headers
  • vim

をとりあえずいれた。

$ pacstarp /mnt base base-devel linux linux-firmware linux-headers vim

ch-rootで色々

fstab,chroot

  1. ここでfstabを生成しておく。
$ genfstab -U /mnt >> /mnt/etc/fstab
  1. arch-chrootし、rootに入る
$ arch-chroot

タイムゾーン、ローカリゼーション

  1. タイムゾーン設定

日本にすんでる人なら

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

BIOSをシステム時間とシンクロさせる

$ hwclock --synctohc
  1. ローカライゼーション

/etc/locale.genにあるen_US.UTF-8 UTF-8ja_JP.UTF-8 UTF-8をコメントアウト。その後

$ locale-gen

をすることでlocaleを作成できる。そうしたら、LANG変数とkeymappingを設定する。

$ echo LANG=en_US.UTF-8 > /etc/locale.conf
$ echo KEYMAP=jp106 > /etc/vconsole.conf

ネットワーク設定

  1. ホスト名の設定

まずは/etc/hostname/に好きなホスト名(今回はmyhostnameとする)を書きこみ、/etc/hostsを編集する。

$ echo myhostname > /etc/hostname
$ vim /etc/hosts

hostsは下のように記述する。

/etc/hosts
127.0.0.1    localhost
::1    localhost
127.0.1.1    myhostname.localdomain myhostname
  1. networkmanagerの導入

networkmanagerと周辺パッケージを色々いれる。

$ pacman -S networkmanager wpa_supplicant dialog iw iwd dhcpcd netctl

後はnetworkmanagerを起動してあげるだけ。

$ systemctl enable NetworkManager

GRUBの設定

  1. まずは必要なものを色々インストール
$ pacman -S grub efibootmgr dosfstools os-prober mtools
  1. GRUBをEFIパーティションをマウントした場所にインストール
$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB_UEFI

3.忘れないうちにconfigを作る

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

マイクロコード、rEFInd (Optional)

ここはやってもやらなくてもどうにかなる(rEFIndは便利だった)

  1. マイクロコード適応
    amdを使っているのでamd-ucodeをいれる
$ pacman -S amd-ucode

これだけで勝手にやってくれる。

2.rEFIndのインストール
rEFInd:便利なbootローダー

$ pacman -S refind
$ refind-install

パスワード設定とユーザー追加

  1. パスワード設定
$ passwd

でrootにパスワードを設定する。

  1. ユーザー追加
    いつまでもrootで作業していると危ないので通常ユーザーを作る(ユーザー名はuserとする)。
$ useradd -m -g users -G wheel -s /bin/bash archuser
$ passwd archuser
  1. sudoの導入

通常ユーザーでも管理者権限を使えるようにするためにsudoを入れる。

$ pacman -S sudo

としたあと、/etc/sudoersを編集して、wheelグループにsudoをあたえる。

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

ここでch-rootでやることは終りなのでexitで抜けたあとrebootする。

GUI設定まで

ログイン

  1. rEFIndでbootを選ぶ
    再起動すると、2種類のArchアイコンがみつかると思うので、EFI/GRUB_UEFI/grubx64.efiと書いてあるほうを起動する。
  1. 設定したユーザー名とパスワードでログインする。

ネットワーク設定とアップデート

  1. NetworkManagerの設定
$ nmtui

からNetworkManagerの設定画面が開ける。ここで使いたいネットワークを選択すれば接続できる。

  1. パッケージのアップデート
$ sudo pacman -Syu

で全てアップデートできる。

ARUヘルパーのインストール

  1. AURヘルパーとは?
    wiki曰く、AUR(Arch User Repository)からのパッケージのダウンロード、ビルドの自動化をしてくれるものらしい。

  2. インストール準備
    yayparuの2巨頭があるらしいが、今回はparuをインストールしていく。paruはrust製なのでまずrustの準備をする。

$ sudo pacman -S --needed git base-devel rustup
$ rustup default stable
  1. インストール
    gitからクローンしてくる
$ git clone https://aur.archlinux.org/paru.git
$ cd paru
$ makepkg -si

GUIのインストール(GNOME on Xorg)

  1. Xorgのインストール
    waylandにしてもよかったが、まだ問題が多い(?)らしいので今回は無難にX.orgを使用する
pacman -S xorg-server xorg-server-utils xorg-xinit xterm
  1. ドライバのインストール
    まず自分のGPUを確認するために以下を実行。
$ lspci -k | grep -A 2 -E VGA

今回はNVIDIAのTuring以降のモデルを使用したためnvidia-openをダウンロード(Wiki参考)。その後xorg.confを自動設定するコマンドを使う。

$ paru -S nvidia-open nvidia-xconfig
$ nvidia-xconfig

この後もう一度lspciをしてドライバが認識されているか確認する。

  1. GNOMEのインストール
    とりあえず必要パッケージをダウンロード
$ paru -S gnome gnome-tweak-tool

次に~/.xinitrcを以下のように編集する。

~/.xinitrc
export XDG_SESSION_TYPE=x11
export GDK_BACKEND=x11
exec gnome-session

そうしたら、startxでGNOMEに入れることを確認する。

$ startx

その他

日本語環境

  1. 入力環境
    今回はSKKにした。GNOMEだとibusがデフォルトで入っているようなのでインストールは不要だった。/etc/environmentの環境変数を変更しておく。
/etc/environment
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

ログインするときにibusを起動するため自動起動エントリを設定する。

$ ibus-daemon -drxR

そうしたらibus-skkskk-jisyoをインストールし、設定>キーボードでskkを設定して完了。

$ paru -S ibus-skk skk-jisyo
  1. 日本語フォント
    取り急ぎnoto-fonts-cjkだけ入れた。Wikiを参照しつつ追加していくのもいいかもしれない。
$ paru -S noto-fonts-cjk

ターミナル周り

  1. ターミナルの選択
    標準のターミナルでも満足だが、MacOSで使えるiterm2のホットキーが好きなので、似たことのできるGuakeを入れた。
$ paru -S guake

Guake Preferenceのアプリを開いて、ログイン時の自動起動設定とサイズ調整だけした。

  1. シェルの選択
    個人的にfishシェルが好きなので変更する。
$ paru -S fish
$ sudo chsh -s /usr/bin/fish

以上!

最後に

これで次インストールするときに困らない(と信じたい)。

参考資料

https://wiki.archlinux.jp/index.php/インストールガイド
https://qiita.com/Hayatann/items/09c2fee81fcb88d365c8
https://zenn.dev/ytjvdcm/articles/0efb9112468de3
https://qiita.com/k0kubun/items/e60fae90c688ac960ab7
https://wiki.archlinux.jp/index.php/GNOME#.E8.B5.B7.E5.8B.95
https://wiki.archlinux.jp/index.php/IBus
https://japan.zdnet.com/article/35208378/
https://zenn.dev/sawao/articles/0b40e80d151d6a

GitHubで編集を提案

Discussion