Multipass是Canonical(Ubuntu的母公司)开发的一款轻量级虚拟机管理工具,可在桌面操作系统上快速部署和管理虚拟机。它为开发人员和系统管理员提供了一种简单而强大的方式来创建、启动和管理虚拟机实例,而无需深入了解虚拟化技术的细节。Multipass允许用户使用命令行或图形用户界面(GUI)创建和管理虚拟机,使得在本地或云端轻松构建和测试多种环境成为可能。
目前,我已经完成了一段 PowerShell 脚本的编写,该脚本可以模拟 Multipass 的功能,实现了一键开启虚拟机的操作。
首先从Ubuntu Cloud Images官网下载云镜像文件,目前以Ubuntu Server 24.04为例


重置密码
sudo apt install libguestfs-tools
virt-customize -a noble-server-cloudimg-amd64.img --root-password password:123456
然后把img文件转换成vhdx文件
在Windows上的WSL(Windows Subsystem for Linux)中安装qemu-img
sudo apt update
sudo apt install qemu-utils
qemu-img --version
打开FinalShell把Ubuntu云镜像文件noble-server-cloudimg-amd64.img上传到root目录下
qemu-img convert -p -f qcow2 -O vhdx noble-server-cloudimg-amd64.img noble-server-cloudimg-amd64.vhdx
把vhdx文件保存到与PS(PowerShell)代码相同的目录中。
mkdir -p seed-config
新建meta-data和user-data这2个文件:
meta-data内容如下:
instance-id: iid-local01
local-hostname: ubuntu-vm
user-data内容如下:
#cloud-config
users:
- name: ubuntu
groups:
- sudo
homedir: /home/ubuntu
lock_passwd: false
shell: /bin/bash
package_update: true
package_upgrade: true
packages:
- openssh-server # 确保安装 SSH 服务器
package_reboot_if_required: false
write_files:
- path: /etc/netplan/50-cloud-init.yaml
content: |
network:
version: 2
ethernets:
eth0:
dhcp4: true
eth1:
dhcp4: false
addresses:
- 192.168.218.110/24
- path: /etc/systemd/resolved.conf
content: |
[Resolve]
DNS=8.8.8.8 8.8.4.4
DNSStubListener=no
runcmd:
- sed -i 's/#\?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
- sed -i 's/#\?PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config
- sed -i 's/#\?KbdInteractiveAuthentication .*/#KbdInteractiveAuthentication no/' /etc/ssh/sshd_config
- echo 'ubuntu:123456' | chpasswd
- chmod 600 /etc/netplan/50-cloud-init.yaml # 设置 Netplan 配置文件的权限
- netplan apply # 应用 Netplan 配置
- systemctl enable ssh # 确保 SSH 服务在启动时自动启动
- systemctl restart ssh # 重启 SSH 服务使更改生效
导出seed.iso
genisoimage -output seed.iso -volid cidata -joliet -rock seed-config/user-data seed-config/meta-data
下载seed.iso并将其放置到与PS(PowerShell)代码相同的目录中。
最后附上创建和启动 Hyper-V 虚拟机的PS代码:
https://raw.githubusercontent.com/Benson80/Ubuntu-Cloud-VM/main/startsx.ps1

你可以通过命令行启动虚拟机,以创建具有特定配置的虚拟环境。例如,通过输入"startsx -n vm1 -c 4 -m 4 -d 100"来启动一个名为"vm1"的虚拟机,该虚拟机配置为拥有4个核心的CPU、4GB的内存和100GB的虚拟硬盘。而如果只输入"startsx -n 虚拟机名称",则默认创建一个1核心CPU、1GB内存和5GB硬盘大小的虚拟机。
添加系统环境变量代码:
https://raw.githubusercontent.com/Benson80/Ubuntu-Cloud-VM/main/UpdatePath.ps1
删除 known_hosts 文件
https://raw.githubusercontent.com/Benson80/Ubuntu-Cloud-VM/main/ClearKnownHosts.ps1