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 vms를 찾는 방법을 알고 있습니다. 설정하지 않으면 vmctl 현재 작업 디렉토리를 사용하여 VM을 찾습니다.
echo ' export VMCTLDIR="$HOME/VMs" ' >> ~ /.zprofile
export VMCTLDIR= " $HOME /VMs " 우분투 VM을 조정하고 ~/VMs 에 설치하십시오. VM은 ~/.ssh/id_rsa.pub ssh public Key)로 사용자를 자동으로 만듭니다.
make build/vm/ubuntu
mv build/vm/ubuntu " ${VMCTLDIR} /ubuntu "예를 들어 VM 볼륨을 선택적으로 16G로 확장하십시오.
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 to nut)
vmctl attach ubuntu
vmctl ip ubuntu 사용하여 VM IP를 확인할 수 있습니다.
VM이 부팅되고 SSH가 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 바이트의 크기 제한이 있습니다.
공유 폴더는 공유 폴더 인수의 세 번째 구성 요소로 ro 추가하여 게스트와 읽기 전용으로 만들 수 있습니다.- --folder <host path>:<tag>:ro
예를 들면 : 호스트에서 VM 디렉토리 (커널 및 InitRD가 라이브)에 foo 디렉토리를 작성하고 --folder 사용하여 추가하십시오. 예를 들어, folder=foo vm.conf 에 추가하거나 --folder=foo 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에서는 신속하지 않습니다.