はじめに
Arch Linuxを何度かインストールしてきて,自分なりのインストールの仕方が固まってきたので書き残しておきます。なにか気になることがあればArchWikiに多分書いてあると思うので見てみて下さい。
環境として
- UEFI対応
- NetworkManager
- WMはgnome
- imはFcitx5+mozc
- NVIDIAのGPU
- 有線LANに接続
- 言語は英語,英語配列キーボード,日本語環境も入れる
を想定しています。多少違っても一部分を読み替えるだけで行けるはずです。
また,Arch Linuxをインストールしてみようと思う人はすでにUbuntuとか入れて触ったことがある人だと思うので,ブートUSBの作り方とかは適当に説明します。
そもそもArch Linuxって何?って方ここやここを読んでみてください。
インストールメディアの作成と起動
isoイメージをダウンロードします。物理マシンにインストールする場合はrufusなりddなりでUSBメモリに書き込みます。毎月1日に新しいイメージが公開されています。
USBをインストールしたいPCに挿して起動,BIOS(UEFI)からメディアを選択します。セキュアブート等はOFFにしておきましょう。
こんな感じのメニューが出てきますので一番上のInstallを選択します。ちなみにこのときにスピーカーから爆音でマリオのコインの音が鳴るので注意。
ちょっと待ってコマンドが打てるようになるまで待ちます。
ディスクの設定
最初にインストールするディスクのパーティションを切ります。
UEFIの場合には最低でも2つに分ける必要があります。EFI用とルートディレクトリ用です。Swapはなくても動きますが作っておきましょう。
番号 | サイズ | 説明 |
---|---|---|
0 | ~1GBくらい | EFI用ディレクトリ |
1 | 自由 | ルートディレクトリ |
2 | 任意(必要ではない) | Swap用 |
この3つ(2つ)に最低でも分ける必要があります。ほかにパーティションを分けたい場合にはご自由に。以下では/dev/sdaを上の3つに分けるものとします。環境に合わせて適宜読み替えて下さい。
それぞれの容量は,EFI用に1GB,Swap用に8GB,残りを/用にしています。
fdisk -l
でディスク一覧からインストールするディスクを確認します。今回は例として/dev/sda
にインストールしていきます。nvmeだったり仮想環境だとちょっと変わるので読み替えて下さい。当然ですがデータ消えるので消えて大丈夫なところを選びましょう。
# fdisk -l
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG MZNTE256
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CD2965CA-75BB-4D61-B6C2-BC0E97884C7D
Disk /dev/sdb: 14.32 GiB, 15376318464 bytes, 30031872 sectors
Disk model: SanDisk 3.2Gen1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x99a0587f
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 64 1755135 1755072 857M 0 Empty
/dev/sdb2 1755136 1785855 30720 15M ef EFI (FAT-12/16/32)
Disk /dev/loop0: 748.33 MiB, 784683008 bytes, 1532584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
gdisk
を使ってパーティションを切ります。[]の中が入力するところです。[]だけのときはそのままEnter
を押して下さい。
# gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.9.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): [o]
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): [y]
Command (? for help): [n] //EFI
Partition number (1-128, default 1): []
First sector (34-500118158, default = 2048) or {+-}size{KMGTP}:[]
Last sector (2048-500118158, default = 500117503) or {+-}size{KMGTP}: [+1G]
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] //root
Partition number (2-128, default 2): []
First sector (34-500118158, default = 2099200) or {+-}size{KMGTP}: []
Last sector (2099200-500118158, default = 500117503) or {+-}size{KMGTP}: [-8G]
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): [n] //swap
Partition number (3-128, default 3): []
First sector (34-500118158, default = 483342336) or {+-}size{KMGTP}: []
Last sector (483342336-500118158, default = 500117503) 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: 500118192 sectors, 238.5 GiB
Model: SAMSUNG MZNTE256
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 6FF68645-A01E-4725-B42C-780AA657C45D
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 500118158
Partitions will be aligned on 2048-sector boundaries
Total free space is 4062 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 2099199 1024.0 MiB EF00 EFI system partition
2 2099200 483340942 229.5 GiB 8300 Linux filesystem
3 483342336 500117503 8.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.
次に作ったパーティションをフォーマットします。EFI用のパーティションはFAT32である必要があります。私はルート用のものはext4にしていますが,他のファイルシステムにすることも出来ます。詳しくはArchwiki参照。
//EFI用,FAT32
# mkfs.fat /dev/sda1
mkfs.fat 4.2 (2021-01-31)
//ルート用,ext4
# mkfs.ext4 /dev/sda2
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 60155217 4k blocks and 15040512 inodes
Filesystem UUID: fd5f378d-01ca-4221-96a2-9f64f1471691
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
//スワップ用
# mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8588881920 bytes)
no label, UUID=efc6df54-d35b-4076-bef6-60d294b1261f
それぞれを/mnt
以下にマウントしていきます。efi用パーティションは/mnt/boot
にマウントします。ここにブートローダーがインストールされます。
# mount /dev/sda2 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
# swapon /dev/sda3
パッケージのインストール
いよいよpacstrap
を使って/mnt
にカーネルとかのパッケージをインストールしていきます。が,その前にいくつかコマンドを実行します。
# pacman -S archlinux-keyring
この後まれに鍵がどうだでエラーを吐かれることがあるのでその対策でarchlinux-keyring
を更新しておきます。
次に,reflector
を使ってミラーリストを更新します。日本またはオーストラリアのサーバーで,httpsで24時間以内に更新されているサーバーをレイテンシが短い順に並び替えてくれます。これでこの後のインストールが結構早くなります。
# reflector --country Japan,Australia --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
nano /etc/pacman.conf
で,以下の部分のコメントアウトを消します。これで出力がカラーになり,ダウンロードが並列化されて早くなります。
# Misc options
#UseSyslog
Color //ここ
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 5//ここ
ようやくpacstrap
で最低限のパッケージのインストールをします。ここで欲張っていろいろ入れると面倒になるので最低限のものだけにしておきます。
# pacstrap /mnt \
base \
linux \
linux-firmware \
linux-headers
さっき変更した設定ファイルをコピーしてchroot
します。genfstab
でfstab
を生成。
# cp /etc/pacman.conf /mnt/etc/pacman.conf
# cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
# genfstab -U /mnt >> /mnt/etc/fstab
# arch-chroot /mnt
chroot
したら必要なパッケージを入れていきます。
# pacman -Sy
# pacman -S \
networkmanager \
sudo \
gdm \
fcitx5 \
fcitx5-im \
fcitx5-configtool \
fcitx5-mozc \
git \
gcc \
make \
automake \
pkgconf \
fakeroot \
git \
curl \
wget \
grub \
efibootmgr \
os-prober \
emacs \
go \
adobe-source-han-sans-jp-fonts \
gnome-terminal \
which
userの追加とパスワードの設定
# useradd -m -G wheel username
# passwd username //userのパスワード
New password:
Retype new password:
passwd: password updated successfully
# passwd // rootのパスワード
New password:
Retype new password:
passwd: password updated successfully
visudoでsudo権限の設定をします。 エディタはお好みで。
# EDITOR=emacs visudo
以下の部分のコメントアウトを解除します
%wheel ALL=(ALL:ALL) ALL
タイムゾーンの設定。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
言語の設定。
# emacs /etc/locale.gen
/etc/locale.gen
の2行をコメントアウト解除します。
en_US.UTF-8
ja_JP.UTF-8
# locale-gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
マシンの名前を/etc/hostname
に書く。
# echo hostname > /etc/hostname
ブートローダーのインストール。Grubを使います。UEFIではない場合はコマンドがちょっと変わります。
# grub-install --target=x86_64-efi --efi-directory=/boot --recheck --bootloader-id=archlinux
# grub-mkconfig -o /boot/grub/grub.cfg
NetworkManager
とgdm
とsystemd-timesyncd
,sshd
の起動設定
# systemctl enable NetworkManager gdm systemd-timesyncd sshd
一般ユーザーに切り替えてyay
のインストール。
# su username
$ cd
$ mkdir Downloads
$ cd Downloads
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
/etc/makepkg.conf
のMAKEFLAGS
の行を変えておくとコンパイルが早くなります。コア数と同じくらいにしましょう。
MAKEFLAGS="-j24"
ビルドします
$ makepkg -si
aurから必要なパッケージをインストールします。Gnomeの拡張機能を入れます。ChromeとかVScodeとかもyayで入れられます。
$ yay -S gnome-shell-extension-appindicator \
gnome-shell-extension-clipboard-indicator \
gnome-shell-extension-dash-to-dock \
gnome-shell-extension-kimpanel-git \
gnome-shell-extensions
最後にnvidiaのドライバをインストールします。他のところのGPUを使っている人はスキップしてOKです。
dkmsにすることでカーネルが更新されたときに自動で再ビルドしてくれるようになります。
NVIDIAのサイトからrunファイルをダウンロードしてインストールしてもいいですが面倒なので手抜きします。ドライバとかCUDAのバージョンを固定しないといけない人はそっちでもいいかもしれません。一応aurにnvidia-xxx-dkms
とかいうパッケージもあります。環境によってはちょっと時間かかるかもしれません。
$ yay -S nvidia-dkms
最後に再起動します。Ctrl+Dを適当に何回か押してsuとchrootを抜けます。
# reboot
再起動したらgnomeのログイン画面が立ち上がるはずです。お疲れ様でした。