virt-sysprep(1) Virtualization Support virt-sysprep(1)

virt-sysprep - بازنشانی، حذف پیکربندی یا سفارشی‌سازی یک ماشین مجازی برای شبیه‌سازی

virt-sysprep [--colors] [--colours] [-c URI] [--connect URI]
   [-n] [--dry-run] [--enable OPERATIONS] [--operations OPERATIONS]
   [--echo-keys] [--format raw|qcow2] [--key SELECTOR]
   [--keys-from-stdin] [--mount-options] [-q] [--quiet]
   [--network] [--no-network] [-v] [--verbose] [--wrap] [-x]
   -d domname | -a disk.img [-a disk.img ...]
 virt-sysprep --list-operations
 virt-sysprep --version
 virt-sysprep -V

استفاده از "virt-sysprep" روی ماشین‌های مجازی روشن و فعال، یا به طور همزمان با سایر ابزارهای ویرایش دیسک می‌تواند خطرناک باشد و به طور بالقوه منجر به خرابی دیسک شود. ماشین مجازی باید پیش از استفاده از این دستور خاموش شود و نباید ایمیج‌های دیسک به طور همزمان ویرایش شوند.

دستور Virt-sysprep می‌تواند یک ماشین مجازی را بازنشانی کند یا پیکربندی آن را بردارد تا بتوان از آن نسخه‌های شبیه‌سازی‌شده (Clone) ایجاد کرد، یا قالبی (Template) آماده نمود که بتوان بعداً از روی آن کلون تهیه کرد. مراحل این فرآیند شامل حذف کلیدهای میزبان SSH، حذف پیکربندی ماندگار MAC شبکه و حذف حساب‌های کاربری است. همچنین Virt-sysprep می‌تواند یک ماشین مجازی را سفارشی‌سازی کند، برای مثال با افزودن کلیدهای SSH، کاربران یا نشان‌واره‌ها. هر مرحله می‌تواند بنا به نیاز فعال یا غیرفعال شود.

دستور Virt-sysprep سیستم مهمان یا ایمیج دیسک را درجا (in place) دستکاری می‌کند. سیستم مهمان باید خاموش باشد. اگر می‌خواهید محتوای موجود مهمان را حفظ کنید، باید ابتدا از دیسک اسنپ‌شات بگیرید، کپی بگیرید یا آن را کلون کنید.

شما نیازی ندارید که virt-sysprep را به عنوان کاربر ریشه (root) اجرا نمایید. در واقع ما عموماً توصیه می‌کنیم این کار را نکنید. تنها زمانی ممکن است مایل باشید آن را با دسترسی root اجرا کنید که برای دسترسی به ایمیج دیسک به مجوز root نیاز باشد، اما حتی در این حالت نیز بهتر است دسترسی‌های ایمیج دیسک را به گونه‌ای تغییر دهید که برای کاربر غیر ریشه‌ای که virt-sysprep را اجرا می‌کند قابل نوشتن باشد.

واژه "Sysprep" مخفف ابزار "آماده‌سازی سیستم" (system preparation) است. این نام برگرفته از برنامه مایکروسافت به نام sysprep.exe است که برای برچیدن پیکربندی ماشین‌های ویندوز به منظور آماده‌سازی آن‌ها برای شبیه‌سازی استفاده می‌شود. (دستور Virt-sysprep روی سیستم‌های مهمان مایکروسافت ویندوز کار نمی‌کند.)

نمایش راهنمای مختصر.
افزودن file که باید ایمیج دیسک یک ماشین مجازی باشد.

قالب ایمیج دیسک به طور خودکار شناسایی می‌شود. برای لغو این حالت و تحمیل یک قالب خاص، از گزینه --format استفاده کنید.

افزودن یک دیسک دوردست. ساختار URI با guestfish سازگار است. به بخش "ADDING REMOTE STORAGE" در guestfish(1) مراجعه کنید.
استفاده از توالی‌های رنگی ANSI برای رنگ‌آمیزی پیام‌ها. این رفتار پیش‌فرض در خروجی tty است. اگر خروجی برنامه به یک فایل هدایت شود، توالی‌های رنگی ANSI غیرفعال می‌شوند مگر اینکه از این گزینه استفاده کنید.
در صورت استفاده از libvirt، به URI داده‌شده متصل می‌شود. در صورت عدم ذکر، اتصال به هایپروایزر پیش‌فرض libvirt برقرار خواهد شد.

اگر دستگاه‌های بلوکی مهمان را مستقیماً مشخص کنید (-a)، libvirt اصلاً استفاده نمی‌شود.

افزودن تمام دیسک‌های مهمان نام‌برده در libvirt. به جای نام می‌توان از UUIDهای دامنه استفاده کرد.
اجرای آزمایشی و فقط‌خواندنی (dry run) روی سیستم مهمان. این حالت عملیات sysprep را اجرا می‌کند، اما در پایان تمام تغییرات اعمال‌شده روی دیسک را دور می‌ریزد.
انتخاب اینکه کدام عملیات‌های sysprep انجام شوند. یک فهرست جداشده با کاما از عملیات‌ها ارائه دهید، به عنوان مثال:
--enable ssh-hostkeys,udev-persistent-net

تنها عملیات‌های "ssh-hostkeys" و "udev-persistent-net" را فعال خواهد کرد.

اگر گزینه --enable مشخص نشود، پیش‌فرض برنامه تلاش برای اجرای اکثر عملیات‌های sysprep است (برای مشاهده موارد فعال، گزینه --list-operations را ببینید).

صرف‌نظر از گزینه --enable، عملیات‌های sysprep برای برخی انواع سیستم مهمان نادیده گرفته می‌شوند.

از گزینه --list-operations برای فهرست کردن عملیات‌های پشتیبانی‌شده توسط یک نسخه خاص از virt-sysprep استفاده کنید.

برای مشاهده فهرست و توضیحات مربوط به هر عملیات، بخش "عملیات‌ها (OPERATIONS)" در زیر را ببینید.

انتخاب اینکه کدام عملیات‌های sysprep انجام شوند. یک فهرست جداشده با کاما از عملیات‌ها ارائه دهید، برای مثال:
--operations ssh-hostkeys,udev-persistent-net

تنها عملیات‌های "ssh-hostkeys" و "udev-persistent-net" را فعال خواهد کرد.

گزینه --operations به شما اجازه می‌دهد هر عملیاتی را فعال یا غیرفعال کنید، از جمله عملیات‌های پیش‌فرض (که در صورت عدم مشخص کردن --operations یا --enable اجرا می‌شوند) و تمام عملیات‌های موجود؛ افزودن پیشوند "-" به ابتدای نام یک عملیات، آن را از فهرست عملیات‌های فعال حذف می‌کند، در حالی که نام‌های متای "defaults" و "all" به ترتیب نمایانگر عملیات‌های پیش‌فرض فعال و تمام عملیات‌های در دسترس هستند. برای مثال:

--operations firewall-rules,defaults,-tmp-files

عملیات "firewall-rules" (صرف‌نظر از اینکه به طور پیش‌فرض فعال باشد یا خیر) و تمام عملیات‌های پیش‌فرض را فعال کرده و عملیات "tmp-files" را غیرفعال می‌کند.

