Changes:
- Tweak agl-qemu-runner to make network options configurable.
- Add qemu-config-vmnet0 recipe that installs the required
configuration files to set up a vmnet0 bridge device for QEMU to
add the guests to, and to run dnsmasq against it to provide set
IPs (in 172.16.10.0/8) to known MAC addresses that can be used to
get the IVI and IC guests at stable IP addresses.
- As part of the above, disable connman DNS proxying to avoid
conflicting with dnsmasq. This does mean this package should
only be used for simple host images where applications can live
with less dynamic DNS configuration behavior.
- Update the various guest configuration files for agl-qemu-runner
to set the new QEMU_NET_OPT variable as required.
Bug-AGL: SPEC-4618
Change-Id: I81d2ea9f0605a8bca7ac17d6e8f33c0b1a9f2c46
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
(cherry picked from commit
0219e6547b627f45936599fa54e02cad27dee4f4)
QEMU_TASKSET_CPUS="4-7"
QEMU_SMP_OPT="-smp 4"
QEMU_MEM_OPT="-m 2G"
+QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0"
QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
QEMU_TASKSET_CPUS="4-7"
QEMU_SMP_OPT="-smp 4"
QEMU_MEM_OPT="-m 2G"
+QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0"
QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
QEMU_MEM_OPT="-m 4G"
QEMU_INPUT_OPT="-device virtio-tablet-device"
QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl"
+QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0"
QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
QEMU_MEM_OPT="-m 4G"
QEMU_INPUT_OPT="-device virtio-tablet-device"
QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl"
+QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0"
QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
--- /dev/null
+allow vmnet0
--- /dev/null
+[Service]
+ExecStart=
+ExecStart=/usr/sbin/connmand -n --nodnsproxy
--- /dev/null
+interface=vmnet0
+dhcp-range=172.16.10.1,172.16.10.5,255.255.255.0,12h
+dhcp-host=52:54:00:12:00:02,172.16.10.2
+dhcp-host=52:54:00:12:00:03,172.16.10.3
--- /dev/null
+[NetDev]
+Name=vmnet0
+Kind=bridge
--- /dev/null
+[Match]
+Name=vmnet0
+
+[Network]
+Address=172.16.10.1/24
+IPForward=yes
+IPMasquerade=yes
FILES:${PN} += "${systemd_system_unitdir}"
-RDEPENDS:${PN} += "agl-qemu-runner"
+RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
FILES:${PN} += "${systemd_system_unitdir}"
-RDEPENDS:${PN} += "agl-qemu-runner"
+RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
FILES:${PN} += "${systemd_system_unitdir}"
-RDEPENDS:${PN} += "agl-qemu-runner"
+RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
FILES:${PN} += "${systemd_system_unitdir}"
-RDEPENDS:${PN} += "agl-qemu-runner"
+RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
--- /dev/null
+SUMMARY = "Setting files for QEMU networking for guest VMs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://vmnet0.netdev \
+ file://vmnet0.network \
+ file://bridge.conf \
+ file://dnsmasq-qemu.conf \
+ file://connman-nodnsproxy.conf \
+"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+QEMU_IMAGE = "agl-cluster-demo-platform"
+QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
+
+do_install() {
+ # Install systemd-networkd vmnet0 configuration
+ install -d ${D}${systemd_unitdir}/network
+ install -m 0644 ${WORKDIR}/vmnet0.netdev ${D}${systemd_unitdir}/network/
+ install -m 0644 ${WORKDIR}/vmnet0.network ${D}${systemd_unitdir}/network/
+
+ # Install QEMU bridge configuration
+ install -d ${D}${sysconfdir}/qemu
+ install -m 0644 ${WORKDIR}/bridge.conf ${D}${sysconfdir}/qemu/
+
+ # Configure dnsmasq to serve DHCP to the guests
+ install -d ${D}${sysconfdir}/dnsmasq.d
+ install -m 0644 ${WORKDIR}/dnsmasq-qemu.conf ${D}${sysconfdir}/dnsmasq.d/
+
+ # Disable ConnMan's local DNS proxy to not conflict with dnsmasq
+ install -d ${D}${systemd_system_unitdir}/connman.service.d/
+ install -m 0644 ${WORKDIR}/connman-nodnsproxy.conf ${D}${systemd_system_unitdir}/connman.service.d/
+}
+
+FILES:${PN} += "${systemd_unitdir}/network ${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "agl-qemu-runner dnsmasq connman"
-drive id=disk0,file=${disk},format=raw,if=none \
-serial mon:pty \
-object rng-random,filename=/dev/urandom,id=rng0 \
- -netdev user,id=net-user \
-device virtio-blk-device,drive=disk0 \
- -device virtio-net-device,netdev=net-user,mac=52:54:00:12:00:02 \
-device virtio-rng-device,rng=rng0 \
+ ${QEMU_NET_OPT} \
${QEMU_INPUT_OPT} \
-global virtio-mmio.force-legacy=false \
-device virtio-gpu-gl-device \
-display sdl,gl=on -vga std \
- ${QEMU_AUDIO_OPT} \
- ${QEMU_EXTRA_OPT} \
+ ${QEMU_AUDIO_OPT} \
+ ${QEMU_EXTRA_OPT} \
-full-screen