有没有办法解决不同版本的 Ubuntu 服务器之间的 boot_command 问题?我花了几个小时在 Google 上搜索,发现人们编写 boot 命令的方式有很大差异。
我正在使用打包程序为 VirtualBox 创建虚拟机。我当前的启动命令如下
"<enter><enter><f6><esc><wait> ", "autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/", "<wait><enter>"
此命令在 Ubuntu Server 20.04 上运行,但在 21.10 版本上失败。
我的问题是,对于启动命令应该如何写似乎没有达成共识:
另一个网站有:
"boot_command": [
"<esc><wait><esc><wait><f6><wait><esc><wait>",
"<bs><bs><bs><bs><bs>",
"autoinstall ds=nocloud-net;s=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ ",
"--- <enter>"
我看到的另一个有几排"<bs><bs><bs><bs><bs><bs><bs><bs>"
。
我仍在搜索文档和互联网,寻找确定有效 boot_command 的过程。
有人有适用于 21.10 的 boot_command 吗?如果有,那么有人如何知道它应该是什么。
我对 Ubuntu 还比较陌生,以前没有使用过自动安装,而且旧的 preseed.cfg 方式和服务器的 subuquity 以及桌面 ubuquity 之间的差异非常令人困惑,直到我弄清楚了这一切背后的逻辑。
谢谢你的帮助。
答案1
使用 packer 的新 HCL2 模板创建框,以下启动命令可与 Ubuntu Server 21.10 配合使用。对于 json,您可以使用旧式“boot_command”:[] 语法。
boot_command = [
" <wait>",
" <wait>",
" <wait>",
" <wait>",
" <wait>",
"c",
"<wait>",
"set gfxpayload=keep",
"<enter><wait>",
"linux /casper/vmlinuz quiet<wait>",
" autoinstall<wait>",
" ds=nocloud-net<wait>",
"\\;s=http://<wait>",
"{{.HTTPIP}}<wait>",
":{{.HTTPPort}}/<wait>",
" ---",
"<enter><wait>",
"initrd /casper/initrd<wait>",
"<enter><wait>",
"boot<enter><wait>"
]