گزینه --operations می‌تواند چندین بار مشخص شود؛ بار اول مجموعه عملیات‌های فعال خالی است، در حالی که هر --operations بعدی روی عملیات‌های فعال‌شده تا آن لحظه اثر می‌گذارد.

اگر گزینه --operations داده نشود، پیش‌فرض برنامه تلاش برای اجرای بیشتر عملیات‌های sysprep است (برای مشاهده موارد فعال به --list-operations مراجعه کنید).

صرف‌نظر از گزینه --operations، عملیات‌های sysprep برای برخی انواع سیستم مهمان نادیده گرفته می‌شوند.

برای فهرست کردن عملیات‌های پشتیبانی‌شده توسط یک نسخه خاص از virt-sysprep از --list-operations استفاده کنید.

برای مشاهده فهرست و توضیحات مربوط به هر عملیات، بخش "عملیات‌ها (OPERATIONS)" در زیر را ببینید.

هنگام درخواست کلیدها و عبارت‌های عبور، virt-sysprep به طور معمول پژواک ورودی را خاموش می‌کند تا متنی که تایپ می‌کنید دیده نشود. اگر نگران حملات تمپست (Tempest) نیستید و شخص دیگری در اتاق حضور ندارد، می‌توانید این پرچم را مشخص کنید تا متن تایپ‌شده را ببینید.
حالت پیش‌فرض برای گزینه -a، تشخیص خودکار قالب ایمیج دیسک است. استفاده از این گزینه، قالب دیسک را برای گزینه‌های -a بعدی در خط فرمان تحمیل می‌کند. استفاده از --format auto وضعیت را برای گزینه‌های بعدی -a به حالت تشخیص خودکار بازمی‌گرداند.

برای مثال:

virt-sysprep --format raw -a disk.img

قالب raw را (بدون تشخیص خودکار) برای disk.img تحمیل می‌کند.

virt-sysprep --format raw -a disk.img --format auto -a another.img

قالب raw را (بدون تشخیص خودکار) برای disk.img تحمیل کرده و برای another.img به حالت تشخیص خودکار بازمی‌گردد.

اگر ایمیج‌های دیسک مهمان با فرمت خام (raw) غیرقابل اعتماد دارید، باید از این گزینه برای تعیین قالب دیسک استفاده نمایید. این کار از یک مشکل امنیتی بالقوه با مهمان‌های مخرب جلوگیری می‌کند (CVE-2010-3851).

تعیین کلید برای LUKS، به منظور بازگشایی خودکار دستگاه LUKS هنگام بازرسی سیستم.
مقدار "NAME" نام دستگاه در libguestfs است (مانند "/dev/sda1"). مقدار "UUID" شناسه یکتای دستگاه است. مقدار "all" به معنای امتحان کلید روی هر دستگاه رمزگذاری‌شده است.

استفاده از "KEY_STRING" مشخص‌شده به عنوان عبارت عبور.

خواندن عبارت عبور از فایل FILENAME.
تلاش برای بازگشایی قفل بدون نیاز به عبارت عبور با استفاده از Clevis از طریق شبکه. لطفاً برای اطلاعات بیشتر درباره رمزگذاری دیسک وابسته به شبکه (NBDE) به بخش "ENCRYPTED DISKS" در guestfs(3) مراجعه کنید.

توجه داشته باشید اگر چنین گزینه‌ای در خط فرمان وجود داشته باشد، شبکه کاربری QEMU به طور خودکار برای اپلاینس libguestfs فعال خواهد شد.

خواندن کلید یا پارامترهای عبارت عبور از ورودی استاندارد (stdin). رفتار پیش‌فرض این است که تلاش می‌شود عبارت‌های عبور با باز کردن /dev/tty از کاربر خوانده شوند.

اگر چند دستگاه رمزگذاری‌شده وجود داشته باشد، ممکن است لازم باشد چند کلید را در ورودی استاندارد، هر کدام در یک خط مجزا، ارائه دهید.

فهرست کردن عملیات‌های پشتیبانی‌شده توسط برنامه virt-sysprep.

این موارد در هر خط، با یک یا چند فیلد جداشده با تک‌فاصله فهرست می‌شوند، برای مثال:

$ virt-sysprep --list-operations
bash-history * Remove the bash history in the guest
cron-spool * Remove user at-jobs and cron-jobs
dhcp-client-state * Remove DHCP client leases
dhcp-server-state * Remove DHCP server leases
[etc]

فیلد نخست نام عملیات است که می‌تواند به گزینه --enable داده شود. فیلد دوم یک نویسه "*" است اگر عملیات به طور پیش‌فرض فعال باشد، یا در غیر این صورت خالی است. فیلدهای بعدی در همان خط، توضیحات مربوط به عملیات هستند.

پیش از نسخه 1.17.33 در libguestfs فقط فیلد اول (نام عملیات) نشان داده می‌شد و تمام عملیات‌ها به طور پیش‌فرض فعال بودند.

تنظیم گزینه‌های مانت که هنگام باز شدن ایمیج دیسک توسط libguestfs استفاده می‌شوند. توجه داشته باشید که این گزینه هیچ تاثیری روی سیستم مهمان ندارد. این گزینه هنگام باز کردن برخی مهمان‌ها مانند موارد استفاده‌کننده از سیستم‌فایل UFS (BSD) کاربرد دارد.

از فهرستی از جفت‌های "mountpoint:options" که با نقطه ویرگول (semicolon) از هم جدا شده‌اند استفاده کنید. ممکن است برای محافظت در برابر پوسته (shell) نیاز به قرار دادن این فهرست در علامت نقل قول باشد.

برای مثال:

--mount-options "/:noatime"

دایرکتوری ریشه را با "noatime" متصل می‌کند. این مثال:

--mount-options "/:noatime;/var:rw,nodiratime"

همان کار را انجام داده و افزون بر آن، /var را با "rw,nodiratime" متصل می‌کند.

عدم چاپ پیام‌های لاگ.

برای فعال‌سازی گزارش‌گیری دقیق از عملیات فایل‌ها به صورت انفرادی، از -x استفاده کنید.

فعال یا غیرفعال کردن دسترسی به شبکه از داخل سیستم مهمان در حین نصب.

در virt-sysprep، شبکه به طور پیش‌فرض غیرفعال است. شما باید از --network برای فعال‌سازی آن استفاده نمایید تا گزینه‌هایی مانند --install یا --update کار کنند.

راهنمای virt-builder(1) اطلاعات بیشتری درباره مزایای امنیتی غیرفعال کردن شبکه ارائه می‌دهد.

فعال کردن پیام‌های پرجزئیات برای اشکال‌زدایی.
نمایش شماره نسخه و خروج.
پیچیدن خطوط (Wrap) برای پیام‌های خطا، هشدار و اطلاعاتی. این حالت پیش‌فرض هنگامی است که خروجی یک tty باشد. اگر خروجی برنامه به یک فایل هدایت شود، پیچیدن خطوط غیرفعال می‌شود مگر اینکه از این گزینه استفاده کنید.
فعال‌سازی ردگیری (tracing) فراخوانی‌های رابط برنامه‌نویسی (API) در libguestfs.
الحاق یک تک‌خط متن به انتهای فایل "FILE". اگر فایل از قبل با یک خط جدید پایان نیافته باشد، ابتدا یک خط جدید قبل از خط الحاق‌شده افزوده می‌شود. همچنین به طور خودکار یک خط جدید به انتهای رشته "LINE" اضافه می‌گردد.

