From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Richard Henderson <richard.henderson@linaro.org>,
Warner Losh <imp@bsdimp.com>
Subject: [PULL 23/23] tests/vm/freebsd: Update to FreeBSD 13.2
Date: Thu, 20 Apr 2023 12:12:16 +0200 [thread overview]
Message-ID: <20230420101216.786304-24-thuth@redhat.com> (raw)
In-Reply-To: <20230420101216.786304-1-thuth@redhat.com>
According to QEMU's support policy, we stop supporting the previous
major release two years after the the new major release has been
published. So we can stop testing FreeBSD 12 now and should switch
our FreeBSD VM to version 13 instead.
Some changes are needed for this update: The downloadable .ISO images
do not use the serial port as console by default anymore, so they
are not usable in the same way as with FreeBSD 12. Fortunately, the
FreeBSD project now also offers some pre-installed CI images that
have the serial console enabled, so we can use those now, with the
benefit that we can skip almost all parts of the previous installation
process.
Message-Id: <20230419144553.719749-1-thuth@redhat.com>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
tests/vm/freebsd | 101 ++++++++++++-----------------------------------
1 file changed, 25 insertions(+), 76 deletions(-)
diff --git a/tests/vm/freebsd b/tests/vm/freebsd
index ba2ba23d24..11de6473f4 100755
--- a/tests/vm/freebsd
+++ b/tests/vm/freebsd
@@ -28,15 +28,15 @@ class FreeBSDVM(basevm.BaseVM):
name = "freebsd"
arch = "x86_64"
- link = "https://download.freebsd.org/ftp/releases/ISO-IMAGES/12.4/FreeBSD-12.4-RELEASE-amd64-disc1.iso.xz"
- csum = "1dcf6446e31bf3f81b582e9aba3319a258c29a937a2af6138ee4b181ed719a87"
+ link = "https://download.freebsd.org/releases/CI-IMAGES/13.2-RELEASE/amd64/Latest/FreeBSD-13.2-RELEASE-amd64-BASIC-CI.raw.xz"
+ csum = "a4fb3b6c7b75dd4d58fb0d75e4caf72844bffe0ca00e66459c028b198ffb3c0e"
size = "20G"
pkgs = [
# build tools
"git",
"pkgconf",
"bzip2",
- "python37",
+ "python39",
"ninja",
# gnu tools
@@ -78,72 +78,42 @@ class FreeBSDVM(basevm.BaseVM):
mkdir src build; cd src;
tar -xf /dev/vtbd1;
cd ../build
- ../src/configure --python=python3.7 {configure_opts};
+ ../src/configure --python=python3.9 {configure_opts};
gmake --output-sync -j{jobs} {target} {verbose};
"""
- def console_boot_serial(self):
- self.console_wait_send("Autoboot", "3")
- self.console_wait_send("OK", "set console=comconsole\n")
- self.console_wait_send("OK", "boot\n")
-
def build_image(self, img):
- self.print_step("Downloading install iso")
+ self.print_step("Downloading disk image")
cimg = self._download_with_cache(self.link, sha256sum=self.csum)
- img_tmp = img + ".tmp"
- iso = img + ".install.iso"
- iso_xz = iso + ".xz"
-
- self.print_step("Preparing iso and disk image")
- subprocess.check_call(["cp", "-f", cimg, iso_xz])
- subprocess.check_call(["xz", "-dvf", iso_xz])
- self.exec_qemu_img("create", "-f", "qcow2", img_tmp, self.size)
-
- self.print_step("Booting installer")
+ tmp_raw = img + ".tmp.raw"
+ tmp_raw_xz = tmp_raw + ".xz"
+ img_tmp = img + ".tmp.qcow2"
+
+ self.print_step("Preparing disk image")
+ subprocess.check_call(["cp", "-f", cimg, tmp_raw_xz])
+ subprocess.check_call(["xz", "-dvf", tmp_raw_xz])
+ self.exec_qemu_img("convert", "-O", "qcow2", tmp_raw, img_tmp)
+ self.exec_qemu_img("resize", img_tmp, self.size)
+ os.remove(tmp_raw)
+
+ self.print_step("Preparing disk image")
self.boot(img_tmp, extra_args = [
"-machine", "graphics=off",
- "-device", "VGA",
- "-cdrom", iso
+ "-vga", "none"
])
self.console_init()
- self.console_boot_serial()
- self.console_wait_send("Console type", "xterm\n")
-
- # pre-install configuration
- self.console_wait_send("Welcome", "\n")
- self.console_wait_send("Keymap Selection", "\n")
- self.console_wait_send("Set Hostname", "freebsd\n")
- self.console_wait_send("Distribution Select", "\n")
- self.console_wait_send("Partitioning", "\n")
- self.console_wait_send("Partition", "\n")
- self.console_wait_send("Scheme", "\n")
- self.console_wait_send("Editor", "f")
- self.console_wait_send("Confirmation", "c")
-
- self.print_step("Installation started now, this will take a while")
-
- # post-install configuration
+ self.console_wait_send("login:", "root\n")
+ self.console_wait_send("~ #", "service growfs onestart\n")
+
+ # root user
+ self.console_wait_send("~ #", "passwd\n")
self.console_wait("New Password:")
self.console_send("%s\n" % self._config["root_pass"])
self.console_wait("Retype New Password:")
self.console_send("%s\n" % self._config["root_pass"])
- self.console_wait_send("Network Configuration", "\n")
- self.console_wait_send("IPv4", "y")
- self.console_wait_send("DHCP", "y")
- self.console_wait_send("IPv6", "n")
- self.console_wait_send("Resolver", "\n")
-
- self.console_wait_send("Time Zone Selector", "0\n")
- self.console_wait_send("Confirmation", "y")
- self.console_wait_send("Time & Date", "\n")
- self.console_wait_send("Time & Date", "\n")
-
- self.console_wait_send("System Configuration", "\n")
- self.console_wait_send("System Hardening", "\n")
-
# qemu user
- self.console_wait_send("Add User Accounts", "y")
+ self.console_wait_send("~ #", "adduser\n")
self.console_wait("Username")
self.console_send("%s\n" % self._config["guest_user"])
self.console_wait("Full name")
@@ -165,13 +135,7 @@ class FreeBSDVM(basevm.BaseVM):
self.console_wait_send("Lock out", "\n")
self.console_wait_send("OK", "yes\n")
self.console_wait_send("Add another user", "no\n")
-
- self.console_wait_send("Final Configuration", "\n")
- self.console_wait_send("Manual Configuration", "\n")
- self.console_wait_send("Complete", "\n")
-
- self.print_step("Installation finished, rebooting")
- self.console_boot_serial()
+ self.console_wait_send("~ #", "exit\n")
# setup qemu user
prompt = "$"
@@ -183,35 +147,20 @@ class FreeBSDVM(basevm.BaseVM):
self.console_ssh_init(prompt, "root", self._config["root_pass"])
self.console_sshd_config(prompt)
- # setup serial console
- self.console_wait(prompt)
- self.console_send("echo 'console=comconsole' >> /boot/loader.conf\n")
-
- # setup boot delay
- self.console_wait(prompt)
- self.console_send("echo 'autoboot_delay=1' >> /boot/loader.conf\n")
-
# setup virtio-blk #1 (tarfile)
self.console_wait(prompt)
self.console_send("echo 'chmod 666 /dev/vtbd1' >> /etc/rc.local\n")
- self.print_step("Configuration finished, rebooting")
- self.console_wait_send(prompt, "reboot\n")
- self.console_wait("login:")
- self.wait_ssh()
-
self.print_step("Installing packages")
self.ssh_root_check("pkg install -y %s\n" % " ".join(self.pkgs))
# shutdown
self.ssh_root(self.poweroff)
- self.console_wait("Uptime:")
self.wait()
if os.path.exists(img):
os.remove(img)
os.rename(img_tmp, img)
- os.remove(iso)
self.print_step("All done")
if __name__ == "__main__":
--
2.31.1
next prev parent reply other threads:[~2023-04-20 10:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-20 10:11 [PULL 00/23] First batch of testing and misc patches for 8.1 Thomas Huth
2023-04-20 10:11 ` [PULL 01/23] hw: Add compat machines " Thomas Huth
2023-04-20 10:11 ` [PULL 02/23] docs: Fix typo (wphx => whpx) Thomas Huth
2023-04-20 10:11 ` [PULL 03/23] docs/cxl: Fix sentence Thomas Huth
2023-04-20 10:11 ` [PULL 04/23] test: Fix test-crypto-secret when compiling without keyring support Thomas Huth
2023-04-20 10:11 ` [PULL 05/23] qtest: Don't assert on "-qtest chardev:myid" Thomas Huth
2023-04-20 10:11 ` [PULL 06/23] chardev: Allow setting file chardev input file on the command line Thomas Huth
2023-04-20 10:12 ` [PULL 07/23] travis.yml: Add missing clang-10 package to the 'Clang (disable-tcg)' job Thomas Huth
2023-04-20 10:12 ` [PULL 08/23] travis.yml: Add missing 'flex', 'bison' packages to 'GCC (user)' job Thomas Huth
2023-04-20 10:12 ` [PULL 09/23] tests/migration: Only run auto_converge in slow mode Thomas Huth
2023-04-20 10:12 ` [PULL 10/23] target/i386: Set family/model/stepping of the "max" CPU according to LM bit Thomas Huth
2023-04-20 10:12 ` [PULL 11/23] hw/char: Move two more files from specific_ss to softmmu_ss Thomas Huth
2023-04-20 10:12 ` [PULL 12/23] softmmu/qtest: Move the target-specific pseries RTAS code out of qtest.c Thomas Huth
2023-04-20 10:12 ` [PULL 13/23] include/exec: Provide the tswap() functions for target independent code, too Thomas Huth
2023-04-20 10:12 ` [PULL 14/23] softmmu: Make qtest.c target independent Thomas Huth
2023-04-20 10:12 ` [PULL 15/23] hw/display: Compile vga.c as target-independent code Thomas Huth
2023-04-20 10:12 ` [PULL 16/23] softmmu: Move dirtylimit.c into the target independent source set Thomas Huth
2023-04-20 10:12 ` [PULL 17/23] hw/core: Move numa.c " Thomas Huth
2023-04-20 10:12 ` [PULL 18/23] cpu: Remove parameter of list_cpus() Thomas Huth
2023-04-20 10:12 ` [PULL 19/23] MAINTAINERS: Add Juan Quintela to developer guides review Thomas Huth
2023-04-20 10:12 ` [PULL 20/23] qtest: Add functions for accessing devices on Aspeed I2C controller Thomas Huth
2023-04-20 10:12 ` [PULL 21/23] qtest: Move tpm_util_tis_transmit() into tpm-tis-utils.c and rename it Thomas Huth
2023-04-20 10:12 ` [PULL 22/23] qtest: Add a test case for TPM TIS I2C connected to Aspeed I2C controller Thomas Huth
2023-04-20 10:12 ` Thomas Huth [this message]
2023-04-21 17:28 ` [PULL 00/23] First batch of testing and misc patches for 8.1 Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230420101216.786304-24-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=imp@bsdimp.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).