Vmware-iso builder创建VM失败且未生成vmware.log文件求助
问题
尝试通过基础Packer模板基于现有Ubuntu ISO镜像创建VMware专属镜像时,Packer构建失败,报错Error starting VM: VMware error: Error: The operation was canceled。输出目录已生成vmdk、vmx等文件,但未生成用于排查的vmware.log文件(此前该文件会自动生成)。已安装vmware-workstation 16.1.0.17198959,相关信息如下:
构建命令及输出
$ packer build -on-error=ask ubuntu_vmware.json vmware-iso: output will be in this color. ==> vmware-iso: Retrieving ISO ==> vmware-iso: Trying ../ubuntu-20.04.6-desktop-amd64.iso ==> vmware-iso: Trying ../ubuntu-20.04.6-desktop-amd64.iso?checksum=md5%3Aeeabb7996e94b2f0a6eaf73f8943d19f ==> vmware-iso: ../ubuntu-20.04.6-desktop-amd64.iso?checksum=md5%3Aeeabb7996e94b2f0a6eaf73f8943d19f => /home/user/ubuntu-20.04.6-desktop-amd64.iso ==> vmware-iso: Configuring output and export directories... ==> vmware-iso: Creating required virtual machine disks ==> vmware-iso: Building and writing VMX file ==> vmware-iso: Starting virtual machine... vmware-iso: The VM will be run headless, without a GUI. If you want to vmware-iso: view the screen of the VM, connect via VNC with the password "yqPTl0YR" to vmware-iso: vnc://127.0.0.1:5974 ==> vmware-iso: Error starting VM: VMware error: Error: The operation was canceled ==> vmware-iso: Error starting VM: VMware error: Error: The operation was canceled ==> vmware-iso: Step "StepRun" failed ==> vmware-iso: [c] Clean up and exit, [a] abort without cleanup, or [r] retry step (build may fail even if retry succeeds)?
输出目录文件列表
$ ls ubuntu-vware-new/ disk-s001.vmdk disk-s003.vmdk disk-s005.vmdk disk-s007.vmdk disk-s009.vmdk disk.vmdk packer-vmware-example.vmx disk-s002.vmdk disk-s004.vmdk disk-s006.vmdk disk-s008.vmdk disk-s010.vmdk packer-vmware-example.vmsd packer-vmware-example.vmxf
Packer模板配置
{ "builders": [ { "type": "vmware-iso", "iso_url": "../ubuntu-20.04.6-desktop-amd64.iso", "iso_checksum": "md5:eeabb7996e94b2f0a6eaf73f8943d19f", "guest_os_type": "ubuntu-64", "headless": "true", "communicator": "ssh", "ssh_username": "packer", "ssh_password": "packer", "ssh_wait_timeout": "20m", "output_directory": "ubuntu-vware-new", "shutdown_command": "echo 'packer' | sudo -S shutdown -P now", "vm_name": "packer-vmware-example", "vmx_data": { "memsize": "2048", "numvcpus": "2" } } ], "provisioners": [ { "type": "shell", "inline": [ "echo 'Hello, Packer!'" ] } ] }
排查与解决建议
你当前的模板缺少关键配置,同时存在导致VM启动失败的核心问题,具体调整方案如下:
1. 添加Ubuntu自动安装应答配置
Ubuntu Desktop ISO默认需要手动交互完成安装,Packer无法自动处理,这是VM启动后无法继续、最终被取消的核心原因。必须在builder配置中添加**boot_command**及对应HTTP目录配置来自动完成安装流程:
"boot_command": [ "<esc><wait>", "install <wait>", "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg <wait>", "debian-installer=en_US <wait>", "auto <wait>", "locale=en_US <wait>", "kbd-chooser/method=us <wait>", "netcfg/get_hostname={{ .Name }} <wait>", "netcfg/get_domain=local <wait>", "fb=false <wait>", "debconf/frontend=noninteractive <wait>", "console-setup/ask_detect=false <wait>", "console-keymaps-at/keymap=us <wait>", "keyboard-configuration/xkb-keymap=us <wait>", "<enter><wait>" ], "http_directory": "./http"
同时在当前目录创建http文件夹,里面放置preseed.cfg文件,内容需包含创建packer用户、设置密码、开启SSH、自动分区等关键步骤(可参考Ubuntu官方自动安装模板)。
2. 强制启用VMware日志生成
在vmx_data中添加日志配置,确保VM启动时生成vmware.log:
"vmx_data": { "memsize": "2048", "numvcpus": "2", "log.fileName": "vmware.log", "log.append": "true" }
3. 优化Guest OS类型
对于Ubuntu 20.04,VMware Workstation 16可使用更精确的guest_os_type值,提升兼容性:
"guest_os_type": "ubuntu64-2004"
4. 环境权限检查
- 确保当前用户已加入
vmware用户组,拥有VMware运行权限 - 关闭其他占用虚拟化资源的程序(如VirtualBox、WSL2的Hyper-V)
- 尝试手动启动生成的
packer-vmware-example.vmx文件,查看VMware弹出的具体错误提示
内容的提问来源于stack exchange,提问作者user3462473
相关产品推荐
相关产品推荐