برای مثال (با فرض رعایت نقل‌قول‌های معمول پوسته)، دستور زیر:

--append-line '/etc/hosts:10.0.0.1 foo'

یا رشته "10.0.0.1 foo⏎" یا رشته "⏎10.0.0.1 foo⏎" را به فایل اضافه می‌کند، که حالت دوم تنها در صورتی رخ می‌دهد که فایل موجود قبلاً با خط جدید خاتمه نیافته باشد.

نویسه "⏎" نشان‌دهنده یک کاراکتر خط جدید است که با بررسی محتوای فعلی فایل حدس زده می‌شود، بنابراین این دستور برای فایل‌هایی با پایان‌بخش خط لینوکس یا ویندوز رفتار صحیحی انجام می‌دهد. همچنین برای فایل‌های خالی یا فایل‌هایی که وجود ندارند نیز کار می‌کند.

برای درج چندین خط، از همین گزینه چندین بار استفاده کنید:

--append-line '/etc/hosts:10.0.0.1 foo'
--append-line '/etc/hosts:10.0.0.2 bar'

برای درج یک خط خالی قبل از خط الحاق‌شده، به صورت زیر عمل کنید:

--append-line '/etc/hosts:'
--append-line '/etc/hosts:10.0.0.1 foo'
تغییر مجوزهای "FILE" به "PERMISSIONS".

نکته: مقدار "PERMISSIONS" به طور پیش‌فرض در مبنای ۱۰ (ده‌دهی) فرض می‌شود، مگر اینکه برای مشخص کردن مبنای ۸ (هشت‌هشتی) پیشوند 0 به آن اضافه کنید، یعنی از 0700 استفاده کنید نه 700.

تغییر شناسه کاربری (UID) و گروهی (GID) مالک یک فایل یا دایرکتوری در سیستم مهمان. نکته:
  • تنها شناسه‌های عددی UID و GID کار می‌کنند، و ممکن است این شناسه‌ها درون سیستم مهمان با سیستم میزبان یکسان نباشند.
  • این گزینه برای سیستم‌های مهمان ویندوزی کار نخواهد کرد.

برای مثال:

virt-customize --chown '0:0:/var/log/audit.log'

همچنین ببینید: --upload.

خواندن دستورات سفارشی‌سازی از یک فایل، هر خط شامل یک دستور (و آرگومان‌های آن).

هر خط شامل یک دستور سفارشی‌سازی و آرگومان‌های آن است، برای مثال:

delete /some/file
install some-package
password some-user:password:its-new-password

خطوط خالی نادیده گرفته می‌شوند، و خطوطی که با "#" شروع شوند توضیح (comment) هستند و نادیده گرفته می‌شوند. علاوه بر این، می‌توان با افزودن یک "\" (نویسه امتداد خط) در انتهای یک خط، آرگومان‌ها را در چند خط امتداد داد، برای مثال:

edit /some/file:\
  s/^OPT=.*/OPT=ok/

دستورات با همان ترتیبی که در فایل آمده‌اند پردازش می‌شوند، درست مثل اینکه به صورت --delete /some/file در خط فرمان مشخص شده باشند.

کپی بازگشتی فایل‌ها یا دایرکتوری‌ها در داخل سیستم مهمان.

نمی‌توان از نویسه‌های عامه‌پسند (wildcards) استفاده کرد.

کپی بازگشتی فایل‌ها یا دایرکتوری‌های محلی به درون ایمیج دیسک، و قرار دادن آن‌ها در دایرکتوری "REMOTEDIR" (که باید وجود داشته باشد).

نمی‌توان از نویسه‌های عامه‌پسند استفاده کرد.

حذف یک فایل از سیستم مهمان. یا حذف یک دایرکتوری (و تمام محتویات آن، به طور بازگشتی).

می‌توانید از نویسه‌های الگو (shell glob) در مسیر مشخص‌شده استفاده کنید. در صورت لزوم، حواستان باشد که نویسه‌های الگو را از دستکاری پوسته میزبان اسکیپ کنید. برای مثال:

virt-customize --delete '/var/log/*.log'.

همچنین ببینید: --upload، --scrub.

ویرایش فایل "FILE" با استفاده از عبارت پرل "EXPR".

دقت کنید عبارت را به درستی درون علامت‌های نقل‌قول قرار دهید تا توسط پوسته دستکاری نشود.

توجه داشته باشید این گزینه تنها زمانی در دسترس است که Perl 5 نصب باشد.

به بخش "NON-INTERACTIVE EDITING" در virt-edit(1) مراجعه کنید.

نصب اسکریپت "SCRIPT" درون سیستم مهمان، تا در نخستین بوت مهمان، این اسکریپت (با دسترسی root، در اواخر فرآیند بوت) اجرا شود.

اسکریپت پس از نصب در مهمان به طور خودکار با chmod +x قابل اجرا می‌شود.

نسخه جایگزین --firstboot-command مشابه است، اما دستور را به راحتی در یک اسکریپت تک‌خطی برای شما قرار می‌دهد.

می‌توانید چندین گزینه --firstboot داشته باشید. آن‌ها با همان ترتیبی که در خط فرمان ظاهر شده‌اند اجرا می‌شوند.

همچنین ببینید: "FIRSTBOOT" در virt-customize(1)، --run.

اجرای دستور (و آرگومان‌ها) در داخل سیستم مهمان هنگام نخستین بوت مهمان (با دسترسی root، در اواخر فرآیند بوت).

می‌توانید چندین گزینه --firstboot داشته باشید. آن‌ها با همان ترتیبی که در خط فرمان ذکر شده‌اند اجرا می‌شوند.

همچنین ببینید: "FIRSTBOOT" در virt-customize(1)، --run.

نصب بسته‌های نام‌برده (فهرست جداشده با کاما). این بسته‌ها هنگام اولین بوت مهمان با استفاده از مدیر بسته مهمان (مانند apt، yum و غیره) و اتصال شبکه مهمان نصب می‌شوند.

برای مروری بر روش‌های مختلف نصب بسته‌ها، بخش "INSTALLING PACKAGES" در virt-builder(1) را ببینید.

تنظیم نام میزبان (hostname) سیستم مهمان به "HOSTNAME". در صورت تمایل می‌توانید از یک نام میزبان به همراه دامنه نقطه‌دار (FQDN) استفاده کنید.
تزریق سرور بالن (blnsvr.exe) به داخل سیستم مهمان ویندوزی. این عملیات همچنین یک اسکریپت firstboot تزریق می‌کند تا سرور بالن هنگام بوت مهمان نصب شود.

پارامتر این گزینه همان پارامتر مورد استفاده در عملیات --inject-virtio-win است.

توجه داشته باشید که برای تبدیل کامل یک مهمان ویندوزی از یک هایپروایزر خارجی مانند VMware (که شامل چندین عملیات دیگر است) باید به جای این ابزار، از virt-v2v(1) استفاده کنید.

