LXD

如果你不喜欢图形界面安装虚拟机,那 LXD 一定是个不错的选择,我会以 LXD 安装 Win10 为例,服务器是安装了 Ubuntu 20.04 的 J1900 小主机,主要参考了 Ubuntu 官方的教程并结合 Google 遇到的问题总结而来,所有安装命令都是在 root 用户下执行

安装和更新

snap install lxd --channel=5.0/stable

snap refresh lxd --channel=5.0/stable

打包镜像

安装工具

apt install -y libguestfs-tools wimtools

snap install distrobuilder --classic

转换 Win10 LTSC 官方镜像为 LXD 镜像,我喜欢 LTSC

distrobuilder repack-windows --windows-version=w10 SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO win10.lxd.iso

初始化

初始化 LXD

lxd init --minimal

新建虚拟机

lxc init win10 --vm --empty

设置虚拟机磁盘大小

lxc config device override win10 root size=50GiB

虚拟机开机自动启动

lxc config set win10 boot.autostart true

分配虚拟机 CPU 和内存

lxc config set win10 limits.cpu=4 limits.memory=4GiB

挂载之前打包的安装镜像到虚拟机

lxc config device add win10 install disk source=/root/win10.lxd.iso boot.priority=10

配置远程

由于服务器没有桌面,Win10 安装还是需界面来配置的,所以需要配置远程的端口和密码

以下在服务器执行

lxc config set core.https_address :8443

lxc config set core.trust_password 123456

以下在 Windows PC 以管理员打开 PowerShell 执行

安装 choco

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装 LXC 和 virt-viewer

choco install lxc virt-viewer

添加远程,ip 为服务器 ip,密码为之前设置的 123456

lxc remote add win10 192.168.2.12

lxc remote switch win10

查看所有远程

lxc remote list

安装 Win10

操作要快服务器执行后立刻执行远程连接,没问题就能打开 Win10 的安装界面了

以下在服务器执行

启动 win10

lxc start win10

以下在 Windows PC 以管理员打开 PowerShell 执行

远程连接

lxc console win10 --type=vga

驱动安装

虚拟机安装好后浏览器下载驱动的 ISO 挂载后安装

网络配置

LXD 的网络有很多种,参考这里

所有操作需要在停止虚拟机的情况下执行

遇到问题重启虚拟机再试,配置前记得关闭虚拟机再分配

  • MACVLAN (简单但不推荐,无法和宿主机相互访问)

    添加一个 名叫 macvlan 专用的 profile 类型是 macvlan,父节点是服务器的网卡 enp1s0,可以根据 ip addr 查看

    lxc profile create macvlan
    
    lxc profile device add macvlan eth0 nic nictype=macvlan parent=enp1s0
    

    将 macvlan 添加到 Win10

    lxc profile add win10 macvlan
    
  • 相关命令

    查看配置

    lxc profile list
    
    lxc profile show macvlan
    

    编辑配置,比如添加备注

    lxc profile edit macvlan
    

    移除配置

    lxc profile remove win10 default
    

其他命令

删除安装镜像

lxc config device remove win10 install

添加 USB 设备

vendorid 和 productid 为 lsusb 显示的 ID

lsusb

lxc config device add win10 print usb vendorid=2d84 productid=b3e8

强制停止

lxc stop -f win10

Web UI

5.14 开始支持UI

snap set lxd ui.enable=true

systemctl reload snap.lxd.daemon