apt で libvirt を入れる。
sudo apt -y install qemu-kvm libvirt-daemon-system \ libvirt-daemon virtinst bridge-utils libguestfs-tools virt-top
libvirt 経由でNVRAMとUEFIを使って起動する・
NAME=u2204-02 DIR=/var/lib/libvirt/images NVRAM=$DIR/$NAME-AAVMF_VARS.fd UEFI=/usr/share/AAVMF/AAVMF_CODE.fd DISK=$DIR/u2204-04.qcow2 ISOIMG=$DIR/ubuntu-22.04.2-live-server-arm64.iso cd $DIR cp $UEFI $NVRAM virt-install \ --name=$NAME \ --machine=virt\ --arch=aarch64 \ --virt-type=kvm \ --cdrom=$ISOIMG \ --serial pty \ --disk path=$DISK,format=qcow2,device=disk,bus=virtio,cache=none \ --boot loader=$UEFI,loader_ro=yes,nvram=$NVRAM,loader_type=pflash \ --boot cdrom,hd \ --network type=direct,source=eth0,source_mode=bridge,model=virtio \ --memory=2048 \ --vcpu=2 \ --os-variant ubuntu22.04
URFI/nvram の設定
aarch64 の仮想マシンをvirt-install する際にハマった箇所
NAME=u2204-02 UEFI=/usr/share/AAVMF/AAVMF_CODE.fd NVRAM=/var/lib/libvirt/qemu/nvram/$NAME_VARS.fd --boot loader=$UEFI,loader_ro=yes,nvram=$NVRAM,loader_type=pflash \
ブート時にエラーになる。UEFI関連。
ERROR internal error: process exited while connecting to monitor:
qemu-system-aarch64: Failed to lock byte 100
がでた。
nvram を作らないとエラーになる。
ERROR unsupported configuration: ACPI requires UEFI on this architecture
がでた
ネットワーク周りの設定
UbuntuのLiveサーバーはインストールの各種ダイアログへ入力画面をSSH経由で行える。
そのため、作業用マシンから新規インスト仮想マシンまでが、SSH経由で接続出来ると便利。
SSH経由でインストをするいちばん簡単な方法は、macvtap を作ること。
macvtap 接続を作成する
--network type=direct,source=eth0,source_mode=bridge,model=virtio \
以上の設定を足すとインストール時に、リモートSSH経由のインストールが可能になる。 SSH経由でインストールする例
CD-ROMの入手
ARM版・Raspberry pi 4 で動く仮想マシンはaarch64を使うと楽である。
aarch64を使う場合、専用のOSイメージを使う。
wget https://cdimage.ubuntu.com/releases/22.04/release/ubuntu-22.04.1-live-server-arm64.iso sudo mv ubuntu-22.04.1-live-server-arm64.iso /var/lib/libvirt/images
raspi(aarch64)でx86_64を動かしても良いが。
HTTP経由のネットワークインストール
CD-ROMではなくネットワークからカーネルイメージを入手するのもいい。
ネットワークインストールは、インストラーをURLで指定する。
--location 'http://ports.ubuntu.com/dists/bionic/main/installer-arm64/'
NAME=u2204-03 sudo qemu-img create -f qcow2 /var/lib/libvirt/images/$NAME.qcow2 10G ;
NAME=u2204-03 UEFI=/usr/share/AAVMF/AAVMF_CODE.fd NVRAM=/var/lib/libvirt/qemu/nvram/$NAME_VARS.fd URL='http://ports.ubuntu.com/dists/focal/main/installer-arm64/' DISK=/var/lib/libvirt/images/$NAME.qcow2 virt-install \ --name=$NAME \ --machine=virt\ --arch=aarch64 \ --virt-type=kvm \ --location $URL \ --disk path=$DISK,format=qcow2,device=disk,bus=virtio,cache=none \ --network type=direct,source=eth0,source_mode=bridge,model=virtio \ --boot loader=$UEFI,loader_ro=yes,nvram=$NVRAM,loader_type=pflash \ --memory=2048 \ --vcpu=2 \ --os-variant ubuntu22.04
ネットワーク・インストールの場合、SSHサーバーがない。
SSH経由でインストール作業を行えないので、cloud-initなどを使う必要がある。 github から公開鍵を持ってくることもない。
純粋にDebianのnet-instが動いてる感じ。
インストール時のCPU使用量
Raspi4って優秀ですよね。
apt を設定しておくと速いかも
echo 'Acquire::HTTP::Proxy "http://192.168.200.50:3142";' |sudo tee /etc/apt/apt.conf.d/01proxy
参考資料 https://gist.github.com/yen3/884bf14ec8286df35de67953a561eee8