تزریق عامل مهمان کیومو (QEMU Guest Agent) به داخل مهمان ویندوزی. عامل مهمان از طریق یک سوکت با qemu ارتباط برقرار می‌کند تا ویژگی‌های پیشرفته‌تری فراهم کند (به qemu-ga(8) مراجعه نمایید). این عملیات همچنین یک اسکریپت firstboot تزریق می‌کند تا عامل مهمان هنگام بوت مهمان نصب شود.

پارامتر این گزینه همانند پارامتر مورد استفاده در عملیات --inject-virtio-win است.

توجه داشته باشید که برای تبدیل کامل یک مهمان ویندوزی از هایپروایزر خارجی مانند VMware باید از ابزار virt-v2v(1) استفاده نمایید.

تزریق درایورهای virtio-win به یک سیستم مهمان ویندوزی. این درایورها شتاب‌دهنده‌های سخت‌افزاری virtio را اضافه می‌کنند که هنگام اجرا روی هایپروایزرهای پشتیبانی‌کننده از virtio (مانند qemu/KVM) مناسب هستند. این عملیات همچنین رجیستری ویندوز را به گونه‌ای تنظیم می‌کند که درایورها در زمان بوت مهمان نصب شوند.

پارامتر ورودی می‌تواند یکی از موارد زیر باشد:

مسیر ایمیج ISO شامل درایورهای virtio-win (مانند /usr/share/virtio-win/virtio-win.iso).
دایرکتوری شامل درایورهای استخراج‌شده virtio-win (مانند /usr/share/virtio-win).

توجه داشته باشید که برای تبدیل کامل یک مهمان ویندوزی از هایپروایزرهای متفرقه مانند VMware باید از ابزار virt-v2v(1) استفاده کنید.

نصب بسته‌های نام‌برده (فهرست جداشده با کاما). این بسته‌ها در طول ساخت ایمیج با استفاده از مدیر بسته مهمان (مانند apt، yum و غیره) و اتصال شبکه میزبان نصب می‌شوند.

برای مشاهده نمای کلی روش‌های مختلف نصب بسته‌ها، بخش "INSTALLING PACKAGES" در virt-builder(1) را ببینید.

همچنین ببینید: --update، --uninstall.

حساب‌های کاربری که باید در سیستم مهمان نگه داشته شوند. مقدار این گزینه فهرستی از نام‌های کاربری است که با کاما از هم جدا شده‌اند، که تعیین یک کاربر به معنای نگه‌داشتن آن است. برای مثال:
--keep-user-accounts mary

حساب کاربری "mary" را حفظ خواهد کرد.

این گزینه می‌تواند چندین بار مشخص شود.

ایجاد پیوند(های) نمادین در مهمان، که از "LINK" شروع شده و به "TARGET" اشاره می‌کند.
ایجاد یک دایرکتوری در مهمان.

این گزینه از "mkdir -p" استفاده می‌کند، بنابراین هرگونه دایرکتوری میانی نیز ساخته خواهد شد، و در صورتی که دایرکتوری از قبل وجود داشته باشد نیز خطایی رخ نمی‌دهد.

انتقال فایل‌ها یا دایرکتوری‌ها در داخل سیستم مهمان.

نمی‌توان از نویسه‌های عامه‌پسند (wildcards) استفاده کرد.

پاکسازی ایمن (Scrub) فایل لاگ "builder.log" (فایل لاگ دستورات ساخت) از روی ایمیج پس از پایان ساخت. اگر مایل نیستید جزئیات دقیق نحوه ساخت ایمیج فاش شود، از این گزینه استفاده کنید.

همچنین ببینید: "LOG FILE".

تلاش نکردن برای اصلاح برچسب‌های SELinux فایل‌ها در مهمان.

در مهمان‌هایی که از SELinux پشتیبانی می‌کنند، سفارشی‌سازی به طور خودکار فایل‌ها را مجدداً برچسب‌گذاری می‌کند تا برچسب صحیح SELinux را داشته باشند. (برچسب‌گذاری مجدد بلافاصله انجام می‌شود، اما اگر این عملیات با شکست مواجه شود، سفارشی‌سازی به جای آن فایل /.autorelabel را روی ایمیج لمس (touch) می‌کند تا عملیات برچسب‌گذاری مجدد برای بوت بعدی ایمیج زمان‌بندی گردد.) این گزینه برچسب‌گذاری مجدد خودکار را غیرفعال می‌سازد.

این گزینه برای مهمان‌هایی که از SELinux پشتیبانی نمی‌کنند بی‌اثر است.

تنظیم گذرواژه برای "USER". (توجه داشته باشید که این گزینه حساب کاربری را ایجاد نمی‌کند).

برای اطلاع از ساختار فیلد "SELECTOR" و همچنین چگونگی راه‌اندازی حساب‌های کاربری، بخش "USERS AND PASSWORDS" در virt-builder(1) را ببینید.

هنگامی که ابزارهای virt گذرواژه‌ای را در مهمان تغییر داده یا تنظیم می‌کنند، این گزینه رمزنگاری آن گذرواژه را به یکی از مقادیر "md5"، "sha256" یا "sha512" تعیین می‌کند.

مقدارهای "sha256" و "sha512" نیازمند glibc ≥ 2.7 هستند (راهنمای crypt(3) را در مهمان بررسی کنید).

مقدار "md5" روی مهمان‌های لینوکسی نسبتاً قدیمی (مانند RHEL 3) کار می‌کند، اما در برابر حملات امروزی ایمن نیست.

مقدار پیش‌فرض "sha512" است مگر اینکه libguestfs یک مهمان قدیمی را تشخیص دهد که از SHA-512 پشتیبانی نمی‌کرد، که در آن صورت از "md5" استفاده خواهد شد. شما می‌توانید با تعیین این گزینه، رفتار libguestfs را بازنویسی کنید.

توجه داشته باشید این گزینه، رمزنگاری پیش‌فرض گذرواژه را که توسط مهمان هنگام ساخت حساب‌های کاربری جدید در داخل مهمان استفاده می‌شود، تغییر نمی‌دهد. اگر می‌خواهید آن را تغییر دهید، باید از گزینه --edit برای اصلاح فایل‌های "/etc/sysconfig/authconfig" (در Fedora و RHEL) یا "/etc/pam.d/common-password" (در Debian و Ubuntu) استفاده کنید.

حساب‌های کاربری که باید از سیستم مهمان حذف شوند. مقدار این گزینه فهرستی از نام‌های کاربری جداشده با کاما است، که مشخص کردن یک کاربر به معنای حذف شدن آن است. برای مثال:
--remove-user-accounts bob,eve

تنها حساب‌های کاربری "bob" و "eve" را حذف خواهد کرد.

این گزینه می‌تواند چندین بار مشخص شود.

تنظیم گذرواژه کاربر root.

برای اطلاع از ساختار فیلد "SELECTOR" و همچنین نحوه راه‌اندازی حساب‌های کاربری، بخش "USERS AND PASSWORDS" در virt-builder(1) را ببینید.

نکته: در virt-builder، اگر گزینه --root-password را مشخص نکنید، یک گذرواژه ریشه تصادفی به مهمان اختصاص می‌یابد.

