0

问题

我需要通过打包程序和 Debian (arm64) ISO 创建 Debian (arm64) 的 qcow2 映像。packer的社区例子都是AMD64的。我修改了AMD 64 HCl文件packer社区的例子可以启动QEMU arm64虚拟机,加载预设文件进入自动安装,

但是,没有定义根文件系统出现在分区磁盘步骤中。我检查了 QEMU 磁盘(qcow2),partman auto 不起作用。这是我的相关代码。请指出问题和解决方法

相关代码

打包程序.hcl

. HCl也是x86的,但是通过修改QEMU的二进制文件,有boot_命令qemu_args可以自动安装

修改内容如下

    boot_command                 = [
    "<wait10>c<wait5><wait10>",
    "linux /install.a64/vmlinuz --quiet",
    " auto=true ",
    " url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/${var.preseed_file} ",
    " hostname=${var.vm_name} ", " domain=${var.domain} ", " interface=auto ",
    " ---",
    "<enter><wait>",
    "initrd /install.a64/initrd.gz",
    "<enter><wait>",
    "boot<enter><wait>"
   ]
 qemuargs = [
        [ "-m", "8192" ],
        [ "-cpu", "max" ],
        [ "-smp", "4" ],
        [ "-M", "virt" ],
        # iso
       [ "-device", "nec-usb-xhci" ],
       [ "-device", "usb-storage,drive=install" ],
       [ "-drive", "file=/root/packer-build-master/source/debian/debian-11.2.0-arm64-netinst.iso,if=none,id=install,media=cdrom,readonly=on" ],
       
        # hd
       [ "-drive", "if=none,file=build/test/arm64/base-bullseye,id=hd,cache=writeback,discard=ignore,format=qcow2" ],
       ["-device", "virtio-blk-device,drive=hd"],
 
       # [ "-bios", "edk2-aarch64-code.fd" ],
        [ "-bios", "/usr/share/qemu-efi-aarch64/QEMU_EFI.fd" ],
        [ "-boot", "strict=off" ],
        [ "-monitor", "none" ]

由于社区示例没有arm,所以x86直接使用preseed代码。这里的另一个陷阱是在预设文件中使用了 packer 变量,但这是一个功能社区示例。此功能尚未实现。我的本地预设已将变量更改为实际值

预置代码

运行结果及报错内容

通过VNC连接QEMU虚拟机,查看是否到达磁盘分区,然后出现no root file system is defined

我的解决思路和尝试过的方法

找到Debian预设关于amr64的分区示例,但是没有找到

官方链接:

https://www.debian.org/releases/stable/arm64/apbs04.en.html#preseed -Partman#preset 分区相关

https://salsa.debian.org/installer-team/partman-auto#pressed开源仓库里有各种架构分区的例子,但是没有arm64

我想要达到的目标

找到关于arm64 Debian preset的分区,这样packer的自动安装就可以继续了

4

0 回答 0