← BACK TO COMPUTING
Linux / Virtual Machine

Arch Linux on KVM

KVM(Kernel-based Virtual Machine)上にArch Linuxをインストールするまでの手順とメモ。
ゼロからの環境構築を通じて、Linuxの仕組みを深く理解することを目指します。

なぜ Arch Linux なのか

Arch Linux は他のディストリビューションと一線を画す哲学を持っています。初心者向けの自動設定ツールをあえて排除し、 すべてを自分の手で組み上げることで、Linuxそのものへの理解が深まります。

軽量・高速

不要なパッケージが一切ない、必要最小限の構成から始まります。余分なデーモンやサービスが走らないため、リソース消費が極めて小さく、レスポンスが俊敏です。

🔧

高いカスタマイズ性

インストール直後は本当に最小限のシステムだけです。デスクトップ環境からカーネルパラメータまで、すべてを自分好みに構築できます。「自分だけのOS」を作れるのが最大の魅力です。

📦

ローリングリリース

Ubuntu のようなバージョン区切りがなく、常に最新のソフトウェアを使い続けられます。pacman と AUR(Arch User Repository)により、膨大なパッケージを管理できます。

① KVM の準備

KVM(Kernel-based Virtual Machine)はLinuxカーネルに組み込まれた仮想化技術です。 ハードウェアに近いレイヤーで動作するため、VirtualBoxなどと比較して高いパフォーマンスが得られます。

仮想化サポートの確認

まず、CPUがハードウェア仮想化(Intel VT-x / AMD-V)に対応しているか確認します。1以上の数値が表示されれば対応しています。

$ egrep -c '(vmx|svm)' /proc/cpuinfo

KVM 関連パッケージのインストール

QEMU(仮想化エミュレータ本体)、libvirt(仮想マシン管理デーモン)、virt-manager(GUIツール)などをインストールします。

$ sudo apt update
$ sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

ユーザーをグループに追加

自分のユーザーを libvirt グループと kvm グループに追加します。これにより、sudo なしで仮想マシンを操作できるようになります。変更を反映するには一度ログアウトが必要です。

$ sudo adduser $USER libvirt
$ sudo adduser $USER kvm

仮想ネットワークの起動

仮想マシンがインターネットに繋がるためのデフォルトネットワーク(NAT)を起動・自動起動設定します。

$ sudo virsh net-start default
$ sudo virsh net-autostart default
# 確認: Stateが "active" になっていればOK
$ sudo virsh net-list --all

② 仮想マシンの作成(Virt-manager)

Arch Linux 公式サイト から最新の ISO イメージをダウンロードし、Virt-manager で仮想マシンを作成します。

推奨リソース割り当て

項目 推奨値
メモリ 2048 MiB 以上
CPU 2 コア以上
ディスク 20 GiB 以上
ファームウェア UEFI

③ インストーラーの初期設定

ISOから起動すると、ライブ環境のBashシェルが立ち上がります。インストール開始前にキーボードとネットワークを確認します。

キーボードレイアウトの設定

日本語配列キーボードを使用している場合、デフォルトのUS配列だと記号の位置がずれて入力ミスの原因になります。 以下のコマンドで日本語配列(JIS 106/109 キー)に切り替えます。

$ loadkeys jp106

ネットワーク疎通確認

KVM のデフォルト仮想ネットワーク(NAT)経由でインターネットに接続できるかを確認します。 pacstrap でパッケージをダウンロードするために、ネットワーク接続は必須です。

$ ping -c 3 google.com

④ ディスクのパーティション設定

UEFI で作成した KVM 仮想マシンでは、ディスク名は /dev/vda になります(物理マシンの /dev/sda に相当)。 cfdisk という対話型ツールでパーティションを切ります。

1

cfdisk を起動して GPT を選択

UEFI環境では GPT(GUID Partition Table)を使います。起動後に選択画面が出るので gpt を選択します。

$ cfdisk /dev/vda
2

EFI パーティションを作成

「New」で 512 MiB を作成し、「Type」を EFI System に変更します。UEFIブートに必要なブートローダーファイルがここに置かれます。

3

Root パーティションを作成

残り全容量で「New」し、「Type」を Linux root (x86-64) にします。OSそのものがここにインストールされます。

4

「Write」で書き込んで「Quit」

変更はこの時点まで実際には適用されていません。必ず「Write」を選択してからツールを終了してください。

ファイルシステムの作成(フォーマット)