اجرای اسکریپت شل (یا هر برنامه دیگری) به نام "SCRIPT" روی ایمیج دیسک. اسکریپت به صورت مجازی‌شده درون یک محیط ایزوله کوچک (appliance) و به صورت chroot در سیستم‌فایل مهمان اجرا می‌شود.

اسکریپت به طور خودکار chmod +x خواهد شد.

اگر libguestfs از آن پشتیبانی کند، یک اتصال شبکه محدود در دسترس خواهد بود اما تنها اتصالات خروجی شبکه مجاز هستند. همچنین می‌توانید دیسک‌های داده (مانند فایل‌های ISO) را به عنوان روشی دیگر برای ارائه داده‌ها (مانند بسته‌های نرم‌افزاری) به اسکریپت بدون نیاز به اتصال شبکه متصل کنید (--attach). همچنین می‌توانید فایل‌های داده را بارگذاری کنید (--upload).

می‌توانید چندین گزینه --run داشته باشید. آن‌ها با همان ترتیبی که در خط فرمان ظاهر شده‌اند اجرا می‌شوند.

همچنین ببینید: --firstboot، --attach، --upload.

اجرای دستور و آرگومان‌های آن روی ایمیج دیسک. دستور به صورت مجازی‌شده درون یک محیط ایزوله کوچک و با chroot درون سیستم‌فایل مهمان اجرا می‌شود.

اگر libguestfs از آن پشتیبانی کند، یک اتصال شبکه محدود در دسترس خواهد بود اما تنها اتصالات خروجی شبکه مجاز هستند. همچنین می‌توانید دیسک‌های داده (مانند فایل‌های ISO) را به عنوان روشی دیگر برای ارائه داده‌ها به دستور بدون نیاز به اتصال شبکه متصل کنید (--attach). همچنین می‌توانید فایل‌های داده را بارگذاری کنید (--upload).

می‌توانید چندین گزینه --run-command داشته باشید. آن‌ها با همان ترتیبی که در خط فرمان ذکر شده‌اند اجرا می‌شوند.

همچنین ببینید: --firstboot، --attach، --upload.

اجرای اسکریپت یا برنامه نام‌برده "SCRIPT" روی سیستم مهمان. اسکریپت می‌تواند هر برنامه‌ای روی سیستم میزبان باشد. دایرکتوری جاری اسکریپت، دایرکتوری ریشه مهمان خواهد بود.

نکته: اگر اسکریپت در مسیر $PATH قرار ندارد، باید مسیر مطلق کامل آن را مشخص کنید.

نقطه مانت (یک دایرکتوری خالی روی میزبان) که هنگامی که عملیات "script" فعال باشد و یک یا چند اسکریپت با استفاده از پارامتر(های) --script مشخص شده باشند، استفاده می‌شود.

نکته: مقدار "SCRIPTDIR" باید یک مسیر مطلق باشد.

اگر --scriptdir مشخص نشود، یک نقطه مانت موقت ایجاد خواهد شد.

پاکسازی ایمن یک فایل از مهمان. این گزینه مشابه --delete است با این تفاوت که:
  • داده‌ها را به گونه‌ای پاکسازی می‌کند که مهمان نتواند آن را بازیابی نماید.
  • نمی‌تواند دایرکتوری‌ها را حذف کند، بلکه تنها فایل‌های معمولی را پاک می‌کند.
این یک گزینه سازگاری است که کاری انجام نمی‌دهد.
تزریق یک کلید ssh تا "USER" داده‌شده بتواند بدون نیاز به گذرواژه از طریق ssh وارد سیستم شود. کاربر "USER" باید از قبل در مهمان وجود داشته باشد.

برای اطلاع از ساختار فیلد "SELECTOR" به بخش "SSH KEYS" در virt-builder(1) مراجعه کنید.

می‌توانید چندین گزینه --ssh-inject برای کاربران مختلف و همچنین برای کلیدهای بیشتر به ازای هر کاربر داشته باشید.

کپی فایل‌ها یا دایرکتوری‌های محلی از یک فایل tar محلی به نام "TARFILE" به داخل ایمیج دیسک، و قرار دادن آن‌ها در دایرکتوری "REMOTEDIR" (که باید وجود داشته باشد). توجه داشته باشید که فایل tar باید غیرفشرده باشد (فایل‌های .tar.gz در اینجا کار نمی‌کنند).
تنظیم منطقه زمانی پیش‌فرض مهمان به "TIMEZONE". از رشته مکانی مانند "Europe/London" یا "Asia/Tehran" استفاده کنید.
این دستور عملیاتی شبیه به دستور touch(1) روی فایل "FILE" انجام می‌دهد.
این دستور اندازه فایل "FILE" را به صفر کاهش می‌دهد (خالی می‌کند). فایل باید از قبل وجود داشته باشد.
این دستور به طور بازگشتی تمام فایل‌های زیر مسیر "PATH" را با اندازه صفر کوتاه (خالی) می‌کند.
حذف بسته‌های نام‌برده (فهرست جداشده با کاما). این بسته‌ها در حین ساخت ایمیج با استفاده از مدیر بسته مهمان (مانند apt، yum و غیره) حذف می‌شوند. همچنین ممکن است برای برآورده کردن این درخواست، نیاز به حذف بسته‌های وابسته باشد.

همچنین ببینید: --install، --update.

انجام معادل دستورهای "yum update"، "apt-get upgrade"، یا هر دستور دیگری که برای ارتقای بسته‌های نصب‌شده فعلی در قالب به آخرین نسخه آن‌ها لازم است.

همچنین ببینید: --install، --uninstall.

بارگذاری فایل محلی "FILE" به مقصد "DEST" در ایمیج دیسک. مالکیت و مجوزهای فایل از نسخه اصلی حفظ می‌شوند، بنابراین باید آن‌ها را طوری تنظیم کنید که مایلید در ایمیج دیسک باشند.

مقدار "DEST" می‌تواند نام نهایی فایل باشد. این حالت می‌تواند برای تغییر نام فایل هنگام بارگذاری استفاده شود.

اگر "DEST" نام یک دایرکتوری باشد (که باید از قبل در مهمان وجود داشته باشد)، فایل در آن دایرکتوری بارگذاری می‌شود و نام فایل همانند سیستم‌فایل محلی باقی می‌ماند.

همچنین ببینید: --mkdir، --delete، --scrub.

نوشتن "CONTENT" در داخل فایل "FILE".

اگر گزینه --enable/--operations داده نشود، بیشتر عملیات‌های sysprep فعال هستند.

برای مشاهده فهرست تمامی عملیات‌های موجود برای باینری virt-sysprep خود، دستور "virt-sysprep --list-operations" را اجرا نمایید. مواردی که به طور پیش‌فرض فعال هستند با یک نویسه "*" مشخص شده‌اند. بدون در نظر گرفتن گزینه‌های --enable/--operations، عملیات‌های sysprep برای برخی انواع سیستم مهمان نادیده گرفته می‌شوند.

عملیات‌ها می‌توانند به صورت جداگانه با گزینه‌های --enable/--operations فعال شوند. از یک فهرست جداشده با کاما استفاده کنید، به عنوان مثال:

virt-sysprep --operations ssh-hostkeys,udev-persistent-net [etc..]

