diff --git a/metropolis/test/launch/BUILD.bazel b/metropolis/test/launch/BUILD.bazel
index 492fdd4..bbe3eb9 100644
--- a/metropolis/test/launch/BUILD.bazel
+++ b/metropolis/test/launch/BUILD.bazel
@@ -13,7 +13,8 @@
     ],
     data = [
         "//metropolis/cli/metroctl:metroctl_lite",
-        "//metropolis/node:image",
+        "//metropolis/node:oci_image_uncompressed",
+        "//metropolis/node/abloader",
         "//metropolis/test/nanoswitch:initramfs",
         "//metropolis/test/swtpm/certtool",
         "//metropolis/test/swtpm/swtpm_cert",
@@ -37,11 +38,11 @@
         "xOvmfCodePath": "$(rlocationpath //third_party/edk2:OVMF_CODE.fd )",
         "xKernelPath": "$(rlocationpath //osbase/test/ktest:linux-testing )",
         "xInitramfsPath": "$(rlocationpath //metropolis/test/nanoswitch:initramfs )",
-        "xNodeImagePath": "$(rlocationpath //metropolis/node:image )",
+        "xNodeImagePath": "$(rlocationpath //metropolis/node:oci_image_uncompressed )",
+        "xAbloaderPath": "$(rlocationpath //metropolis/node/abloader )",
     },
     deps = [
         "//go/logging",
-        "//go/qcow2",
         "//metropolis/cli/metroctl/core",
         "//metropolis/node",
         "//metropolis/node/core/curator/proto/api",
@@ -49,8 +50,13 @@
         "//metropolis/node/core/rpc/resolver",
         "//metropolis/proto/api",
         "//metropolis/proto/common",
+        "//osbase/blockdev",
+        "//osbase/build/mkimage/osimage",
         "//osbase/logbuffer",
+        "//osbase/oci",
+        "//osbase/oci/osimage",
         "//osbase/oci/registry",
+        "//osbase/structfs",
         "//osbase/test/qemu",
         "@com_github_cenkalti_backoff_v4//:backoff",
         "@com_github_kballard_go_shellquote//:go-shellquote",
diff --git a/metropolis/test/launch/cluster.go b/metropolis/test/launch/cluster.go
index 5ad4121..1e3f42b 100644
--- a/metropolis/test/launch/cluster.go
+++ b/metropolis/test/launch/cluster.go
@@ -46,12 +46,16 @@
 	cpb "source.monogon.dev/metropolis/proto/common"
 
 	"source.monogon.dev/go/logging"
-	"source.monogon.dev/go/qcow2"
 	metroctl "source.monogon.dev/metropolis/cli/metroctl/core"
 	"source.monogon.dev/metropolis/node"
 	"source.monogon.dev/metropolis/node/core/rpc"
 	"source.monogon.dev/metropolis/node/core/rpc/resolver"
+	"source.monogon.dev/osbase/blockdev"
+	"source.monogon.dev/osbase/build/mkimage/osimage"
+	"source.monogon.dev/osbase/oci"
+	ociosimage "source.monogon.dev/osbase/oci/osimage"
 	"source.monogon.dev/osbase/oci/registry"
+	"source.monogon.dev/osbase/structfs"
 	"source.monogon.dev/osbase/test/qemu"
 )
 
@@ -161,23 +165,53 @@
 		return nil, fmt.Errorf("failed to create the state directory: %w", err)
 	}
 
-	// Initialize the node's storage with a prebuilt image.
-	st, err := os.Stat(xNodeImagePath)
+	// Initialize the node's storage.
+	ociImage, err := oci.ReadLayout(xNodeImagePath)
 	if err != nil {
-		return nil, fmt.Errorf("cannot read image file: %w", err)
+		return nil, fmt.Errorf("failed to read OS image: %w", err)
 	}
-	diskBytes = max(diskBytes, uint64(st.Size()))
+	osImage, err := ociosimage.Read(ociImage)
+	if err != nil {
+		return nil, fmt.Errorf("failed to read OS image: %w", err)
+	}
 
