Satu set utilitas untuk membantu Anda mengelola VM dengan Virtualization.framework
# make sure xcode command-line tools are installed
xcode-select --install
# run build, install. This will install vmcli and vmctl to /usr/local/bin
make
sudo make install
Anda sekarang sudah selesai menginstal vmcli dan vmctl
Atur variabel lingkungan VMCTLDIR ke ~/VMs jadi vmctl tahu cara menemukan vms. Jika Anda tidak mengatur ini, vmctl akan menggunakan direktori kerja saat ini untuk menemukan VM.
echo ' export VMCTLDIR="$HOME/VMs" ' >> ~ /.zprofile
export VMCTLDIR= " $HOME /VMs " Provisi A Ubuntu VM, dan instal ke ~/VMs . VM akan membuat pengguna Anda dengan kunci publik SSH Anda di ~/.ssh/id_rsa.pub .
make build/vm/ubuntu
mv build/vm/ubuntu " ${VMCTLDIR} /ubuntu "Secara opsional memperluas volume VM, misalnya menjadi 16g.
dd if=/dev/null of= " ${VMCTLDIR} /ubuntu/disk.img " bs=1g count=0 seek=16Opsional Edit Konfigurasi VM untuk lebih banyak RAM dan/atau CPU Core
vi " ${VMCTLDIR} /ubuntu/vm.conf "Mulai VM
vmctl start ubuntuLampirkan ke Konsol Serial, gunakan (Ctrl+A - D untuk berhenti)
vmctl attach ubuntu
Anda dapat menggunakan vmctl ip ubuntu untuk memeriksa IP VM Anda.
Tunggu VM boot dan ssh ke dalam VM
vmctl ssh ubuntu
Anda harus mematikan VM menggunakan SSH di dalam VM. Jika itu bukan pilihan, Anda dapat menutupnya secara paksa.
vmctl stop ubuntu
Dukungan untuk berbagi folder dengan host ditambahkan dalam macOS 12 (monterey), dan ini diaktifkan jika dikompilasi pada 12.0 atau lebih baru.
Pada 12.1 dukungan macOS untuk fitur ini tampaknya agak tidak dapat diandalkan. Jika Anda tetap ingin mencobanya, gunakan --folder <host path>:<tag> argumen. Di tamu, pasang ini menggunakan -t virtiofs <tag> <guest mountpoint> .
Jika komponen :<tag> dihilangkan, jalur host akan digunakan sebagai tag, tetapi perhatikan ada batas ukuran 36 UTF-8 byte untuk tag.
Folder bersama dapat dibuat hanya baca untuk tamu dengan menambahkan ro sebagai komponen ketiga ke argumen folder bersama: --folder <host path>:<tag>:ro
Sebagai contoh: di host, buat direktori foo di direktori VM (di mana kernel dan initrd live), dan tambahkan ini menggunakan --folder . Misalnya, tambahkan folder=foo ke vm.conf , atau lulus --folder=foo ke vmcli secara langsung.
Dalam tamu, pastikan /mnt/foo adalah direktori kosong, lalu sudo mount -t virtiofs foo /mnt/foo .
USAGE: vmcli [--cpu-count <cpu-count>] [--memory-size <memory-size>] [--memory-size-suffix <memory-size-suffix>] [--disk <disk> ...] [--cdrom <cdrom> ...] [--folder <folder> ...] [--network <network> ...] [--balloon <balloon>] [--bootloader <bootloader>] [--kernel <kernel>] [--initrd <initrd>] [--cmdline <cmdline>] [--escape-sequence <escape-sequence>]
OPTIONS:
-c, --cpu-count <cpu-count>
CPU count (default: 1)
-m, --memory-size <memory-size>
Memory Bytes (default: 512)
--memory-size-suffix <memory-size-suffix>
Memory Size Suffix (default: MiB)
-d, --disk <disk> Disks to use
--cdrom <cdrom> CD-ROMs to use
-f, --folder <folder> Folders to share (macOS 12.0 or later)
-n, --network <network> Networks to use. e.g. aa:bb:cc:dd:ee:ff@nat for a nat device, or ...@en0 for bridging to en0. Omit mac address for a
generated address. (default: nat)
--balloon <balloon> Enable / Disable Memory Ballooning (default: true)
-b, --bootloader <bootloader>
Bootloader to use (default: linux)
-k, --kernel <kernel> Kernel to use
--initrd <initrd> Initrd to use
--cmdline <cmdline> Kernel cmdline to use
--escape-sequence <escape-sequence>
Escape Sequence, when using a tty (default: q)
-h, --help Show help information.
usage: vmctl {start|stop|attach|ip|ssh} vm
vmctl list
SimpleVM adalah bukti konsep menggunakan Virtualization.framework oleh Khaost
Vftool adalah alat yang sangat mirip yang ditulis oleh Evansm7 tetapi di Objective-C bukan Swift.