Arch Linux インストールの流れ
この記事は, 2020 年 10 月 13 日に行った Arch Linux のインストールに基づいています.
使用したインストールメディアは, 2020 年 10 月 01 日のリリース (カーネル: 5.8.12) です.
また,インストール作業中はインターネットに接続されている必要があります.
公式のインストールガイドが丁寧に書かれているので,これに従っていれば基本的に大丈夫です.
-
ここから最新のインストールメディアをダウンロードします.古いイメージを使うとよく失敗します.
-
ここの説明に従って, USB メモリに書き込みます.
-
USB メモリを挿し込んだ状態でマシンを起動し, UEFI 画面から USB メモリを選択して起動します.
-
起動するとまず選択肢が表示されますが,デフォルトの
Arch Linux install medium (x86_64, UEFI)
を選択します(何もせずに放置しても自動的に選択されるので大丈夫です).自動ログインが行われ,次のように表示されて入力を受け付ける状態になります.archiso login: root (automatic login) To install Arch Linux follow the installation guide: https://wiki.archlinux.org/index.php/Installation_guide For Wi-Fi, authenticade to the wireless network using the iwctl utility. Ethernet and Wi-Fi connections using DHCP should work automatically. After connecting to the internet, the installation guide can be accessed via the convenience script Installation_guide. root@archiso ~ #
-
デフォルトのキーボードレイアウトは US キーボードです.インストール中に他のキーボードレイアウトを使用したい場合
loadkeys
コマンドを使って切り替えます(これはインストール完了後に反映されるものではない).例えば Programmer Dvorak の場合:# loadkeys dvorak-programmer.map
-
UEFI モードであることを確認します.
# ls /sys/firmware/efi/efivars
ここで
No such file or directory
などと出力されたら, UEFI モードではなく BIOS モードで起動しています. UEFI モードに切り替えることができない場合,この記事とは違うやり方でインストールすることになります. -
インターネット接続を確認します.
# ping -c3 www.google.com
有線でつないでいれば,起動した際に自動的に接続されているはずです.無線の場合,iwctl のようなコマンドを用いて接続します.
-
gdisk
あるいはcgdisk
を使ってディスクをパーディションに分けます.ディスクには/dev/sda
のような名前が付いています.以下ではgdisk
を使って/dev/sda
のパーティションを作る場合を説明します.# gdisk /dev/sda
とすると,
Command (? for help):
と出力されてコマンド入力を受け付けるようになります.
まずo
で新しいパーティションテーブルを作成します.Command (? for help): o This option deletes all partitions and creates a new protective MBR. Proceed? (Y/N): Y
UEFI の場合,まず
/boot
用の EFI System パーティション (ESP) を作る必要があります. Hex Code として EF00 を指定することで EFI system とし, 512 MB 用意します.デフォルトのままのところは何も打たずにエンターを押せば良いです.Command (? for help): n Partition number (1-128, default 1): First sector (〜) or {+-}size{KMGTP}: Last sector (〜) or {+-}size{KMGTP}: +512M Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): EF00 Changed type of partition to 'EFI System'
残りの部分は,自由に分けます.もう何も分けずに全て
/
にしても良いですし,/
と/home
で分けるのも良いでしょう.あるいはスワップ領域を作っても良いです.以下では,/
に 100 GB 割り当てて,残りを/home
に割り当てることにします.Command (? for help): n Partition number (1-128, default 2): First sector (〜) or {+-}size{KMGTP}: Last sector (〜) or {+-}size{KMGTP}: +100G Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): n Partition number (1-128, default 3): First sector (〜) or {+-}size{KMGTP}: Last sector (〜) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 8302 Changed type of partition to 'Linux /home'
OS インストール後のディレクトリとパーティションの関係を,次のようにしようとしているわけです:
/ → /dev/sda2 ├ /boot → /dev/sda1 ├ /home → /dev/sda3 ├ /etc └ ...
/
の中身のうち,/boot
と/home
だけがそれぞれ/dev/sda1
と/dev/sda3
にあり,それ以外の部分は全て/dev/sda2
にある状態です.
作成したパーティションテーブルをディスクに書き込みます.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
-
各パーティションをフォーマットします.
ESP は FAT32 でフォーマットします.# mkfs.vfat -F32 /dev/sda1
他のパーティションは ext4 でフォーマットします.
# mkfs.ext4 /dev/sda2 # mkfs.ext4 /dev/sda3
-
各パーティションをマウントします.まず最初に,後の
/
である/dev/sda2
を,/mnt
自体にマウントします.# mount /dev/sda2 /mnt
他は,
/mnt
の下にディレクトリを作ってマウントします.今回の例では/dev/sda1
が後の/boot
,/dev/sda3
が後の/home
なので# mkdir /mnt/boot /mnt/home # mount /dev/sda1 /mnt/boot # mount /dev/sda3 /mnt/home
とします.これで
/mnt → /dev/sda2 ├ /mnt/boot → /dev/sda1 └ /mnt/home → /dev/sda3
という形になり,インストール後のディレクトリとパーティションの関係と同じになります.
-
この後
pacstrap
で Arch Linux の本体をディスクへとインストールするのですが,その前にミラーリストを設定します.# vim /etc/pacman.d/mirrorlist
このファイルを編集して,日本のミラーである jaist.ac.jp を先頭に持ってきます.
このときさらに,Server = https://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
という行を追加しても良いと思います.つまり,Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = https://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch
の 2 行が,他の
Server =
の行よりも前にあれば大丈夫です. -
pacstrap
コマンドで Linux を含む各種パッケージをインストールします.# pacstrap /mnt base base-devel linux linux-firmware vi vim dhcpcd intel-ucode
- ファイルの編集に用いる
vi
とvim
は,nano
やemacs
などでも良いです(この記事では今後の設定にvim
を使います).またvi
をインストールしない場合は,あとでvisudo
を使う際に少し設定が必要になります. - CPU が Intel ではなく AMD の場合
intel-ucode
の代わりにamd-ucode
とします. - ネットワークに関しては,有線接続であれば
dhcpcd
だけで大丈夫です.無線接続の場合これに加えてwpa_supplicant
が必要になります.
エンターを押し続けて,言われたものを全てインストールします.
- ファイルの編集に用いる
-
ファイルシステムテーブルを作成します.
# genfstab -U /mnt >> /mnt/etc/fstab
個人的には,後でパーティション分けを変更したりするときのために,
/etc/fstab
内にメモを書くことにしています. Windows/Linux でデュアルブートしている場合などは,後で分からなくならないようにここで/mnt/etc/fstab... # /dev/sda1: FAT32; Linux/Windows boot partition (shared) # /dev/sda2: ntfs; Windows reserved # /dev/sda3: ntfs; Windows C: drive # /dev/sda4: ext4; Linux root # /dev/sda5: ext4; Linux home # /dev/sda6: FAT32; Linux/Windows shared partition # /dev/sda7: ntfs; Windows recovery
などと書いておくと便利です.
-
ルートを
/mnt
に切り替えます.# arch-chroot /mnt
新たにシェル (bash) が起動し,さっきまでの
/mnt
が/
になります.つまりディレクトリとパーティションの関係は/ → /dev/sda2 ├ /boot → /dev/sda1 ├ /home → /dev/sda3 ├ /etc └ ...
となっていて,インストール完了後に使うときと同じ状態になるわけです.
-
諸設定
- ロケールの設定
# vim /etc/locale.gen
# en_US.UTF-8 UTF-8
と書かれた行を探し,最初の#
を削除します.同様に# ja_JP.UTF-8 UTF-8
と書かれた行を探し,最初の#
を削除します.そして次を実行します.# locale-gen
- 言語の設定
# echo LANG=en_US.UTF-8 > /etc/locale.conf # export LANG=en_US.UTF-8
- キーボードレイアウトとフォントの設定例えば次のように設定します:
# vim /etc/vconsole.conf
/etc/vconsole.confKEYMAP=dvorak-programmer.map FONT=Lat2-Terminus16
- 場所の設定
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
- 時刻の設定
# hwclock -u -w
- ホスト名の設定
# echo (ホスト名) > /etc/hostname
- インターネット接続の設定
# systemctl enable dhcpcd
- root パスワードの設定
# passwd
- ロケールの設定
-
ブートローダのインストールと設定を行います.
現在 Arch Linux は起動した状態で,ここからずっと起動したままの状態で使い続けることが可能です.いわば暖炉の中で薪が燃えている状態です.あなたはその火を使ってさまざまなことができます.
しかし,あなたはまだマッチを持っていません.今燃えている火は, USB メモリの archiso が点火してくれた火です.暖炉と薪は整いましたが,マッチが無いことには火を付けることができません.
ここでマッチとなるのがブートローダです.今回は systemd-boot というブートローダを用います.次のコマンドを打ってインストールします.# bootctl --path=/boot install
この後,ブートローダの設定を行い, USB メモリを抜いて再起動します.ここで設定を間違えると再起動に失敗します.もし失敗した場合は,慌てることなく USB メモリを挿し直して起動し,⑦まで行ったら⑧と⑨を飛ばして⑩を行った後,⑭で arch-chroot してここに戻ってきて下さい.
設定するのは
/boot/loader/entries
ディレクトリと/boot/loader/loader.conf
ファイルの 2 つです.-
/boot/loader/entries
# cd /boot/loader/entries
/boot/loader/entries
ディレクトリの下には,起動モードの選択肢 1 つごとに 1 つのファイルを作ります.拡張子は .conf です.今回は arch.conf (普段)と arch-fallback.conf (何かあったとき用のフォールバック)の 2 つを用意します.
まず,ルートパーティション(今回は/dev/sda2
)の PARTUUID を調べ,arch.conf
に出力します.# blkid -s PARTUUID -o value /dev/sda2 > arch.conf
ここで
arch.conf
を開くと, PARTUUID が書き込まれているはずです.これを編集して次のようにします./boot/loader/entries/arch.conftitle Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options root=PARTUUID=(/dev/sda2 の PARTUUID) rw
Intel ではなく AMD の CPU を使っている場合は
/intel-ucode.img
の代わりに/amd-ucode.img
となります.同様にarch-fallback.conf
は次のようにします./boot/loader/entries/arch-fallback.conftitle Arch Linux Fallback linux /vmlinuz-linux initrd /initramfs-linux-fallback.img options root=PARTUUID=(/dev/sda2 の PARTUUID) rw
-
/boot/loader/loader.conf
# cd .. # vim loader.conf
ここに設定を書いていきます.
editor no
の一行は必ず書きましょう.これを書いていないと,起動画面で e を押してinit=/bin/bash
を書き加えることで,パスワード無しで root 権限が手に入ってしまうようになります.
設定例として,起動したら即座に Arch Linux ( fallback でない方) が選択されて起動するようにします.そのためには「タイムアウト:0」と「デフォルト:Arch Linux」の 2 つを指定する必要があります.タイムアウトの方は何も書かなくても自動で 0 になります.明示的に書くとしたらtimeout 0
です.デフォルトのローダはdefault (ファイル名)
と書いて指定する。ファイル名のところには上で作ったファイル名arch.conf
の拡張子を除いた部分(つまりarch
)を書きます.最終的には次のようになります:/boot/loader/loader.confeditor no default arch
他の設定例:
/boot/loader/loader.confeditor no timeout 3 default arch
この場合,起動してから 3 秒間 Arch Linux / Arch Linux Fallback の選択肢が表示され,その間に何もしないと Arch Linux の方が起動するようになります.
timeout 0
のときは,スペースキーを押しながら起動すると, Arch Linux / Arch Linux Fallback の選択肢が表示されるようになります.
-
-
USB メモリを抜いて再起動します.
# exit # reboot
起動したら
login: root password: (パスワード)
でログインします.
-
ユーザを追加します.
# useradd -m -G wheel (ユーザ名) # passwd (ユーザ名)
-
sudoers ファイルを設定します.
# visudo
# %wheel ALL=(ALL) ALL
と書かれた行を探してコメントアウトします.個人的にはこのときDefaults timestamp_timeout=0
と追記することにしています. -
今作ったユーザでログインし直します.
# exit
おめでとうございます! Arch Linux のインストールが完了しました.
この記事はここで終わりとします.ここから先の設定に関しては諸設定集を読んで下さい.
Discussion