From nobody Mon Feb 9 08:35:38 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505806782722382.03997603032246; Tue, 19 Sep 2017 00:39:42 -0700 (PDT) Received: from localhost ([::1]:40517 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duD8A-0002Bh-3f for importer@patchew.org; Tue, 19 Sep 2017 03:39:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39077) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duCxz-0002oE-PP for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duCxv-00005t-CI for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52614) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duCxv-0008WU-2s for qemu-devel@nongnu.org; Tue, 19 Sep 2017 03:29:07 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1E914C00DBA0; Tue, 19 Sep 2017 07:29:06 +0000 (UTC) Received: from lemon.redhat.com (ovpn-12-162.pek2.redhat.com [10.72.12.162]) by smtp.corp.redhat.com (Postfix) with ESMTP id 539F95D6A4; Tue, 19 Sep 2017 07:29:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 1E914C00DBA0 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=famz@redhat.com From: Fam Zheng To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:27:18 +0800 Message-Id: <20170919072719.11815-13-famz@redhat.com> In-Reply-To: <20170919072719.11815-1-famz@redhat.com> References: <20170919072719.11815-1-famz@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 19 Sep 2017 07:29:06 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v9 12/13] tests: Add README for vm tests X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Fam Zheng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Kamil Rytarowski , pbonzini@redhat.com, stefanha@redhat.com, Cleber Rosa , =?UTF-8?q?Alex=20Benn=C3=A9e?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Fam Zheng --- tests/vm/README | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 89 insertions(+) create mode 100644 tests/vm/README diff --git a/tests/vm/README b/tests/vm/README new file mode 100644 index 0000000000..ae53dce6ee --- /dev/null +++ b/tests/vm/README @@ -0,0 +1,89 @@ +=3D=3D=3D VM test suite to run build in guests =3D=3D=3D + +=3D=3D Intro =3D=3D + +This test suite contains scripts that bootstrap various guest images that = have +necessary packages to build QEMU. The basic usage is documented in Makefile +help which is displayed with "make vm-test". + +=3D=3D Quick start =3D=3D + +Run "make vm-test" to list available make targets. Invoke a specific make +command to run build test in an image. For example, "make vm-build-freebsd" +will build the source tree in the FreeBSD image. The command can be execut= ed +from either the source tree or the build dir; if the former, ./configure i= s not +needed. The command will then generate the test image in ./tests/vm/ under= the +working directory. + +Note: images created by the scripts accept a well-known RSA key pair for S= SH +access, so they SHOULD NOT be exposed to external interfaces if you are +concerned about attackers taking control of the guest and potentially +exploiting a QEMU security bug to compromise the host. + +=3D=3D QEMU binary =3D=3D + +By default, qemu-system-x86_64 is searched in $PATH to run the guest. If t= here +isn't one, or if it is older than 2.10, the test won't work. In this case, +provide the QEMU binary in env var: QEMU=3D/path/to/qemu-2.10+. + +=3D=3D Make jobs =3D=3D + +The "-j$X" option in the make command line is not propagated into the VM, +specify "J=3D$X" to control the make jobs in the guest. + +=3D=3D Debugging =3D=3D + +Add "DEBUG=3D1" and/or "V=3D1" to the make command to allow interactive de= bugging +and verbose output. If this is not enough, see the next section. + +=3D=3D Manual invocation =3D=3D + +Each guest script is an executable script with the same command line optio= ns. +For example to work with the netbsd guest, use $QEMU_SRC/tests/vm/netbsd: + + $ cd $QEMU_SRC/tests/vm + + # To bootstrap the image + $ ./netbsd --build-image --image /var/tmp/netbsd.img + <...> + + # To run an arbitrary command in guest (the output will not be echoed = unless + # --debug is added) + $ ./netbsd --debug --image /var/tmp/netbsd.img uname -a + + # To build QEMU in guest + $ ./netbsd --debug --image /var/tmp/netbsd.img --build-qemu $QEMU_SRC + + # To get to an interactive shell + $ ./netbsd --interactive --image /var/tmp/netbsd.img sh + +=3D=3D Adding new guests =3D=3D + +Please look at existing guest scripts for how to add new guests. + +Most importantly, create a subclass of BaseVM and implement build_image() +method and define BUILD_SCRIPT, then finally call basevm.main() from the +script's main(). + + - Usually in build_image(), a template image is downloaded from a predef= ined + URL. BaseVM._download_with_cache() takes care of the cache and the + checksum, so consider using it. + + - Once the image is downloaded, users, SSH server and QEMU build deps sh= ould + be set up: + + * Root password set to BaseVM.ROOT_PASS + * User BaseVM.GUEST_USER is created, and password set to BaseVM.GUEST_= PASS + * SSH service is enabled and started on boot, + $QEMU_SRC/tests/keys/id_rsa.pub is added to ssh's "authorized_keys" = file + of both root and the normal user + * DHCP client service is enabled and started on boot, so that it can + automatically configure the virtio-net-pci NIC and communicate with = QEMU + user net (10.0.2.2) + * Necessary packages are installed to untar the source tarball and bui= ld + QEMU + + - Write a proper BUILD_SCRIPT template, which should be a shell script t= hat + untars a raw virtio-blk block device, which is the tarball data blob o= f the + QEMU source tree, then configure/build it. Running "make check" is also + recommended. --=20 2.13.5