Virtualization.frameworkでVMを管理するのに役立つユーティリティのセット
# 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
これで、 vmcliとvmctlインストールが完了しました
環境変数VMCTLDIRを~/VMsに設定して、 vmctl VMを見つける方法を知っています。これを設定しない場合、 vmctl現在の作業ディレクトリを使用してVMSを見つけます。
echo ' export VMCTLDIR="$HOME/VMs" ' >> ~ /.zprofile
export VMCTLDIR= " $HOME /VMs " Ubuntu VMを提供し、それを~/VMsにインストールします。 VMは~/.ssh/id_rsa.pubでSSH公開キーでユーザーを自動的に作成します。
make build/vm/ubuntu
mv build/vm/ubuntu " ${VMCTLDIR} /ubuntu "オプションで、たとえば16gにVMボリュームを拡張します。
dd if=/dev/null of= " ${VMCTLDIR} /ubuntu/disk.img " bs=1g count=0 seek=16オプションで、より多くのRAMおよび/またはCPUコアのためにVM構成を編集します
vi " ${VMCTLDIR} /ubuntu/vm.conf "VMを開始します
vmctl start ubuntuシリアルコンソールに接続し、使用します(ctrl+a -dを終了します)
vmctl attach ubuntu
vmctl ip ubuntuを使用してVM IPを確認できます。
VMがVMに起動してsshが入るのを待ちます
vmctl ssh ubuntu
VM内のSSHを使用してVMをシャットダウンする必要があります。それがオプションでない場合は、強制的にシャットダウンできます。
vmctl stop ubuntu
ホストとフォルダーを共有するためのサポートがMacOS 12(Monterey)に追加され、これは12.0以降にコンパイルされた場合に有効になります。
12.1の時点で、この機能のMACOSサポートはやや信頼できないようです。とにかく試してみたい場合は、 --folder <host path>:<tag>引数を使用してください。ゲストでは、 -t virtiofs <tag> <guest mountpoint>を使用してこれらをマウントします。
:<tag>コンポーネントが省略されている場合、ホストパスはタグとして使用されますが、タグには36 UTF-8バイトのサイズ制限があることに注意してください。
共有フォルダーは--folder <host path>:<tag>:ro共有フォルダーの引数に3番目のコンポーネントとしてroを追加することにより、ゲストに読み取ることができます。
たとえば、ホストでは、VMディレクトリ(カーネルとInitrd Live)にfoo Directoryを作成し、これを使用して--folderを追加します。たとえば、 folder=foo vm.confに追加するか、パス--folder=foo to vmcliに直接。
ゲストでは、 /mnt/foo空のディレクトリであり、 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は、khaostのVirtualization.frameworkを使用した概念実証です
VFTOOLは、EVANSM7によって書かれた非常によく似たツールですが、Objective-CではSwiftではありません。