مجموعة من الأدوات المساعدة لمساعدتك في إدارة VMs مع 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
لقد انتهيت الآن من تثبيت vmcli و vmctl
اضبط متغير البيئة VMCTLDIR إلى ~/VMs لذلك يعرف vmctl كيفية العثور على VMS. إذا لم تقم بتعيين هذا ، فسيستخدم vmctl دليل العمل الحالي للعثور على VMS.
echo ' export VMCTLDIR="$HOME/VMs" ' >> ~ /.zprofile
export VMCTLDIR= " $HOME /VMs " توفير Ubuntu VM ، وقم بتثبيت ذلك على ~/VMs . سيقوم VM تلقائيًا بإنشاء المستخدم الخاص بك باستخدام مفتاح SSH العام الخاص بك على ~/.ssh/id_rsa.pub .
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اختياريًا ، قم بتحرير تكوين VM لمزيد من ذاكرة الوصول العشوائي و/أو مراكز وحدة المعالجة المركزية
vi " ${VMCTLDIR} /ubuntu/vm.conf "ابدأ VM
vmctl start ubuntuنعلق إلى وحدة التحكم التسلسلية ، استخدم (Ctrl+A - D للانسحاب)
vmctl attach ubuntu
يمكنك استخدام vmctl ip ubuntu للتحقق من VM IP.
انتظر حتى يتم تشغيل VM و SSH في VM
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
على سبيل المثال: في المضيف ، قم بإنشاء دليل foo في دليل VM (حيث Live kernel و Initrd Live) ، وأضف ذلك باستخدام --folder . على سبيل المثال ، أضف folder=foo إلى vm.conf ، أو pass --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 هو دليل على المفهوم باستخدام Virtualization.framework .
Vftool هي أداة مشابهة جدًا كتبها Evansm7 ولكن في Objective-C وليس سريعًا.