Arch Linuxで遊ぶために、VirtualBOXにArch Linuxをインストールしてみました。この記事はインストール時に行ったことのメモです。
今回はVirtualBOXの仮想マシンにインストールしていますが、気に入ったら実機にインストールすることも視野に入れているので、VirtualBOXにインストールする場合に不要なことも時々行っています。
【文体について】
この記事では、文字数節約のために「0. 事前準備」以降のパートを、「ですます」を省いた口調で記述しています。
- 参考にしたサイト
- 0. 事前準備
- 1. ダウンロード
- 2. 仮想マシンを起動
- 3. キーボードレイアウトを指定する
- 4. BIOSで起動しているかUEFIで起動しているか調べる
- 5. ネットワークインターフェースが認識されているか調べる
- 6. ネット接続
- 7. ネットに接続できているか確認する
- 8. システムクロックをNTPサーバーと同期する
- 9. パーティションを作成するデバイスを調べる
- 10. パーティションを作成する
- 11. パーティションをフォーマットする
- 12. ファイルシステムをマウントする
- 13. ミラーサーバーの設定
- 14. インストール
- 15. fstabの生成
- 16. chroot
- 17. タイムゾーンの設定
- 18. ローカライゼーション
- 19. コンソールのキーマップを永続化する
- 20. /etc/hostnameの作成
- 21. /etc/hostsの編集
- 22. ネットワークの設定
- 23. Initramfsの作成(←必要なし)
- 24. rootのパスワードを設定する
- 25. 一般ユーザーの作成
- 26. sudoの設定
- 27. マイクロコードをインストール
- 28. os-proberをインストール
- 29. GRUBのインストールと設定
- 30. networkmanagerをインストール
- 31. chrootを抜けて、システムを終了する
- 32. Arch Linuxを起動する
- 33. ログイン
- 34. ネットワークの接続状況を調べる
参考にしたサイト
(1) Arch Linux インストール
(2) 【入門】猿でもわかるArch Linuxインストール方法 | FascodeNetwork Blog
Arch Linuxのインストールガイドと上記2つのサイトを参考にしてインストール作業を行いました。このうち(1)はとても丁寧に記述してあったので、大変参考になりました。
0. 事前準備
VirtualBOX上にArch Linuxをインストールするための仮想マシンを新規作成しておく。
1. ダウンロード
https://www.archlinux.jp/download/ にミラーサーバーの一覧があるので、「日本のサーバー」に並んでいるリンク先から以下の2つをダウンロードする。
archlinux-2022.11.01-x86_64.iso sha256sums.txt
sha256sumsをチェックするには、ダウンロードした2つのファイルを同じディレクトリに保存して、以下のコマンドを実行する。
sha256sum -c sha256sums.txt
コマンド実行後に、次の行が表示されていればOK。
archlinux-2022.11.01-x86_64.iso: 完了
2. 仮想マシンを起動
ダウンロードした「archlinux-2022.11.01-x86_64.iso」を仮想マシンのストレージにセットして仮想マシンを起動する。
3. キーボードレイアウトを指定する
デフォルトではキーボードレイアウトがUS配列になっているので、US配列キーボードを使っている場合、やることは無い。
もし日本語配列のキーボードを使用している場合は、次のコマンドを実行する。
loadkeys jp106
4. BIOSで起動しているかUEFIで起動しているか調べる
Arch Linuxのインストールガイドによると、次のコマンドを実行して正常に結果が表示されればUEFIモードで起動している。
ls /sys/firmware/efi/efivars
BIOSモードで起動している場合、「No such file or directory」と表示される。
私の環境で
ls /sys/firmware
としたところ、acpi, dim, nemmapというディレクトリしか無かった(efiというディレクトリが無いのでBIOSモードで起動していることが分かる)。
5. ネットワークインターフェースが認識されているか調べる
無線であれ有線であれ、そもそもPCのネットワークインターフェースがArch Linuxに認識されていないとネット接続できないので、それを以下のコマンドで調べる。
ip link
私の環境では「enp0s3」が認識されていた。
6. ネット接続
有線LANの場合、何もしなくてもネット接続した状態になっているので、やることは無い。 (無線LANで接続するには iwctlを使うらしい)
7. ネットに接続できているか確認する
pingを使ってネットに接続できているか調べる。たとえば、
ping archlinux.jp
を実行して、応答があればネットに接続できている。
8. システムクロックをNTPサーバーと同期する
timedatectl set-ntp true
9. パーティションを作成するデバイスを調べる
VirtualBoxの仮想マシンにはまだパーティションが無いので、作成する必要がある。lsblk(ブロックデバイスの一覧を表示するコマンド。list blockdevices)を実行する。
lsblk
私の環境では、以下の3つが表示された。
loop0 sda sr0
この3つのうち、パーティションの作成対象となるのは、TYPEという列が「disk」になっているもの。 「disk」になっているのはsdaだけなので、パーティションを作成する対象はsda(環境によっては、sdb等になっている場合もある)。
参考にしたサイト(1)によると、loop0とsr0はインストールメディアに関連するデバイスとのこと。ちなみに、loop0のTYPEは「loop /run/archiso/airootfs」、sr0のTYPEは「rom」となっていた。
10. パーティションを作成する
先述したとおり、sdaにパーティションを作成する。
sdaは/dev/の直下にある(つまり、/dev/sda)。
以下では、Arch Linuxに割り当てる領域が30GBあり、そのうち2GBをスワップ領域に割り当てるという例で話を進める(ここではスワップ領域を作成しているが、スワップ領域は無くても問題ない)。
cfdisk /dev/sda
を実行して、cfdiskを起動する。
まずは、Arch Linuxをインストールするパーティションを作成する。
(1)「New」を選択した状態でEnter押下 (2) Partition size : 28G としてEnter押下 (3)「Primary」を選択した状態でEnter押下 (4)「Bootable」を選択した状態でEnter押下
ここまでで30GBのうち28GBのパーティションができたので、今度は残る2GBをスワップパーティションにする。
この段階で、画面には
/dev/sda1 Free space
の2行がある。カーソルキーを使って「Free space」という行を選択した状態にする。
この領域を次の手順でスワップ領域にする。
(1)「New」を選択した状態でEnter押下 (2) Partition size : 2G としてEnter押下 (3)「Primary」を選択した状態でEnter押下 (4)「Type」を選択した状態でEnter押下 (5)「Linux swap / Solaris」を選択した状態でEnter押下
以上の操作で作成した2つのパーティションを/dev/sdaに書き込む。
「Write」を選択した状態でEnterを押下
この時「Are you sure you want to write the partiotion table to disk?」と聞かれるので
yes
と入力してEnterを押下する。
最後に
「Quit」を選択した状態でEnterを押下
することにより、cfdiskを終了する。
なお、lsblkコマンドを実行すると、sdaの下にsda1とsda2が表示される。この時、sda1とsda2のTYPE列にはパーティションを示す「part」が表示される。
11. パーティションをフォーマットする
まずは/dev/sda1をフォーマットする
mkfs.ext4 /dev/sda1
mkswap /dev/sda2
結果をチェックしたい場合は
lsblk –fs
を実行する。この時、sda1にext4と、sda2にswapと表示されていればOK。
swapon /dev/sda2
12. ファイルシステムをマウントする
mountコマンドでファイルシステムをマウントする。
mount /dev/sda1 /mnt
BIOSモードでは不要だが、UEFIモードで作業している場合はEFIシステムパーティションもマウントする必要がある。なお、インストールガイドでは、EFI システムパーティションを/mnt/bootにマウントしている。
13. ミラーサーバーの設定
パッケージのダウンロードに使われるミラーサイトは次のファイルに記述されている。
/etc/pacman.d/mirrorlist
このファイルを編集する前にバックアップを取っておく。
cd /etc/pacman.d cp mirrorlist mirrorlist.bak
次に以下のページで日本のミラーサイトを調べる。
https://www.archlinux.jp/mirrors/status/
このURLを開いたら、次のように表示された。
ミラー URL 接続成功率 μ 遅延 (hh:mm) μ 接続時間 (s) σ 接続時間 (s) ミラースコア http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/ 100.0% 0:34 0.04 0.10 0.1 http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/ 96.7% 2:30 0.00 0.03 2.0 https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/ 100.0% 0:34 0.05 0.02 0.1 http://mirrors.cat.net/archlinux/ 95.0% 16270:55 0.09 0.45 15,457.0 https://mirrors.cat.net/archlinux/ 95.0% 16270:55 0.12 0.28 15,456.9
接続成功率とミラースコアを見ると、jaist.ac.jpが一番良さそうで、次に良さそうなのがtsukuba.wide.ad.jp。
/etc/pacman.d/mirrorlistについて、インストールガイドに「上の方に書かれているミラーほど、パッケージのダウンロードで優先されます。(中略)設定したミラーリストが pacstrap によって後のインストール時にコピーされます。そのため、正しく設定しておいた方がよいでしょう」という記述がある。
参考にしたサイト(2)に次のコマンドが記載されていたので、これを実行した。
pacman -Sy wget (元記事では -Sとなっていたが上手く行かなかったので -Syを使用) wget -O /etc/pacman.d/mirrorlist https://0u0.biz/YNhG
この結果、/etc/pacman.d/mirrorlistの中に日本向けミラーサイトが記述された状態になる。
ただし、/etc/pacman.d/mirrorlistの中身は全てコメント行になっているので、「#Server」となっている部分を「Server」にする(行頭の # を除去する)必要がある。
それと、先ほど引用したように、上の方に書かれているミラーほどパッケージのダウンロードで優先されるとのことなので、ファイル内のミラーサイトの順番を変更することにした。
以上の作業を終えた結果、/etc/pacman.d/mirrorlistは次のようになった。
Server = https://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch Server = https://mirrors.cat.net/archlinux/$repo/os/$arch Server = http://mirrors.cat.net/archlinux/$repo/os/$arch #Server = https://mirror.saebasol.org/archlinux/$repo/os/$arch
(おまけ)
ファイルを見たら、https://www.archlinux.jp/mirrors/status/ で調べた時には登場しなかった「saebasol.org」というミラーサイトが含まれていた。使う気にならなかったので、この行だけコメントのままにしておいた。
14. インストール
必要そうなものをインストール。
pacstrap -K /mnt base base-devel linux linux-headers linux-firmware bash-completion man-db man-pages texinfo vim
ここでは、/mntに対して、次のものをインストールしている。
base base-devel linux linux-headers linux-firmware bash-completion man-db man-pages texinfo vim
テキストエディタとしてvimをインストールしているが、vimを使わない人はnanoをインストールしておけば無難。
他に、ネットワーク関係のソフト(ネットワークマネージャーや DHCP クライアント)も必要かもしれないが、インストールガイドに「chrootを実行した後にpacmanコマンドでインストールすることも可能です」と書かれていたので、この時点では行わなかった。
15. fstabの生成
次のコマンドを実行する。
genfstab -U /mnt >> /mnt/etc/fstab
念のため、/mnt/etc/fstabの中身を確認する(おかしな点があれば編集する)。
インストールガイドによると「UUID を使う場合は -U オプション、ラベルを使う場合は -L オプション」を使う。
参考にしたサイト(1)に、UUIDを使うメリットが次のように書かれていた。
物理的にディスクの接続順を変更することがないのであれば、/dev/... でも構いませんが、PC 構成が変わることがあるのであれば、UUID または PARTUUID を使った方が良いでしょう。
※ UUID は、フォーマットする度に値が変更されます。
※ PARTUUID は、GPT の場合のみ使えます。フォーマットしても、値が変化しません。
16. chroot
以下のコマンドを実行して、新しくインストールしたシステムに chrootする。
arch-chroot /mnt
17. タイムゾーンの設定
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc (これにより、/etc/adjtimeが生成される)
2行目に関しては「hwclock --systohc --utc」としている例もネット上にあった。
詳しいことは不明。以下のページを後ほど読む予定。
https://wiki.archlinux.jp/index.php/%E6%99%82%E5%88%BB#.E6.99.82.E5.88.BB.E7.B3.BB
18. ローカライゼーション
/etc/locale.gen を開き、次の2行をアンコメント(行頭にある # を削除)して保存。
en_US.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8
次のコマンドを実行する。
locale-gen
画面に次のように表示される。
Generating locales… en_US.UTF-8… done ja_JP.UTF-8… done Generation complete.
/etc/locale.conf を作成して、中に「LANG=en_US.UTF-8」と記述する。
次のコマンドを実行すればOK。
echo "LANG=en_US.UTF-8" > /etc/locale.conf
参考にしたページによると、この段階ではまだロケールを日本語にしてはいけないとのこと。
19. コンソールのキーマップを永続化する
コンソールのKEYMAP(キーボードレイアウト)は、デフォルトではUS配列となっている。そのため、日本語配列のキーボードを使っている人がコンソールを使う時に「loadkeys jp106」というコマンドを実行する必要がある。
この作業を毎回行う手間を省くために、/etc/vconsole.conf というファイルを用意して、ファイルの中に「KEYMAP=jp106」と記述する。
次のようにechoコマンドとリダイレクトで作成すればOK。
echo "KEYMAP=jp106" > /etc/vconsole.conf
20. /etc/hostnameの作成
ホストネームとして好きな名前を/etc/hostnameに記述する。仮にホストネームをtakoyakiにするのであれば次のコマンドを実行する。
echo "takoyaki" > /etc/hostname
21. /etc/hostsの編集
/etc/hostsに次の2行を記述する(ホストネームがtakoyakiの場合)。
127.0.0.1 localhost.localdomain localhost takoyaki ::1 localhost.localdomain localhost takoyaki
(列と列の間は、スペースで区切っても、TABで区切っても可)
22. ネットワークの設定
これはインストールガイドに書かれていなかったので、参考にしたサイト(1)の次のページを元に作業した。 https://aznote.jakou.com/archlinux/install4.html
有線LANと無線LANでやり方が異なるが、私の場合はVirtualBOXなので、dhcpcdを使うことにした。
先に、ネットワークインターフェース名を調べておく。
ip link
を実行したところ、私の環境では「lo」と「enp0s3」と表示された。
よって、enp0s3を使用する。
以下のコマンドでdhcpcdをインストールする。
pacman -S dhcpcd
起動時にdhcpcdが有効になるように以下のコマンドを実行する(@以下がネットワークインターフェース名)。
systemctl enable dhcpcd@enp0s3
23. Initramfsの作成(←必要なし)
インストールガイドに次の記述がある。私の場合は不要だが、人によっては必要になるかも?
pacstrap でカーネルパッケージをインストールしたときに mkinitcpio が実行されている ため、普通は新しい initramfs の作成は必要ありません。 LVM, システム暗号化, RAID 環境などであれば、 mkinitcpio.conf(5) を編集して以下の コマンドで initramfs を再生成してください mkinitcpio -P
24. rootのパスワードを設定する
以下のコマンドでrootのパスワードを設定する。
passwd
25. 一般ユーザーの作成
ここでは、pandaという一般ユーザーを作るという想定で話を進める。
groupadd panda useradd -m -g panda -s /bin/bash panda
1行目で、pandaというグループを作成。 2行目で、pandaというユーザーを作成、-mでホームディレクトリを作成、-g でユーザーをpandaグループに属させ、-sでシェルをbashにする。
以下のコマンドで、pandaのパスワードを設定する。
passwd panda
26. sudoの設定
sudoグループを作り、そこにpandaというユーザーを所属させる
groupadd sudo usermod -aG sudo panda
1行目で、sudoというグループを作成。
2行目で、sudoグループにpandaを加える(-Gだけだと所属グループの変更になるので、-aG)。
次にvisudoコマンドを実行して、/etc/sudoersを編集する。やることは、以下の行の先頭にある # を除去して保存するだけ。
# %sudo ALL=(ALL:ALL) ALL
27. マイクロコードをインストール
次のコマンドでマイクロコードをインストールする。
pacman -S intel-ucode
参考にしたサイト(1)によると、マイクロコードはCPU のファームウェア。CPUの動作に修正があった時に更新されるものだが、インストールしただけでは更新されない。
更新はブートローダーが行う。後述するGRUBの設定時にgrub-mkconfigを実行すると、更新に関する設定を行ってくれる。
よって、grub-mkconfigを実行するよりも前にマイクロコードのパッケージをインストールしておく必要がある。
なお、Intel用のマイクロコードのパッケージはintel-ucodeで、AMD用のものはamd-ucode。私の場合はCPUがIntel製なので、intel-ucodeをインストールした。
28. os-proberをインストール
pacman -S os-prober
参考にしたサイト(1)に、UEFIではなく「BIOS の場合、os-prober パッケージをインストールしておくと、grub-mkconfig 実行時に、他のパーティションにインストールされている OS を自動で検出して設定してくれます。複数の OS をインストールしている場合は、これを使うと便利です。」との記述があったので、インストールしておいた。
VirtualBoxの仮想マシンをデュアルブートにすることは無いので本来この作業は不要だが、仮想マシンではなく実機にArch Linuxをインストールする時には必要になるので、ここに記述した。
29. GRUBのインストールと設定
以下は、「UEFIではなくBIOSで起動、GRUBをMBRに書き込む」ことを前提にしている。
pacman -S grub grub-install --target=i386-pc /dev/sda
ブートローダーはパーティション(sda1やsda2)ではなく、デバイスのMBRに書き込むので/dev/sdaを指定している。
参考にしたサイト(1)によると、64bitマシンにインストールする場合でも –target=i386-pc で良いとのこと。
最後に次のコマンドを実行する。
grub-mkconfig -o /boot/grub/grub.cfg
30. networkmanagerをインストール
参考にしたサイト(2)に「再起動後はネットに接続されていない可能性もある」というアドバイスがあったので、networkmanagerをインストールする。
pacman -S networkmanager
今回はVirtualBoxの仮想マシンにインストールしているので、再起動後にネット接続していないということは無いが、実機にインストールする時のことを想定してここに記述した。
31. chrootを抜けて、システムを終了する
exit umount -R /mnt swapoff /dev/sda2 shutdown -h now
32. Arch Linuxを起動する
仮想マシンのストレージから「archlinux-2022.11.01-x86_64.iso」を除去して仮想マシンを起動すると、Arch Linuxが起動する。
33. ログイン
画面にプロンプトが表示されているので、次のようにする。
(1)rootと入力してEnter押下 (2)rootのパスワードを入力してEnter押下
34. ネットワークの接続状況を調べる
参考にしたサイト(1)に「/etc/resolv.conf で DNS サーバーの IP アドレスの設定が行われていない場合は、ネットに接続できません」と書かれていたので、以下のコマンドを実行した。
cat /etc/resolve.conf
私の環境では次のように表示された(問題なし)。
nameserver 192.168.1.1
今回は必要無かったが、参考にしたサイト(2)によると、ネットワーク接続ができていない場合は、次のコマンドを実行するとのこと。
systemctl enable NetworkManager systemctl start NetworkManager
以上で、インストール作業は終了。