| VNG(1) | virtme-ng | VNG(1) |
نام (NAME)
vng - اجرای سریع هستهها درون یک اسنپشات مجازیسازیشده از سیستم زنده
خلاصه دستور (SYNOPSIS)
vng [-h] [--version] [--run [RUN] | --build | --clean | --dump DUMP | --mcp] [--dry-run] [--no-virtme-ng-init] [--empty-passwords] [--pin [PIN]] [--gdb] [--snaps] [--debug] [--kconfig] [--skip-modules] [--commit COMMIT] [--config CONFIG] [--configitem CONFIGITEM] [--busybox PATH_TO_BUSYBOX] [--qemu QEMU] [--name NAME] [--user USER] [--shell BINARY] [--root ROOT] [--root-release ROOT_RELEASE] [--rw] [--force-9p] [--disable-microvm] [--disable-kvm] [--disable-monitor] [--cwd CWD] [--rodir RODIR] [--rwdir RWDIR] [--overlay-rwdir OVERLAY_RWDIR] [--cpus CPUS] [--memory MEMORY] [--numa MEM[,cpus=FIRST_CPU1[-LAST_CPU1]][,cpus=FIRST_CPU2[-LAST_CPU2]]...] [--numa-distance SRC,DST=VAL] [--balloon] [--network NETWORK] [--no-dhcp] [--net-mac-address NET_MAC_ADDRESS] [--disk PATH] [--exec EXEC] [--append APPEND] [--force-initramfs] [--sound] [--graphics] [--verbose] [--quiet] [--qemu-opts QEMU_OPTS] [--build-host BUILD_HOST] [--build-host-exec-prefix BUILD_HOST_EXEC_PREFIX] [--build-host-vmlinux] [--arch ARCH] [--cross-compile CROSS_COMPILE] [--force] [--nvgpu [GPU PCI Address]] [--vfio-pci PCI_ADDRESS] [--console [PORT]] [--console-client [PORT]] [--ssh [PORT]] [--ssh-client [PORT]] [--ssh-tcp] [--remote-cmd COMMAND] [--systemd] [envs ...]
توضیحات (DESCRIPTION)
ساخت و اجرای هستهها درون یک اسنپشات مجازیسازیشده از سیستم زنده شما
- envs
- متغیرهای اضافی Makefile
گزینهها (OPTIONS)
- --version, -V
- نمایش شماره نسخه برنامه و خروج
- --dry-run
- تنها نمایش دستورها بدون اجرای واقعی آنها.
- --no-virtme-ng-init
- بازگشت به virtme-init مبتنی بر bash (کاربردی برای اشکالزدایی/توسعه)
- --empty-passwords
- استفاده از گذرواژههای خالی برای تمامی کاربران
- --pin [PIN], -P [PIN]
- سنجاق کردن هر ریسه vCPU در QEMU به یک پردازنده متمایز میزبان. اگر بدون آرگومان مشخص شود، تمام پردازندههای میزبان استفاده میشوند. اگر همراه با آرگومان داده شود، باید فهرستی/محدودهای از پردازندهها باشد (مانند 0,1,3-5,9). نکته: در هر لحظه تنها یک مهمان virtme-ng میتواند سنجاق شود؛ سنجاق کردن چندین مهمان virtme-ng هنوز پشتیبانی نمیشود.
- --gdb
- پیوست کردن یک نشست اشکالزدایی به نمونه در حال اجرا که با --debug آغاز شده است
- --snaps
- اجازه اجرای snapها درون virtme-ng
- --debug
- شروع نمونه با اشکالزدایی فعال: اجازه ایجاد رونوشت خرابی (crash dump)، اتصال یک نشست اشکالزدایی با GDB و غیره.
- --kconfig, -k
- تنها بازنویسی .config هسته بدون ساخت/اجرای هیچچیز
- --skip-modules, -S
- اجرای یک ساخت بسیار سریع با نادیده گرفتن ماژولهای خارجی (بدون پشتیبانی از ماژولهای خارجی)
- --commit COMMIT, -c COMMIT
- استفاده از یک هسته مشخصشده با شناسه کامیت، برچسب (tag) یا شاخه (branch) خاص
- --config CONFIG, --custom CONFIG, -f CONFIG
- استفاده از یک (یا چند) فایل قطعهکد .config هسته، یا '-' برای stdin
- --configitem CONFIGITEM
- افزودن یک CONFIG_ITEM=val پس از --config <fragments>؛ این موارد تنظیمات قبلی پیکربندی را بازنویسی میکنند
- --busybox PATH_TO_BUSYBOX
- استفاده از فایل باینری مشخصشده busybox
- --qemu QEMU
- استفاده از فایل باینری مشخصشده QEMU
- --name NAME
- تنظیم نام میزبان مهمان و پرچم -name در qemu
- --user USER
- تغییر کاربر درون مهمان (پیشفرض همان کاربر سیستم میزبان است)
- --shell BINARY
- بازنویسی شل پیشفرض کاربر
- --root ROOT
- ارائه یک chroot خاص جهت استفاده درون هسته مجازیسازیشده (کاربردی به همراه --arch)
- --root-release ROOT_RELEASE
- استفاده از یک انتشار هدف Ubuntu برای ایجاد یک chroot جدید (استفاده به همراه --root)
- --rw
- دادن دسترسی خواندن/نوشتن به سیستم فایل ریشه مهمان. هشدار: این کار میتواند برای سیستم فایل میزبان خطرناک باشد!
- --force-9p
- استفاده از سیستم فایل قدیمی 9p به عنوان rootfs
- --disable-microvm
- خودداری از استفاده از معماری "microvm" در QEMU (تنها روی x86_64)
- --disable-kvm
- خودداری از استفاده از مجازیسازی سختافزاری / KVM
- --disable-monitor
- غیرفعال کردن مانیتور STDIO در QEMU
- --cwd CWD
- تغییر دایرکتوری کاری مهمان (پیشفرض در صورت امکان همان دایرکتوری کاری فعلی است)
- --rodir RODIR
- ارائه یک دایرکتوری فقطخواندنی به مهمان. استفاده از --rodir=path یا --rodir=guestpath=hostpath
- --rwdir RWDIR
- ارائه یک دایرکتوری خواندن/نوشتن به مهمان. استفاده از --rwdir=path یا --rwdir=guestpath=hostpath
- --overlay-rwdir OVERLAY_RWDIR
- ارائه یک دایرکتوری که برای مهمان خواندن/نوشتن است اما در میزبان فقطخواندنی میباشد. استفاده از --overlay-rwdir=path.
- --cpus CPUS, -p CPUS
- تنظیم تعداد پردازندههای مهمان (پرچم -smp در qemu)
- --memory MEMORY, -m MEMORY
- تنظیم اندازه حافظه مهمان (پرچم -m در qemu)
- --numa MEM[,cpus=FIRST_CPU1[-LAST_CPU1]][,cpus=FIRST_CPU2[-LAST_CPU2]]...
- ایجاد یک گره NUMA در مهمان. از این گزینه چندین بار برای ایجاد گرههای NUMA بیشتر استفاده کنید. اندازه کل حافظه اختصاصیافته به گرههای NUMA باید با اندازه حافظه مهمان (مشخصشده با --memory/-m) مطابقت داشته باشد. این گزینه به طور ضمنی معماری microvm را غیرفعال میکند.
- --numa-distance SRC,DST=VAL
- تنظیم فاصله VAL بین گرههای NUMA مبدا (SRC) و مقصد (DST). از این گزینه چندین بار برای تعیین چندین فاصله بین گرههای NUMA استفاده کنید. این گزینه تنها همراه با --numa استفاده میشود.
- --balloon
- اجازه به میزبان برای درخواست آزادسازی حافظه از مهمان
- --network NETWORK, -n NETWORK
- فعالسازی دسترسی شبکه: user، bridge(=<br>)، loop
- --no-dhcp
- غیرفعال کردن پیکربندی DHCP برای رابطهای شبکه.
- --net-mac-address NET_MAC_ADDRESS
- آدرس MAC جهت انتساب به رابط NIC، مانند 52:54:00:12:34:56. آخرین بایت (octet) برای دستگاههای شبکه بعدی افزایش خواهد یافت.
- --disk PATH, -D PATH
- افزودن یک فایل به عنوان دیسک virtio-scsi (میتواند چندین بار استفاده شود)
- --exec EXEC, -e EXEC
- اجرای یک دستور درون هسته و خروج
- --append APPEND, -a APPEND
- گزینههای بوت اضافی هسته (میتواند چندین بار استفاده شود)
- --force-initramfs
- استفاده از یک initramfs حتی در صورتی که غیرضروری باشد
- --sound
- فعالسازی دستگاه صوتی (در صورتی که معماری از آن پشتیبانی کند).TP --graphics, -g نمایش خروجی گرافیکی بهجای استفاده از کنسول.
- --verbose, -v
- افزایش میزان جزئیات خروجی کنسول.
- --quiet, -q
- لغو حالت پرجزئیات (غیرفعالسازی --verbose).
- --qemu-opts QEMU_OPTS, -o QEMU_OPTS
- آرگومانهای اضافی برای QEMU (میتواند چندین بار استفاده شود) یا تجمیعشده با هم: --qemu-opts='...'
- --build-host BUILD_HOST
- انجام ساخت کرنل روی یک سرور راه دور (نیازمند دسترسی ssh).
- --build-host-exec-prefix BUILD_HOST_EXEC_PREFIX
- افزودن یک دستور (مانند chroot) به ابتدای دستور make اجراشده روی میزبان ساخت دوردست.
- --build-host-vmlinux
- کپی کردن vmlinux از میزبان ساخت به سیستم محلی.
- --arch ARCH
- تولید و آزمایش کرنل برای یک معماری خاص (پیشفرض، معماری میزبان است؛ در صورت تنظیم، باید همراه با --root استفاده شود).
- --cross-compile CROSS_COMPILE
- تنظیم پیشوند کامپایل متقاطع (cross-compile).
- --force
- بازنشانی اجباری مخزن git به شاخه یا کامیت هدف (هشدار: این کار ممکن است تغییرات ذخیرهنشده را حذف کند) و بازنویسی اجباری پیکربندی کرنل.
- --nvgpu [GPU PCI Address]
- افزودن یک پردازنده گرافیکی NVIDIA بهصورت گذر مستقیم (passthrough).
- --vfio-pci PCI_ADDRESS
- گذر مستقیم یک دستگاه PCI با استفاده از vfio-pci (میتواند چندین بار استفاده شود)، مانند --vfio-pci 0000:ce:00.0.
- --systemd
- اجرای systemd بهعنوان فرایند init (آزمایشی).
عملیات (ACTION)
- --run [RUN], -r [RUN]
- اجرای یک کرنل مشخصشده؛ --run میتواند یکی از آرگومانهای زیر را بپذیرد: ۱) هیچچیز (در این حالت تلاش میکند همان کرنل در حال اجرا روی میزبان را بوت کند)، ۲) یک فایل باینری کرنل (مانند ./arch/x86/boot/bzImage)، ۳) یک دایرکتوری (جایی که در آن تلاش میکند فایل باینری معتبر کرنل را بیابد)، ۴) یک نسخه بالادستی (upstream)، برای مثال `vng --run v6.6.17` (در این حالت vng یک کرنل بالادستی ازپیشکامپایلشده را از مخزن اصلی Ubuntu mainline بارگیری خواهد کرد).
- --build, -b
- ساخت کرنل در دایرکتوری جاری (یا بهصورت راه دور در صورت استفاده همراه با --build-host).
- --clean, -x
- پاکسازی مخزن کرنل (محلی یا راه دور در صورت استفاده همراه با --build-host).
- --dump DUMP, -d DUMP
- ایجاد یک دامپ حافظه (memory dump) از کرنل در حال اجرا (نمونه باید با --debug راهاندازی شده باشد).
- --mcp
- راهاندازی سرور MCP (پروتکل زمینه مدل / Model Context Protocol) برای یکپارچهسازی با عاملهای هوش مصنوعی.
کنسول راه دور (REMOTE CONSOLE)
- --console [PORT]
- فعالسازی یک سرور جهت ارتباط بعدی از سمت میزبان با استفاده از --console-client. بهطور پیشفرض، یک کنسول ساده با استفاده از اتصال VSOCK و socat برای پروکسی ارائه خواهد شد.
- --console-client [PORT]
- اتصال به یک ماشین مجازی راهاندازیشده با گزینه --console جهت کنترل راه دور.
- --ssh [PORT]
- فعالسازی سرور SSH جهت ارتباط بعدی از سمت میزبان با استفاده از --ssh-client.
- --ssh-client [PORT]
- اتصال به یک ماشین مجازی راهاندازیشده با گزینه --ssh جهت کنترل راه دور.
- --ssh-tcp
- استفاده از پروتکل TCP برای اتصال SSH به سیستم مهمان.
- --remote-cmd COMMAND
- اجرای
دستوری
متفاوت از
مقدار
پیشفرض در
ماشین
مجازی (--server)،
یا
راهاندازی
این دستور
بهجای
محیط خط
فرمان خطی
(--client)..SH
"یادداشتها
(COMMENTS)" ابزار virtme-ng
به شما
امکان
میدهد تا
بهسادگی و
بهسرعت یک
هستهٔ
لینوکس (Linux kernel)
را بر اساس
کد منبع،
دوباره
کامپایل و
آزمایش
کنید. این
ابزار
امکان
بازکامپایل
هسته را
بهجای
چندین
ساعت، در
عرض چند
دقیقه
فراهم
میکند؛
سپس هسته
بهطور
خودکار در
یک محیط
مجازیسازیشده
اجرا
میشود که
یک رونوشت
دقیق copy-on-write از
سیستم فعال
شماست؛
بدین معنا
که هرگونه
تغییر
ایجادشده
در محیط
مجازی،
تأثیری بر
سیستم
میزبان
نخواهد
داشت.
برای انجام این کار، یک پیکربندی کمینه (با حداقل پشتیبانی لازم برای آزمایش هسته در qemu) ایجاد میشود، سپس هستهٔ انتخابشده با استفاده از سیستمفایل میزبان بهعنوان یک اسنپشات (snapshot) بهروش copy-on-write، بهطور خودکار ساخته و در qemu اجرا میگردد.
این بدان معناست که میتوانید بدون نگرانی و بدون تأثیر بر میزبان، کل سیستمفایل را نابود کنید، هسته را با کرش مواجه سازید و غیره.
نکته: هستههای تولیدشده با virtme-ng فاقد بسیاری از ویژگیها هستند تا زمان ساخت به کمترین حد ممکن برسد و همزمان هستهای کاربردی در اختیارتان بگذارد که قادر به اجرای آزمایشها و بررسیهای شما باشد.
ابزار virtme-ng بر پایهٔ virtme توسعه یافته است که توسط Andy Lutomirski <luto@kernel.org> نوشته شده است.
نویسنده (AUTHOR)
برنامهٔ virtme-ng توسط Andrea Righi <arighi@nvidia.com> نوشته شده است
بر پایهٔ virtme اثر Andy Lutomirski <luto@kernel.org>
توزیع (DISTRIBUTION)
جدیدترین نسخهٔ virtme-ng را میتوان از نشانی زیر دریافت کرد: https://github.com/arighi/virtme-ng
| 2026-07-06 | virtme-ng 1.41 |