问题
我需要通过打包程序和 Debian (arm64) ISO 创建 Debian (arm64) 的 qcow2 映像。packer的社区例子都是AMD64的。我修改了AMD 64 HCl文件packer社区的例子可以启动QEMU arm64虚拟机,加载预设文件进入自动安装,
但是,没有定义根文件系统出现在分区磁盘步骤中。我检查了 QEMU 磁盘(qcow2),partman auto 不起作用。这是我的相关代码。请指出问题和解决方法
相关代码
. 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的自动安装就可以继续了