パーティションを作っただけでは使えません。各パーティションをフォーマット(ファイルシステムを書き込む)します。 EFIパーティションは FAT32、ルートパーティションは ext4 が標準的です。

# EFIパーティション(/dev/vda1)をFAT32でフォーマット
$ mkfs.fat -F 32 /dev/vda1

# ルートパーティション(/dev/vda2)をext4でフォーマット
$ mkfs.ext4 /dev/vda2

パーティションのマウント

フォーマットしたパーティションをインストール先としてマウントします。 /mnt がルートになり、その中の /mnt/boot に EFI パーティションをマウントします。

# ルートパーティションを /mnt にマウント
$ mount /dev/vda2 /mnt

# EFIパーティションを /mnt/boot にマウント(--mkdirで自動作成)
$ mount --mkdir /dev/vda1 /mnt/boot

⑤ ベースシステムのインストール

pacstrap はArch Linux独自のインストールスクリプトです。 指定したマウントポイントに、必要なパッケージをネットからダウンロードしてインストールします。

# base: 最小限のシステム、linux: カーネル本体、linux-firmware: ドライバ集、nano: テキストエディタ
$ pacstrap -K /mnt base linux linux-firmware nano

fstab の生成と chroot

fstab は起動時にどのパーティションをどこにマウントするかを記述したファイルです。 genfstab コマンドで自動生成し、arch-chroot で新しいシステムに「入り込みます」。

# UUIDベースでfstabを生成して保存
$ genfstab -U /mnt >> /mnt/etc/fstab

# 新システムのルートに切り替え(ここからは新Arch環境のコマンドになる)
$ arch-chroot /mnt

インストール確認: pacman -Q qemu-guest-agent を実行し、バージョン番号が表示されればディスクへの書き込みは成功しています。

⑥ chroot 内での基本設定

arch-chroot で入った後に行う設定です。これらを忘れると再起動後に Arch Linux が正常に立ち上がりません。

Step A

タイムゾーンと時計の設定

システムクロックを日本時間(Asia/Tokyo、UTC+9)に設定します。hwclock でハードウェアクロックも同期させます。

$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ hwclock --systohc
Step B

ロケール(言語)の設定

システムの言語・文字エンコードを設定します。英語UTF-8を有効にすることで、ほとんどのツールが正しく動作します。

# locale.gen を編集して "en_US.UTF-8 UTF-8" の行頭の # を削除して保存
$ nano /etc/locale.gen

# ロケールを生成
$ locale-gen

# デフォルトロケールとして設定
$ echo "LANG=en_US.UTF-8" > /etc/locale.conf
Step C

ホスト名の設定

ネットワーク上でこのマシンを識別するための名前(ホスト名)を設定します。好きな名前に変更して構いません。

$ echo "my-arch-linux" > /etc/hostname
Step D

root パスワードの設定

これを忘れると再起動後にログインできなくなります。必ず設定してください。

$ passwd

⑦ ブートローダー(GRUB)の設定

コンピュータを起動するとき、OSを呼び出す役割を担うのがブートローダーです。ここでは最も広く使われている GRUB を使います。

必要パッケージのインストール

GRUB 本体、UEFI起動メニューを書き換える efibootmgr、 そして再起動後にインターネットへ繋がるための networkmanager をまとめてインストールします。

$ pacman -S grub efibootmgr networkmanager

GRUB のインストール(EFIパーティションへ書き込み)

仮想マシンのEFIパーティション(/boot)にブートファイルを書き込み、UEFIファームウェアに「このファイルで起動して」と登録します。

$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB

GRUB 設定ファイルの生成

GRUBにLinuxカーネルの場所を教えるための設定ファイルを生成します。 Found linux image: /boot/vmlinuz-linux と表示されれば成功です。

$ grub-mkconfig -o /boot/grub/grub.cfg

⑧ 再起動と仕上げ

すべての設定が完了しました。新しいシステムを起動させるために環境から脱出し、再起動します。

# 再起動後にネットワークが自動で繋がるようにする
$ systemctl enable NetworkManager

# chroot環境から抜け出す
$ exit

# マウントを解除してから再起動
$ umount -R /mnt
$ reboot

⚠️ 重要: 再起動の際、Virt-manager の設定から Arch Linux の ISO ファイル(仮想CD)を取り外す のを忘れないでください。 ISO が挿さったままだと、また自動でインストーラーが起動してしまいます。

RETURN TO COMPUTING