diff options
15 files changed, 70 insertions, 8 deletions
diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf index 262f3c2d4..1ecefc477 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf +++ b/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf @@ -1,4 +1,5 @@ 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" diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf b/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf index 262f3c2d4..1ecefc477 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf +++ b/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf @@ -1,4 +1,5 @@ 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" diff --git a/recipes-config/qemu-config/files/agl-demo-platform.conf b/recipes-config/qemu-config/files/agl-demo-platform.conf index e72386789..70c716f3d 100644 --- a/recipes-config/qemu-config/files/agl-demo-platform.conf +++ b/recipes-config/qemu-config/files/agl-demo-platform.conf @@ -3,4 +3,5 @@ QEMU_SMP_OPT="-smp 4" 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" diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf index e72386789..70c716f3d 100644 --- a/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf +++ b/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf @@ -3,4 +3,5 @@ QEMU_SMP_OPT="-smp 4" 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" diff --git a/recipes-config/qemu-config/files/bridge.conf b/recipes-config/qemu-config/files/bridge.conf new file mode 100644 index 000000000..72c73f39f --- /dev/null +++ b/recipes-config/qemu-config/files/bridge.conf @@ -0,0 +1 @@ +allow vmnet0 diff --git a/recipes-config/qemu-config/files/connman-nodnsproxy.conf b/recipes-config/qemu-config/files/connman-nodnsproxy.conf new file mode 100644 index 000000000..9d7f74b8f --- /dev/null +++ b/recipes-config/qemu-config/files/connman-nodnsproxy.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=/usr/sbin/connmand -n --nodnsproxy diff --git a/recipes-config/qemu-config/files/dnsmasq-qemu.conf b/recipes-config/qemu-config/files/dnsmasq-qemu.conf new file mode 100644 index 000000000..4ab6ee3bf --- /dev/null +++ b/recipes-config/qemu-config/files/dnsmasq-qemu.conf @@ -0,0 +1,4 @@ +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 diff --git a/recipes-config/qemu-config/files/vmnet0.netdev b/recipes-config/qemu-config/files/vmnet0.netdev new file mode 100644 index 000000000..e25453174 --- /dev/null +++ b/recipes-config/qemu-config/files/vmnet0.netdev @@ -0,0 +1,3 @@ +[NetDev] +Name=vmnet0 +Kind=bridge diff --git a/recipes-config/qemu-config/files/vmnet0.network b/recipes-config/qemu-config/files/vmnet0.network new file mode 100644 index 000000000..600f8ac01 --- /dev/null +++ b/recipes-config/qemu-config/files/vmnet0.network @@ -0,0 +1,7 @@ +[Match] +Name=vmnet0 + +[Network] +Address=172.16.10.1/24 +IPForward=yes +IPMasquerade=yes diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb index c15528a6e..159d3939e 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb +++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb @@ -26,4 +26,4 @@ do_install() { FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "agl-qemu-runner" +RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb index 4f9c5a92f..8e2aeb3e5 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb +++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb @@ -26,4 +26,4 @@ do_install() { FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "agl-qemu-runner" +RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb index 1d5e0df22..da85b7a72 100644 --- a/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb +++ b/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb @@ -26,4 +26,4 @@ do_install() { FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "agl-qemu-runner" +RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb index 5efb7a96c..10c30445e 100644 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb +++ b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb @@ -26,4 +26,4 @@ do_install() { FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "agl-qemu-runner" +RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-config/qemu-config/qemu-config-vmnet0.bb b/recipes-config/qemu-config/qemu-config-vmnet0.bb new file mode 100644 index 000000000..bc634bf32 --- /dev/null +++ b/recipes-config/qemu-config/qemu-config-vmnet0.bb @@ -0,0 +1,41 @@ +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" diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh index d12764735..6bf2cc4f9 100755 --- a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh +++ b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh @@ -58,14 +58,13 @@ qemu-system-${arch} \ -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 |