VirtualBoxにArch Linuxをインストールする

tags: [Arch Linux] [GNU/Linux] [VirtualBox]

VirtualBoxにArch LinuxをEFI + GPTでインストールする手順を書き残しておく。

環境

Arch Linuxののダウンロード

ダウンロードページのリンクから、ISOファイルをダウンロードする。チェックサムとPGP署名の確認もしておく。

printf "<SHA1-CHECKSUM> <ISO>" | sha1sum -c  # チェックサムの確認
gpg --auto-key-retrieve --verify <PGP SIGNATURE> # 署名の確認

Archの開発者の鍵の指紋とPGP署名の指紋が一致するか確認しておく。

Arch Linuxのインストール

デフォルトだと仮想コンソールのキーマップがUSになっているので、適当に変える。

loadkeys jp106

システムクロックの設定

timedatectl set-ntp 1

パーティションの作成。fdisk -lでハードディスクのデバイス名を確認してgdiskを起動する。

gdisk /dev/sda

oコマンドで新しいパーティションテーブルを作成

nコマンドでパーティションを作成。とりあえず、ルートパーティションとESP(EFI System Partition)だけ作る。

ESP

ルートパーティション

wコマンドで変更を保存

ファイルシステムのフォーマット。ESPは必ずFATでフォーマットする必要がある。

mkfs.fat -F32 /dev/sda1 # ESP
mkfs.ext4 /dev/sda2     # root

ファイルシステムのマウント。ルートから順にマウントする。

mount /dev/sda2 /mnt      # root
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot # ESP

/etc/pacman.d/mirrorlistを開いて日本のサーバーを上に持ってくる。

ミラーから必須パッケージと他に要りそうなパッケージをインストールする。

pacstrap /mnt base linux linux-firmware vim man-db man-pages texinfo

fstabを生成

genfstab -U /mnt >> /mnt/etc/fstab

インストール先にchroot

arch-chroot /mnt

タイムゾーンの設定

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock -w

/etc/locale.genを開き、en_US.UTF-8 UTF-8の行をアンコメントして、ロケールを生成する。

locale-gen
echo "LANG=\"en_US.UTF-8\"" > /etc/locale.conf

仮想コンソールのキーマップの設定を永続化

echo "KEYMAP=\"jp106\"" > /etc/vconsole.conf

hostnameの設定

echo "<MYHOSTNAME>" > /etc/hostname

/etc/hostsの編集

127.0.0.1 localhost
::1       localhost
127.0.1.1 <MYHOSTNAME>.localdomain <MYHOSTNAME>

systemd-networkdのネットワークの設定を書く。en*にマッチするデバイスで、DHCPクライアントを有効にする場合、以下のように書く。

[Match]
Name=en*

[Network]
DHCP=yes

設定は、/etc/systemd/network/以下に、<FOOBAR>.networkみたいなファイル名で保存する。

設定が終わったら、サービスを有効化しておく。

systemctl enable systemd-networkd.service

/etc/resolv.confの編集

# cloudflare DNS
nameserver 1.1.1.1
nameserver 1.0.0.1

rootのパスワードを設定

passwd

GRUBのインストール

pacman -S grub efibootmgr
grub-install --efi-directory=/boot --target=x86_64-efi --bootloader-id=<ID>
grub-mkconfig -o /boot/grub/grub.cfg

インストール後の作業

とりあえず、sudoとXの設定、VirtualBox Guest Additionsのインストールまでやっておく。

sudoの設定

ユーザーを追加して、sudoの設定をする。

ユーザーの追加

useradd -m -s /bin/bash -G wheel <USERNAME>
passwd <USERNAME>

sudoとviをインストールする。

pacman -S sudo vi

visudoを起動して%wheel ALL=(ALL) ALLの行を、アンコメントする。

ルートアカウントをロックする。

passwd -l root

Xの設定

X関連のソフトウェアとドライバーをインストールする。

sudo pacman -S xorg-server xorg-apps xorg-xinit xclip xf86-video-vmware xf86-input-vmmouse

フォントをインストール

sudo pacman -S noto-fonts xorg-fonts-100dpi

${XDG_CONFIG_HOME:-"${HOME}/.config"}/fontconfig/fonts.confフォントの設定を書く。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <edit name="embeddedbitmap">
            <bool>false</bool>
        </edit>
    </match>

    <match>
        <test name="family">
            <string>sans-serif</string>
        </test>
        <edit name="family" binding="strong">
            <string>Noto Sans</string>
        </edit>
    </match>

    <match>
        <test name="family">
            <string>serif</string>
        </test>
        <edit name="family" binding="strong">
            <string>Noto Serif</string>
        </edit>
    </match>

    <match>
        <test name="family">
            <string>monospace</string>
        </test>
        <edit name="family" binding="strong">
            <string>Noto Sans Mono</string>
        </edit>
    </match>
</fontconfig>

i3dmenualacrittyをインストール

sudo pacman -S i3 dmenu alacritty

/etc/X11/xinit/xinitrc~/.xinitrcにコピーして、編集する。

#!/bin/sh

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?* ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

setxkbmap -layout jp
xset r rate 150 60

exec i3

startxコマンドでXを起動できる。

Guest Additionsのインストール

virtualbox-guest-utilsパッケージをインストールして、vboxserviceサービスを有効化する。

sudo pacman -S virtualbox-guest-utils
sudo systemctl enable vboxservice.service

Xの起動中に、VBoxClient-allコマンドを実行すれば、Guest Additionsの機能が使えるようになる。

VMSVGAでゲストのウィンドウサイズを変更したい場合

VMSVGAでゲストのウィンドウサイズを変更したい場合、pacmanではなくCDから、Guest Additionsをインストールしないといけないらしい。(参考)

CDからGuest Additionsをインストールする方法を書き残しておく。

Guest Additionsのカーネルモジュールのビルドに必要なパッケージをインストール。

sudo pacman -S gcc make linux-headers

VMのメニューバーからDevices->Insert Guest Additinos CD image…を選択してCDを挿入。マウントする。

sudo mkdir /mnt/guestadd
sudo mount /dev/sr0 /mnt/guestadd

マウント先に移動して、rootでVBoxLinuxAdditions.runスクリプトを実行する。

cd /mnt/guestadd
sudo sh ./VBoxLinuxAdditions.run

再起動してインストールしたカーネルモジュールを読み込ませる。

cd ~
sudo umount /mnt/guestadd
sudo rmdir /mnt/guestadd
sudo systemctl reboot

CDからインストールした場合、startx時に、/etc/X11/xinit/xinitrc.d/98vboxadd-xclient.shでGuest Additionsの機能が有効化されるようになっている。

参考