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