[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH stable-7.2 10/23] tests/vm/freebsd: Update to FreeBSD 13.2
From: |
Thomas Huth |
Subject: |
[PATCH stable-7.2 10/23] tests/vm/freebsd: Update to FreeBSD 13.2 |
Date: |
Tue, 3 Dec 2024 11:53:33 +0100 |
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>
(cherry picked from commit ec6fb1c8cd8d55c3d2a34cacfea6df0fe6c76057)
---
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.47.0
- [PATCH stable-7.2 00/23] Fixes for the CI in the 7.2 stable branch, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 02/23] Upgrade all packages in the FreeBSD VMs to ensure the freshness, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 03/23] lcitool: drop perl from QEMU project/dependencies, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 01/23] FreeBSD: Upgrade to 12.4 release, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 04/23] lcitool: drop texinfo from QEMU project/dependencies, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 05/23] tests: add socat dependency for tests, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 06/23] .gitlab-ci.d/cirrus: Drop the CI job for compiling with FreeBSD 12, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 08/23] lcitool: update submodule, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 09/23] .gitlab-ci.d/cirrus: Add manual testing of macOS 14 (Sonoma), Thomas Huth, 2024/12/03
- [PATCH stable-7.2 07/23] .gitlab-ci.d/cirrus: Upgrade macOS to 13 (Ventura), Thomas Huth, 2024/12/03
- [PATCH stable-7.2 10/23] tests/vm/freebsd: Update to FreeBSD 13.2,
Thomas Huth <=
- [PATCH stable-7.2 11/23] tests/vm/freebsd: Add additional library paths for libfdt, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 12/23] Update FreeBSD CI jobs FreeBSD 14.1, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 16/23] gitlab: switch from 'stable' to 'latest' docker container tags, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 13/23] ci: install meson in CirrusCI KVM build environment, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 18/23] tests: update most Debian images to Bookworm, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 21/23] tests: update lcitool to fix freebsd py311-yaml rename, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 20/23] testing: bump mips64el cross to bookworm and fix package list, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 17/23] tests/lcitool: add an explicit gcc-native package, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 14/23] .gitlab-ci.d/cirrus: Remove the netbsd and openbsd jobs, Thomas Huth, 2024/12/03
- [PATCH stable-7.2 19/23] tests: bump libvirt-ci for libasan and libxdp, Thomas Huth, 2024/12/03