نسخه‌های بعدی virt-sysprep ممکن است عملیات‌های بیشتری اضافه کنند. اگر از virt-sysprep استفاده می‌کنید و رفتاری قابل پیش‌بینی می‌خواهید، تنها عملیات‌هایی را که می‌خواهید فعال باشند صریحاً مشخص کنید.

نویسه "*" = در حالتی که هیچ گزینه --enable/--operations داده نشود، به صورت پیش‌فرض فعال است.

حذف داده‌های خرابی تولیدشده توسط ABRT.

حذف داده‌های خرابی ABRT تولیدشده به طور خودکار در "/var/spool/abrt/".

حذف فایل‌های پشتیبان ویرایشگرها از مهمان.

فایل‌های زیر از تمام نقاط سیستم‌فایل مهمان حذف می‌شوند:

·
*.bak
·
*~

در سیستم‌عامل‌های لینوکس و یونیکس، تنها سیستم‌های فایل زیر بررسی خواهند شد:

·
/etc
·
/root
·
/srv
·
/tmp
·
/var

حذف تاریخچه دستورات bash در مهمان.

حذف تاریخچه bash کاربر "root" و هر کاربر دیگری که یک فایل ".bash_history" در دایرکتوری خانگی خود دارد.

نکاتی درباره bash-history

در حال حاضر این عملیات تنها در "/root" و "/home/*" به دنبال دایرکتوری‌های خانگی می‌گردد، بنابراین تاریخچه bash کاربرانی که دایرکتوری خانگی آن‌ها در مکان‌های دیگری است حذف نخواهد شد.

حذف برگه (tab) blkid در مهمان.

حذف گواهی‌های مرجع گواهی (CA) در مهمان.

در صورتی که هرگونه گواهی حذف شود، مخزن گواهی‌های CA سیستم به‌روزرسانی می‌شود.

حذف داده‌های خرابی تولیدشده توسط kexec-tools.

حذف داده‌های خرابی هسته تولیدشده خودکار توسط kdump.

حذف کارهای at و cron کاربران.

سفارشی‌سازی مهمان.

سفارشی‌سازی مهمان با ارائه گزینه‌های virt-customize(1) برای نصب بسته‌ها، ویرایش فایل‌ها و مواردی از این دست.

حذف اجاره‌های سرویس‌گیرنده DHCP (کلاینت).

حذف اجاره‌های کارساز DHCP (سرور).

حذف داده‌های Dovecot (کارساز ایمیل).

حذف قوانین دیوار آتش (فایروال).

این عملیات قوانین سفارشی فایروال را با حذف "/etc/sysconfig/iptables" یا پیکربندی سفارشی firewalld در "/etc/firewalld/*/*" حذف می‌کند.

توجه داشته باشید که این گزینه به طور پیش‌فرض فعال نیست زیرا ممکن است مهمان را در معرض آسیب‌پذیری‌ها قرار دهد. با احتیاط استفاده شود.

نشانه‌گذاری سیستم برای پیکربندی مجدد.

برای مهمان‌های لینوکس، این کار فایل "/.unconfigured" را لمس (touch) می‌کند، که باعث می‌شود در اولین بوت، به صورت تعاملی تنظیماتی مانند گذرواژه ریشه و منطقه زمانی از کاربر پرسیده شود.

تغییر شناسه‌های UUID سیستم‌های فایل.

در مهمان‌ها و انواع سیستم‌فایل‌هایی که پشتیبانی می‌شود، UUIDهای تصادفی جدید تولید شده و به سیستم‌های فایل اختصاص می‌یابد.

نکاتی درباره fs-uuids

عملیات fs-uuids به طور پیش‌فرض غیرفعال است زیرا هنوز تمام مکان‌هایی در مهمان را که از UUID استفاده می‌کنند (برای مثال "/etc/fstab" یا بارگذار بوت) پیدا و به‌روزرسانی نمی‌کند. فعال‌سازی این عملیات به احتمال قوی باعث غیرقابل بوت شدن سیستم مهمان شما می‌شود.

ببینید: https://bugzilla.redhat.com/show_bug.cgi?id=991641

حذف فایل‌های IPA.

حذف تمام فایل‌های مربوط به سیستم IPA (هویت، خط‌مشی، حسابرسی - Identity, Policy, Audit). این کار در عمل مهمان را بدون تعامل با کارساز IPA از آن خارج (unenroll) می‌کند.

این عملیات دستور "ipa-client" را اجرا نمی‌کند.

حذف داده‌های کربروس (Kerberos) در مهمان.

حذف فایل host keytab کربروس در مهمان.

حذف تعداد زیادی از فایل‌های لاگ از سیستم مهمان.

در لینوکس فایل‌های زیر حذف می‌شوند:

