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): YUEFI の場合,まず
/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) rwIntel ではなく 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