'\" t .TH "SYSTEMD\-DETECT\-VIRT" "1" "" "systemd 261.2" "systemd-detect-virt" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" systemd-detect-virt \- تشخیص اجرای سیستم در محیط‌های مجازی‌سازی یا کانتینر .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBsystemd\-detect\-virt\fR\ 'u \fBsystemd\-detect\-virt\fR [\fIگزینه‌ها\fR...] .SH "توضیحات (DESCRIPTION)" .PP دستور \fBsystemd\-detect\-virt\fR اجرای سیستم در یک محیط مجازی‌سازی‌شده را شناسایی می‌کند\&. این ابزار فناوری مجازی‌سازی را مشخص کرده و می‌تواند مجازی‌سازی کامل ماشین را از مجازی‌سازی کانتینر تشخیص دهد\&. در صورتی که یک فناوری مجازی‌سازی شناسایی شود، systemd\-detect\-virt با مقدار بازگشتی 0 (موفقیت) خارج می‌شود، و در غیر این صورت مقداری غیرصفر (خطا) برمی‌گرداند\&. به‌طور پیش‌فرض، هر نوع مجازی‌سازی شناسایی می‌شود، و می‌توان از گزینه‌های \fB\-\-container\fR و \fB\-\-vm\fR برای محدود کردن انواع مجازی‌سازی‌های شناسایی‌شده استفاده کرد\&. .PP در صورت اجرا بدون \fB\-\-quiet\fR یک شناسه کوتاه برای فناوری مجازی‌سازی شناسایی‌شده چاپ خواهد شد\&. فناوری‌های زیر در حال حاضر قابل شناسایی هستند: .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B جدول\ \&۱.\ \&فناوری‌های مجازی‌سازی شناخته‌شده (هم ماشین مجازی، یعنی مجازی‌سازی کامل سخت‌افزار، و هم کانتینر، یعنی مجازی‌سازی مبتنی بر اشتراک هسته) .TS allbox tab(:); lB lB lB. T{ نوع (Type) T}:T{ شناسه (ID) T}:T{ محصول (Product) T} .T& lt l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l lt l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l ^ l l. T{ ماشین مجازی (VM) T}:T{ \fIqemu\fR T}:T{ مجازی‌سازی نرم‌افزاری QEMU، بدون KVM T} :T{ \fIkvm\fR T}:T{ ماشین مجازی هسته لینوکس KVM، در ترکیب با QEMU\&. برای سایر مجازی‌سازهایی که از رابط‌های KVM استفاده می‌کنند (مانند Oracle VirtualBox یا Amazon EC2 Nitro) استفاده نمی‌شود؛ به موارد زیر مراجعه کنید\&. T} :T{ \fIamazon\fR T}:T{ سرویس Amazon EC2 Nitro با استفاده از Linux KVM T} :T{ \fIzvm\fR T}:T{ سامانه s390 z/VM T} :T{ \fIvmware\fR T}:T{ نرم‌افزار VMware Workstation یا Server و محصولات مرتبط T} :T{ \fImicrosoft\fR T}:T{ فناوری Hyper\-V، که با نام‌های Viridian یا Windows Server Virtualization نیز شناخته می‌شود T} :T{ \fIoracle\fR T}:T{ نرم‌افزار Oracle VM VirtualBox (از نظر تاریخی عرضه شده توسط innotek و Sun Microsystems)، برای هایپروایزر قدیمی و KVM T} :T{ \fIpowervm\fR T}:T{ هایپروایزر IBM PowerVM \(em همراه با سفت‌افزار برخی سرورهای IBM POWER عرضه می‌شود T} :T{ \fIxen\fR T}:T{ هایپروایزر Xen (صرفاً domU، نه dom0) T} :T{ \fIbochs\fR T}:T{ شبیه‌ساز Bochs Emulator T} :T{ \fIuml\fR T}:T{ لینوکس در حالت کاربر (User\-mode Linux) T} :T{ \fIparallels\fR T}:T{ نرم‌افزارهای Parallels Desktop و Parallels Server T} :T{ \fIbhyve\fR T}:T{ هایپروایزر bhyve در FreeBSD T} :T{ \fIqnx\fR T}:T{ هایپروایزر QNX T} :T{ \fIacrn\fR T}:T{ \m[blue]\fBهایپروایزر ACRN\fR\m[]\&\s-2\u[1]\d\s+2 T} :T{ \fIapple\fR T}:T{ \m[blue]\fBفریم‌ورک مجازی‌سازی اپل\fR\m[]\&\s-2\u[2]\d\s+2 T} :T{ \fIsre\fR T}:T{ \m[blue]\fBهایپروایزر LMHS SRE\fR\m[]\&\s-2\u[3]\d\s+2 T} :T{ \fIgoogle\fR T}:T{ \m[blue]\fBموتور محاسباتی گوگل (Google Compute Engine)\fR\m[]\&\s-2\u[4]\d\s+2 T} T{ کانتینر (Container) T}:T{ \fIopenvz\fR T}:T{ سامانه OpenVZ/Virtuozzo T} :T{ \fIlxc\fR T}:T{ پیاده‌سازی کانتینر لینوکس توسط LXC T} :T{ \fIlxc\-libvirt\fR T}:T{ پیاده‌سازی کانتینر لینوکس توسط libvirt T} :T{ \fIsystemd\-nspawn\fR T}:T{ پیاده‌سازی حداقلی کانتینر در systemd\*(Aq، به \fBsystemd-nspawn\fR(1) مراجعه کنید T} :T{ \fIdocker\fR T}:T{ مدیر کانتینر Docker T} :T{ \fIpodman\fR T}:T{ مدیر کانتینر \m[blue]\fBPodman\fR\m[]\&\s-2\u[5]\d\s+2 T} :T{ \fIrkt\fR T}:T{ محیط اجرایی کانتینر برنامه rkt T} :T{ \fIwsl\fR T}:T{ \m[blue]\fBزیرسیستم ویندوز برای لینوکس (Windows Subsystem for Linux)\fR\m[]\&\s-2\u[6]\d\s+2 T} :T{ \fIproot\fR T}:T{ شبیه‌سازی chroot/bind mount در فضای کاربری توسط \m[blue]\fBproot\fR\m[]\&\s-2\u[7]\d\s+2 T} :T{ \fIpouch\fR T}:T{ موتور کانتینر \m[blue]\fBPouch\fR\m[]\&\s-2\u[8]\d\s+2 T} .TE .sp 1 .PP اگر از چندین راهکار مجازی‌سازی استفاده شود، فقط "داخلی‌ترین" لایه شناسایی و مشخص می‌شود\&. این بدان معناست که اگر هر دو نوع مجازی‌سازی ماشین و کانتینر همزمان استفاده شوند، فقط کانتینر شناسایی خواهد شد (مگر اینکه گزینه \fB\-\-vm\fR داده شود)\&. .PP زیرسیستم ویندوز برای لینوکس (Windows Subsystem for Linux) یک کانتینر لینوکس نیست، بلکه محیطی برای اجرای برنامه‌های فضای کاربری لینوکس بر روی هسته ویندوز با استفاده از یک رابط سازگار با لینوکس است\&. WSL برای مقاصد کاربردی به عنوان کانتینر دسته‌بندی می‌شود\&. چندین محیط WSL از یک هسته مشترک استفاده می‌کنند و سرویس‌ها عموماً باید به گونه‌ای رفتار کنند که گویی درون یک کانتینر در حال اجرا هستند\&. .PP هنگام اجرا با گزینه \fB\-\-cvm\fR، به جای چاپ فناوری مجازی‌سازی، فناوری ماشین مجازی محرمانه (Confidential Virtual Machine) را در صورت وجود نمایش می‌دهد\&. فناوری‌های زیر در حال حاضر قابل شناسایی هستند: .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B جدول\ \&۲.\ \&فناوری‌های مجازی‌سازی محرمانه شناخته‌شده .TS allbox tab(:); lB lB lB. T{ معماری (Arch) T}:T{ شناسه (ID) T}:T{ فناوری (Technology) T} .T& lt l l ^ l l ^ l l ^ l l l l l l l l. T{ x86_64 T}:T{ \fIsev\fR T}:T{ فناوری AMD Secure Encrypted Virtualization T} :T{ \fIsev\-es\fR T}:T{ فناوری AMD Secure Encrypted Virtualization \- Encrypted State T} :T{ \fIsev\-snp\fR T}:T{ فناوری AMD Secure Encrypted Virtualization \- Secure Nested Paging T} :T{ \fItdx\fR T}:T{ فناوری Intel Trust Domain Extensions T} T{ s390x T}:T{ \fIprotvirt\fR T}:T{ فناوری IBM Protected Virtualization (Secure Execution) T} T{ arm64 T}:T{ \fIcca\fR T}:T{ معماری محاسبات محرمانه آرم (Arm Confidential Compute Architecture) T} .TE .sp 1 .SH "گزینه‌ها (OPTIONS)" .PP گزینه‌های زیر پشتیبانی می‌شوند: .PP \fB\-c\fR, \fB\-\-container\fR .RS 4 فقط مجازی‌سازی کانتینر (یعنی مجازی‌سازی مبتنی بر اشتراک هسته) را شناسایی می‌کند\&. .RE .PP \fB\-v\fR, \fB\-\-vm\fR .RS 4 فقط مجازی‌سازی سخت‌افزاری را شناسایی می‌کند\&. .RE .PP \fB\-r\fR, \fB\-\-chroot\fR .RS 4 تشخیص می‌دهد که آیا دستور درون یک محیط \fBchroot\fR(2) اجرا شده است یا خیر\&. در این حالت، هیچ خروجی متنی نوشته نمی‌شود، اما مقدار بازگشتی نشان می‌دهد که آیا فرآیند درون یک محیط \fBchroot()\fR فراخوانی شده است یا خیر\&. .sp افزوده‌شده در نسخه 228\&. .RE .PP \fB\-\-private\-users\fR .RS 4 تشخیص می‌دهد که آیا دستور درون یک فضای نام کاربری فراخوانی شده است یا خیر\&. در این حالت، هیچ خروجی متنی نوشته نمی‌شود، اما مقدار بازگشتی نشان می‌دهد که آیا فرآیند درون یک فضای نام کاربری فراخوانی شده است یا خیر\&. برای اطلاعات بیشتر به \fBuser_namespaces\fR(7) مراجعه کنید\&. .sp افزوده‌شده در نسخه 232\&. .RE .PP \fB\-\-cvm\fR .RS 4 تشخیص می‌دهد که آیا دستور درون یک ماشین مجازی محرمانه اجرا شده است یا خیر\&. نتیجه این تشخیص ممکن است برای غیرفعال کردن ویژگی‌هایی استفاده شود که نباید در ماشین‌های مجازی محرمانه به کار گرفته شوند\&. از این نتیجه نباید برای افشای اطلاعات حساس امنیتی استفاده شود؛ این اطلاعات تنها پس از تصدیق و اثبات صحت (Attestation) محیط محرمانه باید منتشر شوند\&. .sp افزوده‌شده در نسخه 254\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 از نمایش شناسه فناوری مجازی‌سازی در خروجی جلوگیری می‌کند\&. .RE .PP \fB\-\-list\fR .RS 4 تمام محیط‌های کانتینر و ماشین مجازی شناخته‌شده و قابل تشخیص در حال حاضر را در خروجی چاپ می‌کند\&. .sp افزوده‌شده در نسخه 239\&. .RE .PP \fB\-\-list\-cvm\fR .RS 4 تمام فناوری‌های مجازی‌سازی محرمانه شناخته‌شده و قابل تشخیص در حال حاضر را در خروجی چاپ می‌کند\&. .sp افزوده‌شده در نسخه 254\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 یک متن راهنمای کوتاه را چاپ کرده و خارج می‌شود\&. .RE .PP \fB\-\-version\fR .RS 4 اطلاعات نسخه کوتاه برنامه را چاپ کرده و خارج می‌شود\&. .RE .SH "کدهای خروج (EXIT STATUS)" .PP در صورت شناسایی یک فناوری مجازی‌سازی، مقدار 0 برگردانده می‌شود؛ در غیر این صورت یک کد غیرصفر بازگردانده خواهد شد\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemd-nspawn\fR(1), \fBchroot\fR(2), \fBnamespaces\fR(7) .SH "نکات (NOTES)" .IP " 1." 4 هایپروایزر ACRN .RS 4 \%https://projectacrn.org .RE .IP " 2." 4 فریم‌ورک مجازی‌سازی اپل .RS 4 \%https://developer.apple.com/documentation/virtualization .RE .IP " 3." 4 هایپروایزر LMHS SRE .RS 4 \%https://www.lockheedmartin.com/en-us/products/Hardened-Security-for-Intel-Processors.html .RE .IP " 4." 4 موتور محاسباتی گوگل (Google Compute Engine) .RS 4 \%https://cloud.google.com/compute .RE .IP " 5." 4 Podman .RS 4 \%https://podman.io .RE .IP " 6." 4 زیرسیستم ویندوز برای لینوکس (Windows Subsystem for Linux) .RS 4 \%https://docs.microsoft.com/en-us/windows/wsl/about .RE .IP " 7." 4 proot .RS 4 \%https://proot-me.github.io .RE .IP " 8." 4 Pouch .RS 4 \%https://github.com/alibaba/pouch .RE