[OE-core] [PATCH] qemu*.conf: Add slirp support for all qemu machines

Robert Yang liezhi.yang at windriver.com
Tue Nov 29 06:21:59 UTC 2016



On 11/29/2016 04:11 AM, Randy Witt wrote:
> This patch also moves the "-net user" part out of the config and
> into runqemu. This is done because the "-net user" portion isn't
> machine specific, and it contains what ports to forward.
>
> [ YOCTO #7887 ]
>
> Signed-off-by: Randy Witt <randy.e.witt at linux.intel.com>
> ---
>  meta/conf/machine/include/qemuboot-mips.inc | 1 +
>  meta/conf/machine/include/qemuboot-x86.inc  | 2 +-
>  meta/conf/machine/qemuarm.conf              | 1 +
>  meta/conf/machine/qemuarm64.conf            | 2 +-
>  meta/conf/machine/qemuppc.conf              | 1 +
>  scripts/runqemu                             | 7 ++++++-
>  6 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/meta/conf/machine/include/qemuboot-mips.inc b/meta/conf/machine/include/qemuboot-mips.inc
> index 0c60cf2..c85dc86 100644
> --- a/meta/conf/machine/include/qemuboot-mips.inc
> +++ b/meta/conf/machine/include/qemuboot-mips.inc
> @@ -6,3 +6,4 @@ QB_KERNEL_CMDLINE_APPEND = "console=ttyS0 console=tty"
>  # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>  QB_OPT_APPEND = "-vga cirrus -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
>  QB_SYSTEM_NAME = "qemu-system-${TUNE_ARCH}"
> +QB_SLIRP_OPT = "-device virtio-net-pci,netdev=net0"
> diff --git a/meta/conf/machine/include/qemuboot-x86.inc b/meta/conf/machine/include/qemuboot-x86.inc
> index 0870294..cc31dab 100644
> --- a/meta/conf/machine/include/qemuboot-x86.inc
> +++ b/meta/conf/machine/include/qemuboot-x86.inc
> @@ -13,4 +13,4 @@ QB_AUDIO_OPT = "-soundhw ac97,es1370"
>  QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1"
>  # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>  QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
> -QB_SLIRP_OPT = "-net nic,model=e1000 -net user,hostfwd=tcp::2222-:22"
> +QB_SLIRP_OPT = "-device virtio-net-pci,netdev=net0"
> diff --git a/meta/conf/machine/qemuarm.conf b/meta/conf/machine/qemuarm.conf
> index 17402ef..974657b 100644
> --- a/meta/conf/machine/qemuarm.conf
> +++ b/meta/conf/machine/qemuarm.conf
> @@ -18,3 +18,4 @@ QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,115200 console=tty"
>  QB_OPT_APPEND = "-show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
>  PREFERRED_VERSION_linux-yocto ??= "4.8%"
>  QB_DTB = "${@base_version_less_or_equal('PREFERRED_VERSION_linux-yocto', '4.7', '', 'zImage-versatile-pb.dtb', d)}"
> +QB_SLIRP_OPT = "-device virtio-net-pci,netdev=net0"
> diff --git a/meta/conf/machine/qemuarm64.conf b/meta/conf/machine/qemuarm64.conf
> index df2010c..ebd360e 100644
> --- a/meta/conf/machine/qemuarm64.conf
> +++ b/meta/conf/machine/qemuarm64.conf
> @@ -18,7 +18,7 @@ QB_KERNEL_CMDLINE_APPEND = "console=ttyAMA0,38400"
>  # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>  QB_OPT_APPEND = "-show-cursor -device virtio-rng-pci -monitor null"
>  QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-device,netdev=net0,mac=@MAC@"
> -QB_SLIRP_OPT = "-netdev user,id=net0 -device virtio-net-device,netdev=net0"
> +QB_SLIRP_OPT = "-device virtio-net-device,netdev=net0"
>  QB_ROOTFS_OPT = "-drive id=disk0,file=@ROOTFS@,if=none,format=raw -device virtio-blk-device,drive=disk0"
>  QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
>  QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1 -device virtconsole,chardev=virtcon"
> diff --git a/meta/conf/machine/qemuppc.conf b/meta/conf/machine/qemuppc.conf
> index 8703c20..4711751 100644
> --- a/meta/conf/machine/qemuppc.conf
> +++ b/meta/conf/machine/qemuppc.conf
> @@ -19,3 +19,4 @@ QB_KERNEL_CMDLINE_APPEND = "console=tty console=ttyS0"
>  # Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
>  QB_OPT_APPEND = "-show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
>  QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no -device virtio-net-pci,netdev=net0,mac=@MAC@"
> +QB_SLIRP_OPT = "-device virtio-net-pci,netdev=net0"
> diff --git a/scripts/runqemu b/scripts/runqemu
> index af25423..faab522 100755
> --- a/scripts/runqemu
> +++ b/scripts/runqemu
> @@ -730,7 +730,12 @@ class BaseConfig(object):
>          if self.fstype == 'nfs':
>              self.setup_nfs()
>          self.kernel_cmdline_script += ' ip=dhcp'
> -        self.set('NETWORK_CMD', self.get('QB_SLIRP_OPT'))
> +        network_cmd = self.get('QB_SLIRP_OPT')
> +
> +        # The network device created in qemuboot.conf is expected to be
> +        # id=net0
> +        network_cmd += ' -netdev user,id=net0,hostfwd=tcp::2222-:22'

Hi Randy,

This doesn't work when more than one qemu is running since the port
will be conflicted. And since all of the QB_SLIRP_OPT are the same,
so I'd like to set it as a default value in runqemu, just like
what we do for QB_TAP_OPT. And if we break them into two parts:

"-device virtio-net-device,netdev=net0" and
"-netdev user,id=net0,hostfwd=tcp::2222-:22"

Then there is no way for user to override the second part, and we can't
call the first part as a "QB_SLIRP_OPT" since it is only part of them,
so I won't break them into 2, and if the user defines QB_SLIRP_OPT
in there bsp conf file, then it will be replaced totally.

I will send a new patch for fixing this, and will add you in the CC list.

// Robert


> +        self.set('NETWORK_CMD', network_cmd)
>
>      def setup_tap(self):
>          """Setup tap"""
>



More information about the Openembedded-core mailing list