ArchLinuxインストール奮闘録
はじめに
久々にArchLinuxを起動したら色々壊れてしまっていたためクリーンインストールを決行したが、2回目なのに関らず幾度となく失敗した記録。犯したミスを含めて全体の流れを振り返っておこうと思う。
(情報は執筆時2024/09/24のものである)
作業環境
- CPU: AMD Ryzen 7 5700x
- GPU: NVIDIA Geforce RTX 3050
インストールまで
ISOイメージの準備
- ダウンロードページ からISOイメージをダウンロード
- USBに焼く
手元にあったのがMacOSだったのでbalenaEtcherで焼いた。
起動・キーボード・時計等
- USBを刺してbootメニューから起動
今回は2枚刺しのSSDの片方に導入する予定だったので、安全のためにもう片方のSSDを抜いておいた。
- 起動モードの確認
とりあえずJISキーボードにする。
$ loadkeys jp106
そうしたらefivars
ディレクトリの存在を確認。
$ ls /sys/firmware/efi/efivars
- ネットワーク、システムクロック設定
pingでネットワークの確認。
$ ping archlinux.org
今回は有線なのでこれ以上やることなし。
システムクロックを更新する
$ timedatectl set-ntp true
パーティション割り、マウント
- パーティション割り
まずは現状を把握するため
$ 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
と割ってあげる。
- フォーマット、マウント
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
- ここでfstabを生成しておく。
$ genfstab -U /mnt >> /mnt/etc/fstab
-
arch-chroot
し、rootに入る
$ arch-chroot
タイムゾーン、ローカリゼーション
- タイムゾーン設定
日本にすんでる人なら
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
BIOSをシステム時間とシンクロさせる
$ hwclock --synctohc
- ローカライゼーション
/etc/locale.gen
にあるen_US.UTF-8 UTF-8
とja_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
ネットワーク設定
- ホスト名の設定
まずは/etc/hostname/
に好きなホスト名(今回はmyhostnameとする)を書きこみ、/etc/hosts
を編集する。
$ echo myhostname > /etc/hostname
$ vim /etc/hosts
hosts
は下のように記述する。
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
- networkmanagerの導入
networkmanager
と周辺パッケージを色々いれる。
$ pacman -S networkmanager wpa_supplicant dialog iw iwd dhcpcd netctl
後はnetworkmanager
を起動してあげるだけ。
$ systemctl enable NetworkManager
GRUBの設定
- まずは必要なものを色々インストール
$ pacman -S grub efibootmgr dosfstools os-prober mtools
- 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は便利だった)
- マイクロコード適応
amdを使っているのでamd-ucode
をいれる
$ pacman -S amd-ucode
これだけで勝手にやってくれる。
2.rEFIndのインストール
rEFInd:便利なbootローダー
$ pacman -S refind
$ refind-install
パスワード設定とユーザー追加
- パスワード設定
$ passwd
でrootにパスワードを設定する。
- ユーザー追加
いつまでもrootで作業していると危ないので通常ユーザーを作る(ユーザー名はuserとする)。
$ useradd -m -g users -G wheel -s /bin/bash archuser
$ passwd archuser
-
sudo
の導入
通常ユーザーでも管理者権限を使えるようにするためにsudo
を入れる。
$ pacman -S sudo
としたあと、/etc/sudoers
を編集して、wheelグループにsudoをあたえる。
## uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL:ALL) ALL
ここでch-root
でやることは終りなのでexit
で抜けたあとreboot
する。
GUI設定まで
ログイン
- rEFIndでbootを選ぶ
再起動すると、2種類のArchアイコンがみつかると思うので、EFI/GRUB_UEFI/grubx64.efi
と書いてあるほうを起動する。
- 設定したユーザー名とパスワードでログインする。
ネットワーク設定とアップデート
- NetworkManagerの設定
$ nmtui
からNetworkManagerの設定画面が開ける。ここで使いたいネットワークを選択すれば接続できる。
- パッケージのアップデート
$ sudo pacman -Syu
で全てアップデートできる。
ARUヘルパーのインストール
-
AURヘルパーとは?
wiki曰く、AUR(Arch User Repository)からのパッケージのダウンロード、ビルドの自動化をしてくれるものらしい。 -
インストール準備
yay
とparu
の2巨頭があるらしいが、今回はparu
をインストールしていく。paru
はrust製なのでまずrustの準備をする。
$ sudo pacman -S --needed git base-devel rustup
$ rustup default stable
- インストール
gitからクローンしてくる
$ git clone https://aur.archlinux.org/paru.git
$ cd paru
$ makepkg -si
GUIのインストール(GNOME on Xorg)
- Xorgのインストール
waylandにしてもよかったが、まだ問題が多い(?)らしいので今回は無難にX.orgを使用する
pacman -S xorg-server xorg-server-utils xorg-xinit xterm
- ドライバのインストール
まず自分のGPUを確認するために以下を実行。
$ lspci -k | grep -A 2 -E VGA
今回はNVIDIAのTuring以降のモデルを使用したためnvidia-open
をダウンロード(Wiki参考)。その後xorg.conf
を自動設定するコマンドを使う。
$ paru -S nvidia-open nvidia-xconfig
$ nvidia-xconfig
この後もう一度lspci
をしてドライバが認識されているか確認する。
- GNOMEのインストール
とりあえず必要パッケージをダウンロード
$ paru -S gnome gnome-tweak-tool
次に~/.xinitrc
を以下のように編集する。
export XDG_SESSION_TYPE=x11
export GDK_BACKEND=x11
exec gnome-session
そうしたら、startx
でGNOMEに入れることを確認する。
$ startx
その他
日本語環境
- 入力環境
今回はSKKにした。GNOMEだとibusがデフォルトで入っているようなのでインストールは不要だった。/etc/environment
の環境変数を変更しておく。
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
ログインするときにibusを起動するため自動起動エントリを設定する。
$ ibus-daemon -drxR
そうしたらibus-skk
とskk-jisyo
をインストールし、設定>キーボードでskkを設定して完了。
$ paru -S ibus-skk skk-jisyo
- 日本語フォント
取り急ぎnoto-fonts-cjk
だけ入れた。Wikiを参照しつつ追加していくのもいいかもしれない。
$ paru -S noto-fonts-cjk
ターミナル周り
- ターミナルの選択
標準のターミナルでも満足だが、MacOSで使えるiterm2のホットキーが好きなので、似たことのできるGuakeを入れた。
$ paru -S guake
Guake Preferenceのアプリを開いて、ログイン時の自動起動設定とサイズ調整だけした。
- シェルの選択
個人的にfishシェルが好きなので変更する。
$ paru -S fish
$ sudo chsh -s /usr/bin/fish
以上!
最後に
これで次インストールするときに困らない(と信じたい)。
参考資料
Discussion