·
/etc/Pegasus/*.cnf
·
/etc/Pegasus/*.crt
·
/etc/Pegasus/*.csr
·
/etc/Pegasus/*.pem
·
/etc/Pegasus/*.srl
·
/root/anaconda-ks.cfg
·
/root/anaconda-post.log
·
/root/initial-setup-ks.cfg
·
/root/install.log
·
/root/install.log.syslog
·
/root/original-ks.cfg
·
/var/cache/fontconfig/*
·
/var/cache/gdm/*
·
/var/cache/man/*
·
/var/lib/AccountService/users/*
·
/var/lib/fprint/*
·
/var/lib/logrotate.status
·
/var/log/*.log*
·
/var/log/BackupPC/LOG
·
/var/log/ConsoleKit/*
·
/var/log/anaconda.syslog
·
/var/log/anaconda/*
·
/var/log/apache2/*_log
·
/var/log/apache2/*_log-*
·
/var/log/apt/*
·
/var/log/aptitude*
·
/var/log/audit/*
·
/var/log/btmp*
·
/var/log/ceph/*.log
·
/var/log/chrony/*.log
·
/var/log/cron*
·
/var/log/cups/*_log*
·
/var/log/debug*
·
/var/log/dmesg*
·
/var/log/exim4/*
·
/var/log/faillog*
·
/var/log/firewalld*
·
/var/log/gdm/*
·
/var/log/glusterfs/*glusterd.vol.log
·
/var/log/glusterfs/glusterfs.log
·
/var/log/grubby*
·
/var/log/httpd/*log
·
/var/log/installer/*
·
/var/log/jetty/jetty-console.log
·
/var/log/journal/*
·
/var/log/lastlog*
·
/var/log/libvirt/libvirtd.log
·
/var/log/libvirt/libxl/*.log
·
/var/log/libvirt/lxc/*.log
·
/var/log/libvirt/qemu/*.log
·
/var/log/libvirt/uml/*.log
·
/var/log/lightdm/*
·
/var/log/mail/*
·
/var/log/maillog*
·
/var/log/messages*
·
/var/log/ntp
·
/var/log/ntpstats/*
·
/var/log/ppp/connect-errors
·
/var/log/rhsm/*
·
/var/log/sa/*
·
/var/log/secure*
·
/var/log/setroubleshoot/*.log
·
/var/log/spooler*
·
/var/log/squid/*.log
·
/var/log/syslog*
·
/var/log/tallylog*
·
/var/log/tuned/tuned.log
·
/var/log/wtmp*
·
/var/log/xferlog*
·
/var/named/data/named.run

حذف فایل system.devices در LVM2.

در مهمان‌های لینوکس، پویش LVM2 برای یافتن حجم‌های فیزیکی (PV) ممکن است تنها به دستگاه‌های بلوکی که WWID آن‌ها در "/etc/lvm/devices/system.devices" فهرست شده محدود شود. هنگام شبیه‌سازی ماشین‌های مجازی، WWIDها ممکن است تغییر کنند و کارکرد "lvm pvscan" را با شکست روبرو سازند. این عملیات "/etc/lvm/devices/system.devices" را حذف می‌کند.

تغییر شناسه‌های UUID مربوط به PV و VG در LVM2.

در مهمان‌های لینوکسی که دارای حجم‌های فیزیکی (PV) یا گروه‌های حجم (VG) در LVM2 هستند، UUIDهای تصادفی جدید تولید شده و به این PVها و VGها اختصاص داده می‌شود.

حذف شناسه محلی ماشین (machine ID).

شناسه ماشین معمولاً در طول نصب سیستم از یک منبع تصادفی تولید می‌شود و برای تمام بوت‌های بعدی ثابت می‌ماند. به طور اختیاری، برای سیستم‌های بدون وضعیت (stateless) در صورت خالی بودن در حین بوت، در زمان اجرا تولید می‌شود.

حذف ایمیل‌ها از دایرکتوری صف محلی ایمیل (mail spool).

حذف HOSTNAME و DHCP_HOSTNAME در پیکربندی رابط شبکه.

برای فدورا و ردهت انترپرایز لینوکس، این مورد از فایل‌های "ifcfg-*" حذف می‌شود.

حذف پیکربندی HWADDR (آدرس سخت‌افزاری/MAC ثابت).

برای فدورا و ردهت انترپرایز لینوکس، این مورد از فایل‌های "ifcfg-*" حذف می‌شود.

حذف پروفایل‌های اتصال محلی NetworkManager (فایل‌های کلید).

در فدورا و ردهت انترپرایز لینوکس، فایل‌های "/etc/NetworkManager/system-connections/*.nmconnection" حذف می‌شوند.

حذف فایل‌های لاگ حسابداری فرآیندها (process accounting).

در صورت فعال بودن حسابداری فرآیندها، اطلاعات حسابداری سراسری سیستم در فایل‌های لاگ pacct ذخیره می‌شود.

حذف حافظه موقت (کش) مدیر بسته‌ها.

حذف داده‌های PAM در مهمان.

حذف /etc/passwd- و فایل‌های پشتیبان مشابه.

در لینوکس فایل‌های زیر حذف می‌شوند:

·
/etc/group-
·
/etc/gshadow-
·
/etc/passwd-
·
/etc/shadow-
·
/etc/subgid-
·
/etc/subuid-

حذف فایل‌های داده و لاگ Puppet.

حذف فایل‌های مدیر اشتراک رد هت (RH Subscription Manager).

حذف شناسه سیستم RHN.

حذف فایل‌های پایگاه داده RPM مختص میزبان.

حذف فایل‌ها و قفل‌های پایگاه داده RPM مختص میزبان. در صورت نیاز، RPM این فایل‌ها را به طور خودکار دوباره ایجاد خواهد کرد.

حذف فایل‌های پایگاه داده و لاگ سامبا (Samba).

اجرای اسکریپت‌های دلخواه روی سیستم مهمان.

ماژول "script" به شما اجازه می‌دهد اسکریپت‌های شل یا برنامه‌های دلخواه را روی مهمان اجرا کنید.

توجه داشته باشید این ویژگی نیازمند پشتیبانی FUSE است. ممکن است لازم باشد این مورد را در میزبان خود فعال نمایید، به عنوان مثال با افزودن کاربر جاری به گروه "fuse" یا با بارگذاری یک ماژول هسته.

از یک یا چند پارامتر --script برای تعیین اسکریپت‌ها یا برنامه‌هایی که باید روی مهمان اجرا شوند استفاده نمایید.

اسکریپت یا برنامه با دایرکتوری جاری برابر با دایرکتوری ریشه مهمان اجرا می‌شود، بنابراین باید از مسیرهای نسبی استفاده شود. برای مثال: اجرای "rm etc/resolv.conf" در اسکریپت، فایل پیکربندی DNS مهمان لینوکسی را حذف می‌کند، اما "rm /etc/resolv.conf" تلاش می‌کند فایل سیستم میزبان را حذف کند.

معمولاً یک نقطه مانت موقت برای مهمان استفاده می‌شود، اما می‌توانید با استفاده از پارامتر --scriptdir یک نقطه مانت مشخص را انتخاب نمایید.

نکته: این مورد با اسکریپت‌های --firstboot (که در بستر سیستم مهمان هنگام اولین بوت اجرا می‌شوند) تفاوت دارد. اسکریپت‌های --script روی میزبان اجرا می‌شوند، نه داخل مهمان.

حذف شناسه UUID سخت‌افزار Smolt.

حذف کلیدهای میزبان SSH در مهمان.

کلیدهای میزبان SSH در بوت بعدی سیستم مهمان، (به طور متفاوت) بازتولید خواهند شد.

اگر پس از شبیه‌سازی، مهمان همان آدرس IP را دریافت کند، ssh یک هشدار جدی درباره تغییر کلید میزبان به شما می‌دهد:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

حذف دایرکتوری‌های ".ssh" در مهمان.

حذف دایرکتوری ".ssh" کاربر "root" و هر کاربر دیگری که دایرکتوری ".ssh" در شاخه خانگی خود دارد.

نکاتی درباره ssh-userdir

در حال حاضر این عملیات تنها در "/root" و "/home/*" به دنبال دایرکتوری‌های خانگی می‌گردد، بنابراین فایل‌های ssh کاربرانی که شاخه خانگی آن‌ها در مکان‌های دیگری است حذف نخواهد شد.

حذف فایل‌های پایگاه داده و لاگ sssd.

حذف فایل‌های موقت.

این عملیات فایل‌های موقت زیر "/tmp" و "/var/tmp" را حذف می‌کند.

حذف قواعد شبکه ماندگار udev.

حذف قوانین ماندگار udev که آدرس MAC فعلی مهمان را به یک دستگاه اترنت ثابت (مانند eth0) نگاشت می‌کنند.

پس از شبیه‌سازی یک مهمان، آدرس MAC معمولاً تغییر می‌کند. از آنجا که آدرس MAC قدیمی نام قبلی (مانند eth0) را اشغال کرده است، این بدان معناست که آدرس MAC تازه به یک نام جدید (مانند eth1) اختصاص می‌یابد و این معمولاً نامطلوب است. پاک کردن قواعد شبکه ماندگار udev از این وضعیت جلوگیری می‌کند.

حذف حساب‌های کاربری در مهمان.

به طور پیش‌فرض تمام حساب‌های کاربری و دایرکتوری‌های خانگی آن‌ها را حذف می‌کند. حساب "root" حذف نمی‌شود.

برای مشاهده روش حذف تنها برخی از کاربران یا عدم حذف برخی دیگر، پارامتر --remove-user-accounts را ببینید.

حذف فایل utmp.

این فایل مشخص می‌کند که چه کسانی در حال حاضر وارد سیستم شده‌اند. در توزیع‌های مدرن لینوکس این فایل در یک رم‌دیسک (ramdisk) ذخیره می‌شود و بنابراین بخشی از دیسک ماشین مجازی نیست، اما در توزیع‌های قدیمی‌تر روی دیسک ذخیره می‌شد.

حذف شناسه UUID مربوط به yum.

نرم‌افزار Yum دفعه بعدی که اجرا شود و متوجه شود UUID اصلی پاک شده است، یک UUID تازه ایجاد می‌کند.

حذف تاریخچه zsh در مهمان.

حذف تاریخچه zsh کاربر "root" و هر کاربر دیگری که یک فایل ".zsh_history" در دایرکتوری خانگی خود دارد.

نکاتی درباره zsh-history

در حال حاضر این عملیات تنها در "/root" و "/home/*" به دنبال دایرکتوری‌های خانگی می‌گردد، بنابراین تاریخچه zsh کاربرانی که دایرکتوری خانگی آن‌ها در مکان‌های دیگر است حذف نخواهد شد.

ماشین‌های مجازی که از رمزنگاری کامل دیسک به صورت داخلی در مهمان استفاده می‌کنند نباید برای شبیه‌سازی و توزیع در نظر گرفته شوند، زیرا به چندین طرف کلید حجم داخلی یکسانی ارائه می‌دهد و هر یک از آن‌ها را قادر می‌سازد تمام کلون‌های دیگر را رمزگشایی کند. برای جزئیات بیشتر به بخش سوالات متداول (FAQ) مربوط به LUKS مراجعه کنید.

اگرچه virt-sysprep برخی اطلاعات حساس را از مهمان حذف می‌کند، اما ادعا نمی‌کند که همه آن‌ها را پاک می‌کند. شما باید بخش "عملیات‌ها (OPERATIONS)" در بالا و همچنین مهمان را پس از آن بررسی کنید.

فایل‌های حساس صرفاً حذف می‌شوند. داده‌هایی که شامل می‌شدند ممکن است همچنان روی دیسک وجود داشته باشند و با یک ویرایشگر هگز یا ابزار بازیابی فایل (undelete) به راحتی قابل بازیابی باشند. گزینه --scrub می‌تواند برای پاکسازی عمیق و ایمن فایل‌ها به جای حذف ساده آن‌ها استفاده شود. دستور virt-sparsify(1) روش دیگری برای حذف این محتوا است. همچنین دستور scrub(1) را برای پاکسازی محتوای حذف‌شده در ورودی‌های دایرکتوری و inodeها ببینید.

(این بخش فقط برای مهمان‌های لینوکس اعمال می‌شود)

برای مهمان‌های پشتیبانی‌شده، virt-sysprep چند بایت تصادفی از میزبان را در فایل بذر تصادفی مهمان می‌نویسد.

اگر این کار تنها یک بار انجام شود و مهمان از همان قالب شبیه‌سازی گردد، هر مهمان با آنتروپی یکسانی شروع به کار خواهد کرد و مواردی مانند کلیدهای میزبان SSH و شماره‌های توالی TCP ممکن است قابل پیش‌بینی باشند.

بنابراین باید ترتیبی دهید که پس از شبیه‌سازی از روی قالب نیز مقادیر تصادفی بیشتری اضافه شود، که این کار را می‌توان با فعال‌سازی ماژول customize انجام داد:

cp template.img newguest.img
virt-sysprep --enable customize -a newguest.img

برای مهمان‌هایی که از SELinux استفاده می‌کنند، هنگام استفاده از عملیات‌هایی که فایل‌های جدید ایجاد می‌کنند یا فایل‌های موجود را تغییر می‌دهند ممکن است رسیدگی ویژه‌ای به آن‌ها مورد نیاز باشد.

برای جزئیات بیشتر، به "SELINUX" در virt-builder(1) مراجعه کنید.

قابلیت "راه‌اندازی سریع" (fast startup) در ویندوز ۸ می‌تواند مانع از کارکرد درست virt-sysprep شود. به "WINDOWS HIBERNATION AND WINDOWS 8 FAST STARTUP" در guestfs(3) مراجعه کنید.

این برنامه در صورت موفقیت 0 و در صورت بروز خطا 1 را برمی‌گرداند.

"VIRT_TOOLS_DATA_DIR"
این متغیر می‌تواند به دایرکتوری حاوی فایل‌های داده استفاده‌شده برای نصب بوت اولیه (firstboot) ویندوز اشاره کند.

به طور معمول نیازی به تنظیم این متغیر ندارید. در صورت عدم تنظیم، مقدار پیش‌فرض کامپایل‌شده درون برنامه استفاده خواهد شد (چیزی شبیه به /usr/share/virt-tools).

این دایرکتوری ممکن است شامل فایل‌های زیر باشد:

این فایل باینری ویندوزی RHSrvAny است که برای نصب یک اسکریپت "firstboot" در مهمان‌های ویندوز استفاده می‌شود. اگر قصد دارید از گزینه‌های --firstboot یا --firstboot-command با مهمان‌های ویندوزی استفاده کنید، وجود آن الزامی است.

همچنین ببینید: "https://github.com/rwmjones/rhsrvany"

این یک باینری ویندوزی ارائه‌شده با SUSE VMDP است که برای نصب یک اسکریپت "firstboot" در مهمان‌های ویندوز به کار می‌رود. اگر قصد دارید از گزینه‌های --firstboot یا --firstboot-command با مهمان‌های ویندوزی استفاده کنید، وجود آن الزامی است.

برای سایر متغیرهای محیطی، به "ENVIRONMENT VARIABLES" در guestfs(3) مراجعه کنید.

guestfs(3), guestfish(1), virt-builder(1), virt-clone(1), virt-customize(1), virt-rescue(1), virt-resize(1), virt-sparsify(1), virsh(1), lvcreate(8), qemu-img(1), scrub(1), http://libguestfs.org, http://libvirt.org

Richard W.M. Jones http://people.redhat.com/~rjones

Wanlong Gao, Fujitsu Ltd.

Copyright (C) 2011-2025 Red Hat Inc.

Copyright (C) 2012 Fujitsu Ltd.

این برنامه نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۲ مجوز و چه (به انتخاب خودتان) هر نسخه بعدی دیگری، بازتوزیع کرده و/یا تغییر دهید.

این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هیچ‌گونه ضمانتی؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف مشخص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید همراه با این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به آدرس زیر نامه بنویسید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

برای دریافت فهرستی از اشکالات مربوط به libguestfs، از نشانی زیر استفاده کنید: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

برای گزارش یک اشکال جدید در libguestfs، از نشانی زیر استفاده کنید: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

هنگام گزارش یک اشکال، لطفاً موارد زیر را ارائه دهید:

  • نسخه libguestfs.
  • مکانی که libguestfs را از آن دریافت کرده‌اید (مانند توزیع لینوکس، کامپایل‌شده از سورس و غیره).
  • توصیف دقیق اشکال و ارائه روشی برای بازتولید آن.
  • اجرای دستور libguestfs-test-tool(1) و قرار دادن خروجی کامل و ویرایش‌نشده آن در گزارش اشکال.
2026-07-11 guestfs-tools-1.56.0