これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/12/21 11:44:57.596 (台灣標準時)
NetBSD で NVMM を使って仮想機械を動かす方法を記録しておくでござる。
NVMM モジュールをロードする必要があり、それは以下のようにすればよいでござる。
# modload nvmm
NVMM モジュールが期待通りにロードされたかどうかを確認するためには、以 下のようにすればよいでござる。
# modstat | grep nvmm nvmm misc filesys - 0 35388 -
計算機の起動時に、自動で NVMM がロードされるようにするためには、以下の ようにすればよいようでござる。
# echo nvmm > /etc/modules.conf # cat /etc/modules.conf nvmm
NVMM の状況を確認するためには、以下のようにすればよいでござる。
# nvmmctl identify nvmm: Kernel API version 2 nvmm: State size 1008 nvmm: Max machines 128 nvmm: Max VCPUs per machine 256 nvmm: Max RAM per machine 128G nvmm: Arch Mach conf 0 nvmm: Arch VCPU conf 0x3
nvmm: Guest FPU states 0x3
NVMM を使って仮想機械を動かすためには QEMU が必要なので、 pkgsrc を使っ て QEMU をインストールするでござる。
# cd /usr/pkgsrc/emulators/qemu # make install
QEMU を使って、 NetBSD を動かしてみるでござる。以下のようにすれば、 ISO 9660 image から NetBSD のインストーラーが起動されるでござる。
# wget http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-10/latest/images/NetBSD-10.0_STABLE-amd64.iso # qemu-system-x86_64 -accel nvmm -cpu max -smp cpus=4 -m 4G -display curses -cdrom /tmp/NetBSD-10.0_STABLE-amd64.iso
|
---|
仮想機械をインストールするにあたって、 virtual disk を用意するでござる。 qemu-img コマンドを使って qcow2 フォーマットのイメージを作成するでござ る。以下のようにすればよいでござる。
# mkdir -p /vm/netbsd_01 # cd /vm/netbsd_01 # qemu-img create -f qcow2 netbsd_01.qcow2 128G Formatting 'netbsd_01.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=137438953472 lazy_refcounts=off refcount_bits=16 # ls -lF netbsd_01.qcow2 -rw-r--r-- 1 root wheel 198656 Aug 4 22:36 netbsd_01.qcow2 # wget http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-10/latest/images/NetBSD-10.0_STABLE-amd64.iso # ls -lF total 637860 -rw-r--r-- 1 root wheel 652765184 Jul 31 23:24 NetBSD-10.0_STABLE-amd64.iso -rw-r--r-- 1 root wheel 198656 Aug 4 22:36 netbsd_01.qcow2 # chmod 600 netbsd_01.qcow2
guest がネットワークを利用できるようにするために、 tap と bridge を作 るでござる。
# ifconfig tap0 create # ifconfig tap0 descr "NetBSD VM 01" up # ifconfig bridge0 descr "Bridge for NetBSD VM 01" up # brconfig bridge0 add tap0 add wm0 # ifconfig tap0 tap0: flags=0x8943
mtu 1500 ec_capabilities=0x5 ec_enabled=0x1 description: "NetBSD VM 01" address: f2:0b:a4:78:2a:8c status: no carrier inet6 fe80::f00b:a4ff:fe78:2a8c%tap0/64 flags 0x8 scopeid 0x3 # ifconfig bridge0 bridge0: flags=0x41 mtu 1500 description: "Bridge for NetBSD VM 01" status: active
NetBSD を guest としてインストールするでござる。
# vi netbsd_01_install.sh # cat netbsd_01_install.sh /usr/pkg/bin/qemu-system-x86_64 \ -accel nvmm \ -cpu max -smp cpus=1 -m 2G \ -display curses \ -cdrom /vm/netbsd_01/NetBSD-10.0_STABLE-amd64.iso \ -drive file=/vm/netbsd_01/netbsd_01.qcow2,if=none,id=hd0 \ -device virtio-blk-pci,drive=hd0 \ -object rng-random,filename=/dev/urandom,id=viornd0 \ -device virtio-rng-pci,rng=viornd0 \ -netdev tap,id=tap0,ifname=tap0,script=no -device virtio-net-pci,netdev=tap0 # sh netbsd_01_install.sh
通常通りのインストーラーが動き出すので、実ハードウェアに NetBSD をイン ストールする際と同じようにインストールすればよいでござる。 DHCP で IP アドレスをもらえるようになっているネットワークに接続されているならば、 ネットワークの設定は autoconfiguration を選べばよいでござる。
インストールが終わったら、 guest の NetBSD を起動するでござる。
# vi netbsd_01_start.sh # cat netbsd_01_start.sh /usr/pkg/bin/qemu-system-x86_64 \ -accel nvmm \ -cpu max -smp cpus=1 -m 2G \ -display curses \ -drive file=/vm/netbsd_01/netbsd_01.qcow2,if=none,id=hd0 \ -device virtio-blk-pci,drive=hd0 \ -object rng-random,filename=/dev/urandom,id=viornd0 \ -device virtio-rng-pci,rng=viornd0 \ -netdev tap,id=tap0,ifname=tap0,script=no -device virtio-net-pci,netdev=tap0 # sh netbsd_01_start.sh
これで guest の NetBSD が起動するでござる。