-	di := filepath.Join(stdp, "image.qcow2")
-	logf("Cluster: generating node QCOW2 snapshot image: %s -> %s", xNodeImagePath, di)
+	efiPayload, err := osImage.PayloadUnverified("kernel.efi")
+	if err != nil {
+		return nil, fmt.Errorf("cannot open EFI payload in OS image: %w", err)
+	}
+	systemImage, err := osImage.PayloadUnverified("system")
+	if err != nil {
+		return nil, fmt.Errorf("cannot open system image in OS image: %w", err)
+	}
 
-	df, err := os.Create(di)
+	abloader, err := structfs.OSPathBlob(xAbloaderPath)
+	if err != nil {
+		return nil, fmt.Errorf("cannot open abloader: %w", err)
+	}
+
+	di := filepath.Join(stdp, "image.img")
+	logf("Cluster: generating node image: %s -> %s", xNodeImagePath, di)
+
+	df, err := blockdev.CreateFile(di, 512, int64(diskBytes/512))
 	if err != nil {
 		return nil, fmt.Errorf("while opening image for writing: %w", err)
 	}
 	defer df.Close()
-	if err := qcow2.Generate(df, qcow2.GenerateWithBackingFile(xNodeImagePath), qcow2.GenerateWithFileSize(diskBytes)); err != nil {
-		return nil, fmt.Errorf("while creating copy-on-write node image: %w", err)
+
+	installParams := &osimage.Params{
+		PartitionSize: osimage.PartitionSizeInfo{
+			ESP:    128,
+			System: 1024,
+			Data:   128,
+		},
+		Architecture: osImage.Config.ProductInfo.Architecture(),
+		SystemImage:  systemImage,
+		EFIPayload:   efiPayload,
+		ABLoader:     abloader,
+		Output:       df,
+	}
+	if _, err := osimage.Write(installParams); err != nil {
+		return nil, fmt.Errorf("while creating node image: %w", err)
 	}
 
 	// Initialize the OVMF firmware variables file.
@@ -249,6 +283,9 @@
 	if options.MemoryMiB == 0 {
 		options.MemoryMiB = 2048
 	}
+	if options.DiskBytes == 0 {
+		options.DiskBytes = 5 * 1024 * 1024 * 1024
+	}
 
 	// If it's the node's first start, set up its runtime directories.
 	if options.Runtime == nil {
@@ -295,7 +332,7 @@
 
 	tpmSocketPath := filepath.Join(r.sd, "tpm-socket")
 	fwVarPath := filepath.Join(r.ld, "OVMF_VARS.fd")
-	storagePath := filepath.Join(r.ld, "image.qcow2")
+	storagePath := filepath.Join(r.ld, "image.img")
 	qemuArgs := []string{
 		"-machine", "q35",
 		"-accel", "kvm",
@@ -306,7 +343,7 @@
 		"-smp", fmt.Sprintf("cores=%d,threads=%d", options.CPUs, options.ThreadsPerCPU),
 		"-drive", "if=pflash,format=raw,readonly=on,file=" + xOvmfCodePath,
 		"-drive", "if=pflash,format=raw,file=" + fwVarPath,
-		"-drive", "if=virtio,format=qcow2,cache=unsafe,file=" + storagePath,
+		"-drive", "if=virtio,format=raw,cache=unsafe,file=" + storagePath,
 		"-netdev", qemuNetConfig.ToOption(qemuNetType),
 		"-device", "virtio-net-pci,netdev=net0,mac=" + options.Mac.String(),
 		"-chardev", "socket,id=chrtpm,path=" + tpmSocketPath,
diff --git a/metropolis/test/launch/launch.go b/metropolis/test/launch/launch.go
index 759bf28..3864eb2 100644
--- a/metropolis/test/launch/launch.go
+++ b/metropolis/test/launch/launch.go
@@ -22,6 +22,7 @@
 	xKernelPath       string
 	xInitramfsPath    string
 	xNodeImagePath    string
+	xAbloaderPath     string
 )
 
 func init() {
@@ -30,7 +31,7 @@
 		&xSwtpmPath, &xSwtpmSetupPath, &xSwtpmLocalCAPath,
 		&xSwtpmCertPath, &xCerttoolPath, &xMetroctlPath,
 		&xOvmfCodePath, &xOvmfVarsPath, &xKernelPath,
-		&xInitramfsPath, &xNodeImagePath,
+		&xInitramfsPath, &xNodeImagePath, &xAbloaderPath,
 	} {
 		*path, err = runfiles.Rlocation(*path)
 		if err != nil {
