add qcow2 and vmdk boot images

This commit is contained in:
Mikaël Cluseau
2025-06-12 11:53:08 +02:00
parent 1871eac7bb
commit 58cfaa7d0f
5 changed files with 72 additions and 10 deletions

View File

@ -56,6 +56,55 @@ func buildBootImgGZ(out io.Writer, ctx *renderContext) (err error) {
return
}
func buildBootImgQemuConvert(out io.Writer, ctx *renderContext, format string) (err error) {
imgPath, err := func() (imgPath string, err error) {
bootImg, err := os.CreateTemp(os.TempDir(), "boot.img-")
if err != nil {
return
}
defer rmTempFile(bootImg)
err = setupBootImage(bootImg, ctx)
if err != nil {
return
}
err = bootImg.Sync()
if err != nil {
return
}
imgPath = bootImg.Name() + "." + format
err = run("qemu-img", "convert", "-f", "raw", "-O", format, bootImg.Name(), imgPath)
if err != nil {
return
}
return
}()
defer os.Remove(imgPath)
if err != nil {
return
}
// send the result
img, err := os.Open(imgPath)
if err != nil {
return
}
io.Copy(out, img)
return
}
func buildBootQcow2(out io.Writer, ctx *renderContext) (err error) {
return buildBootImgQemuConvert(out, ctx, "qcow2")
}
func buildBootVmdk(out io.Writer, ctx *renderContext) (err error) {
return buildBootImgQemuConvert(out, ctx, "vmdk")
}
var grubSupportVersion = flag.String("grub-support", "1.1.0", "GRUB support version")
func setupBootImage(bootImg *os.File, ctx *renderContext) (err error) {