| guestfs-recipes(1) | Virtualization Support | guestfs-recipes(1) |
نام (NAME)
guestfs-recipes - دستورالعملهای کاربردی libguestfs، guestfish و ابزارهای virt
توضیحات (DESCRIPTION)
این صفحه شامل دستورالعملها و پیوندهایی برای کارهایی است که میتوانید با استفاده از libguestfs، guestfish(1) و ابزارهای virt انجام دهید.
دسترسی به یک ایمیج دیسک راه دور با استفاده از guestfish
اگر ایمیج دیسک روی یک کارساز راه دور قرار دارد که از طریق SSH، HTTP، FTP، NBD، iSCSI یا موارد مشابه در دسترس است، میتوانید آن را مستقیماً باز کنید. برای چندین مثال، بخش «ADDING REMOTE STORAGE» در guestfish(1) را ببینید. این کار نیازمند libguestfs ≥ 1.22 و qemu ≥ 1.5 است.
بازرسی یک ماشین مجازی برای فایلهای setuid
ببینید: بخش «EXAMPLES» در virt-ls(1).
بازرسی یک ماشین مجازی برای آسیبپذیریها و مشکلات امنیتی
ببینید: https://rwmj.wordpress.com/2013/05/16/scanning-offline-guests-using-openscap-and-guestmount/#content
تغییر تصویر پسزمینه در یک ماشین مجازی Windows XP
پیوندهای زیر نحوه استفاده از guestfish(1) را برای تغییر تصویر پسزمینه یک کاربر در یک ماشین مجازی Windows XP شرح میدهند. متأسفانه به نظر میرسد این روش برای هر نسخه از Windows به میزان قابلتوجهی متفاوت است.
https://lists.fedoraproject.org/pipermail/virt/2011-May/002655.html https://lists.fedoraproject.org/pipermail/virt/2011-May/002658.html
محاسبه چکسام یک فایل یا دستگاه در یک ایمیج دیسک
برای محاسبه چکسام یک دستگاه کامل، یا یک پارتیشن، LV و غیره در یک ایمیج دیسک:
guestfish --ro -a disk.img run : checksum-device md5 /dev/sda1
عبارت "md5" را با نوع چکسام مورد نظر خود جایگزین کنید. برای فهرستی از انواع پشتیبانیشده، بخش «guestfs_checksum_device» در guestfs(3) را ببینید.
عبارت /dev/sda1 به معنی «نخستین پارتیشن» است. میتوانید از /dev/sda برای محاسبه چکسام کل ایمیج دیسک، یا از نام یک حجم منطقی (LV) یا دستگاه RAID استفاده کنید.
برای محاسبه چکسام یک فایل منفرد:
guestfish --ro -a disk.img -i checksum sha256 /etc/passwd
یا برای یک مهمان Windows:
guestfish --ro -a disk.img -i \ checksum sha256 'win:\windows\system32\config\SOFTWARE' از ترکیبی از ابزارهایی مانند cp(1)، dd(1) و ابزارهای virt مانند virt-sysprep(1)، virt-sparsify(1) و virt-resize(1) استفاده کنید.
تبدیل CD-ROM / DVD / ISO به تاربال (Convert a CD-ROM / DVD / ISO to a tarball)
این دستور ورودی cd.iso را به خروجی cd.tar.gz تبدیل میکند:
guestfish --ro -a cd.iso -m /dev/sda tgz-out / cd.tar.gz
برای صادر کردن تنها یک زیردایرکتوری، برای مثال /files، اینگونه عمل کنید:
guestfish --ro -a cd.iso -m /dev/sda tgz-out /files cd.tar.gz
تبدیل از یک قالب/سیستمفایل به دیگری (Convert from one format/filesystem to another)
اگر دیسک دادهای در یک قالب / سیستمفایل / پارتیشن / مدیر حجم (volume manager) دارید، میتوانید با استفاده از این روش آن را به نوع دیگری تبدیل کنید.
در این مثال، کار را با یک دیسک داده که شامل یک پارتیشن تکیِ دارای سیستمفایل است آغاز میکنیم و میخواهیم دیسک دیگری بسازیم که شامل همان فایلها باشد، اما روی یک سیستمفایل ext3 که در یک حجم منطقی (logical volume) روی دیسکی با قالب خام تنک (sparse raw-format) قرار گرفته است.
ابتدا دیسک مقصد قالببندیشده اما خالی را بسازید:
truncate -s 10G target.img virt-format -a target.img --partition=mbr --lvm --filesystem=ext3
اکنون، دو نمونه از guestfish را با لولهکشی (pipe) به یکدیگر متصل کنید تا دادههای قدیمی به دیسک جدید منتقل شوند:
guestfish --ro -a source.img -m /dev/sda1 -- tar-out / - | \ guestfish --rw -a target.img -m /dev/VG/LV -- tar-in - /
برای مرور ایمیج دیسک نهایی، اینگونه عمل کنید:
guestfish --ro -a target.img -m /dev/VG/LV ><fs> ll /
این تکنیک بسیار قدرتمند است و برای نمونه به شما امکان میدهد دایرکتوریهای مبدأ را بین سیستمفایلهای مقصد تقسیم کنید.
توجه داشته باشید که این روش برای دیسکهای ماشین مجازی قابل بوت کار نخواهد کرد (دستکم نه بهطور مستقیم)، زیرا بوتلودر را کپی نمیکند.
تبدیل DVD ویندوز به فلش USB قابل بوت (Convert Windows DVD to bootable USB key)
تبدیل ایمیج بدون پارتیشن سبک زن به ایمیج پارتیشنبندیشده (Convert Xen-style partitionless image to partitioned disk image)
ایمیجهای دیسک Xen اغلب بدون پارتیشن هستند؛ بدین معنا که سیستمفایل بدون هیچ جدول پارتیشنی، مستقیماً از ابتدای دیسک آغاز میشود. در واقع میتوانید این ایمیجها را مستقیماً در KVM استفاده کنید (به شرطی که سیستمعامل مهمان ویندوز نباشد)، اما برخی افراد ترجیح میدهند آنها را به ایمیجهای دیسک استاندارد پارتیشنبندیشده تبدیل کنند، و این کار برای مهمانهای ویندوزی الزامی است. در اینجا نحوه استفاده از guestfish برای این کار آورده شده است:
guestfish ><fs> add-ro input.img ><fs> sparse output.img 10G # adjust the output size ><fs> run # Create a partition table on the output disk: ><fs> part-init /dev/sdb mbr ><fs> part-add /dev/sdb p 2048 -2048 # Copy the data to the target partition: ><fs> copy-device-to-device /dev/sda /dev/sdb1 sparse:true # Optionally resize the target filesystem. Use ntfsresize # for Windows guests: ><fs> resize2fs /dev/sdb1
چنین ایمیج دیسکی مستقیماً قابل بوت نخواهد بود. ممکن است لازم باشد آن را با یک کرنل خارجی و initramfs بوت کنید (زیر را ببینید). یا میتوانید از دستورهای guestfish یعنی "syslinux" یا "extlinux" برای نصب بوتلودر SYSLINUX استفاده کنید.
ایجاد ایمیجهای دیسک خالی (Create empty disk images)
ابزار virt-format(1) میتواند این کار را مستقیماً انجام دهد.
از virt-make-fs(1) برای ایجاد یک ایمیج دیسک دارای محتوا استفاده کنید. این ابزار همچنین میتواند برخی از ایمیجهای دیسک استاندارد مانند دستگاههای فلاپی مجازی (VFDs) را ایجاد کند.
همچنین میتوانید از گزینهٔ -N در guestfish(1) برای ایجاد ایمیجهای دیسک خالی استفاده کنید. راهنمای کاربردی زیر گزینههای موجود را شرح میدهد.
https://rwmj.wordpress.com/2010/09/08/new-guestfish-n-options-in-1-5-9/#content
virt-builder(1) میتواند سیستمهای مهمان مینیمال ایجاد کند.
حذف فایل (یا سایر عملیات سادهٔ فایلی) (Delete a file (or other simple file operations))
از guestfish استفاده کنید. برای حذف یک فایل:
guestfish -a disk.img -i rm /file/to/delete
برای touch کردن یک فایل (بهروزرسانی تاریخچه زمانی آن یا ایجاد آن):
guestfish -a disk.img -i touch /file/to/touch
برای دریافت وضعیت (stat) یک فایل. از آنجا که این یک عملیات فقطخواندنی است، میتوانیم با افزودن پرچم --ro آن را ایمنتر کنیم.
guestfish --ro -a disk.img -i stat /file/to/stat
دهها مورد از این دستورها وجود دارد. guestfish(1) یا خروجی دستور "guestfish -h" را ببینید..SH "مقایسه دو سیستم مهمان؛ مقایسه یک اسنپشات با نسخه کنونی" از نسخه libguestfs ≥ 1.26 به بعد، از virt-diff(1) برای بررسی تفاوتهای میان دو سیستم مهمان (برای نمونه اگر در ابتدا از یک منبع مشترک کلون شده باشند) یا میان دو اسنپشات از یک سیستم مهمان استفاده کنید. در نسخههای پیشین libguestfs، از virt-ls(1) استفاده کنید.
غیرفعال کردن یک سرویس systemd
دستور زیر معادل "systemctl mask ..." است. برای غیرفعال کردن سرویس "cloud-init" بهگونهای که در بوت بعدی راهاندازی نشود:
guestfish -a disk.img -i \
ln-sf /dev/null /etc/systemd/system/cloud-init.service
برای غیرفعال کردن tmp-on-tmpfs:
guestfish -a disk.img -i \
ln-sf /dev/null /etc/systemd/system/tmp.mount
یک مشکل در دستورهای بالا این است که اگر نام سرویسی را که قصد ماسک کردن آن را دارید اشتباه وارد کنید، هیچ بازخوردی دریافت نمیکنید. با این حال میتوانید از virt-ls(1) برای فهرست کردن سرویسهای موجود systemd به این صورت استفاده کنید:
virt-ls -a /tmp/fedora-19.img -R /lib/systemd/system
حروف درایو از طریق FUSE
فرض کنید یک سیستم مهمان Windows دارید و میخواهید حروف درایو را به عنوان نقاط اتصال FUSE (/C/...، /D/... و غیره) در دسترس قرار دهید. به جای guestmount(1)، از این اسکریپت Perl استفاده کنید:
#!/usr/bin/perl -w
use strict;
use Sys::Guestfs;
$| = 1;
die "usage: $0 mountpoint disk.img" if @ARGV < 2;
my $mp = shift @ARGV;
my $g = new Sys::Guestfs;
$g->add_drive_opts ($_) foreach @ARGV;
$g->launch;
my @roots = $g->inspect_os;
die "$0: no operating system found" if @roots != 1;
my $root = $roots[0];
die "$0: not Windows" if $g->inspect_get_type ($root) ne "windows";
my %map = $g->inspect_get_drive_mappings ($root);
foreach (keys %map) {
$g->mkmountpoint ("/$_");
eval { $g->mount ($map{$_}, "/$_") };
warn "$@ (ignored)\n" if $@;
}
$g->mount_local ($mp);
print "filesystem ready on $mp\n";
$g->mount_local_run;
$g->shutdown;
میتوانید از این اسکریپت به این صورت استفاده کنید:
$ mkdir /tmp/mnt $ ./drive-letters.pl /tmp/mnt windows7.img filesystem ready on /tmp/mnt
در یک پنجره دیگر:
$ cd /tmp/mnt $ ls C D $ cd C $ ls Documents and Settings PerfLogs ProgramData Program Files [etc] $ cd ../.. $ guestunmount /tmp/mnt
استخراج محتوای خام سیستمفایل از داخل یک ایمیج دیسک یا ماشین مجازی
میتوانید از دستور "download" در guestfish(1) برای استخراج محتوای خام سیستمفایل از هر سیستمفایلی درون یک ایمیج دیسک یا یک ماشین مجازی استفاده کنید (حتی موردی که رمزنگاری شده باشد یا در یک دستگاه LV یا RAID قرار داشته باشد):
guestfish --ro -a disk.img run : download /dev/sda1 sda1.img guestfish --ro -d Guest run : download /dev/vg_guest/lv_root lv.img
برای ارسال خروجی دریافت شده به stdout، نام فایل را با نویسه "-" جایگزین کنید:
guestfish --ro -a disk.img run : download /dev/sda1 - | gzip > sda1.gz
برای فهرست کردن سیستمفایلهای موجود در یک ایمیج دیسک، از virt-filesystems(1) استفاده کنید.
همچنین بخش «Uploading raw filesystem content» را ببینید.
ویرایش پیکربندی grub در یک ماشین مجازی
میتوانید از این دستور برای موارد زیر استفاده کنید:
- تعمیر یک ماشین مجازی که بوت نمیشود.
- تغییر کرنلی که برای بوت کردن ماشین مجازی استفاده میشود.
- تغییر گزینههای خط فرمان کرنل.
از virt-edit(1) برای ویرایش پیکربندی grub استفاده کنید:
virt-edit -d BrokenGuest /boot/grub2/grub.cfg
یا برای کاوش و دستکاریهای عمومی درون یک ماشین مجازی غیرقابل بوت، از virt-rescue(1) به این صورت استفاده کنید:
virt-rescue -d BrokenGuest برای برونبری /home از یک ماشین مجازی (VM) به یک دایرکتوری محلی، از virt-copy-out(1) استفاده کنید:
virt-copy-out -d Guest /home .
نکات:
- نقطه پایانی دستور اشتباه چاپی نیست. این نقطه بدین معنی است که میخواهیم عملیات کپی به دایرکتوری فعلی انجام شود.
- این دستور دایرکتوریای به نام "home" را در دایرکتوری فعلی ایجاد میکند.
اگر مهمان یک سیستم ویندوزی باشد، میتوانید از حروف درایو و بکاسلش استفاده کنید، اما باید پیشوند "win:" را در ابتدای مسیر قرار داده و آن را داخل نقلقول بگذارید تا در برابر تفسیر توسط شل محافظت شود، مانند زیر:
virt-copy-out -d WinGuest 'win:c:\windows\system32\config' .
برای دریافت خروجی به عنوان یک فایل تاربال فشرده، این دستور را اجرا کنید:
virt-tar-out -d Guest /home - | gzip --best > home.tar.gz
اگرچه وسوسهانگیز به نظر میرسد، اما این کار معمولاً روشی قابل اتکا برای تهیه نسخه پشتیبان از یک سیستم مهمانِ در حال اجرا نیست. مدخل مربوطه را در FAQ مشاهده کنید: http://libguestfs.org/FAQ.html#backup
برونبری هسته خارجی و initramfs (initrd)
اگر یک مهمان لینوکسی فاقد بوتلودر باشد یا بوتلودر آن خراب شده باشد، معمولاً میتوانید آن را با استفاده از یک هسته خارجی و initramfs بوت کنید. در این پیکربندی، هایپروایزر مانند یک بوتلودر عمل کرده، هسته را از دیسک میزبان در حافظه مهمان بارگذاری میکند و مستقیماً اجرای هسته را آغاز مینماید.
با این حال، ممکن است این پرسش مطرح شود که چگونه هسته مناسب متناظر با ایمیج دیسک خود را به دست آورید. از نسخه 1.24 libguestfs به بعد، virt-builder(1) میتواند آخرین هسته و initramfs متناظر با آن را برای شما استخراج کند:
mkdir outputdir virt-builder --get-kernel disk.img -o outputdir ls -lh outputdir
یافتن کاربری که بیشترین فضا را مصرف میکند
این اسکریپت ساده یک مهمان لینوکسی را بررسی میکند تا دریابد کدام کاربر بیشترین فضا را در دایرکتوری خانگی خود مصرف کرده است:
#!/bin/sh -
set -e
vm="$1"
dir=/home
eval $(guestfish --ro -d "$vm" -i --listen)
for d in $(guestfish --remote ls "$dir"); do
echo -n "$dir/$d"
echo -ne '\t'
guestfish --remote du "$dir/$d";
done | sort -nr -k 2
guestfish --remote exit
دریافت آدرس DHCP از یک ماشین مجازی
پیوند زیر روشهای گوناگون ممکن را برای به دست آوردن آخرین آدرس DHCP تخصیصیافته به یک ماشین مجازی توضیح میدهد.
در دایرکتوری نمونههای کد منبع libguestfs، آخرین نسخه برنامه virt-dhcp-address.c را خواهید یافت.
دریافت رشته نام محصول سیستمعامل
اسکریپت زیر را در فایلی با نام product-name.sh ذخیره کنید:
#!/bin/sh - set -e eval "$(guestfish --ro -d "$1" --i --listen)" root="$(guestfish --remote inspect-get-roots)" guestfish --remote inspect-get-product-name "$root" guestfish --remote exit
اسکریپت را قابل اجرا کرده و آن را روی یک مهمان مشخص اجرا کنید:
$ product-name.sh fedora-40.img Fedora Linux 40 (Forty)
همچنین میتوانید با استفاده از ابزار خط فرمان "xpath" یا از طریق زبان برنامهنویسی دلخواه خود، یک پرسمان XPath روی XML حاصل از virt-inspector(1) اجرا کنید:
$ virt-inspector -a fedora-40.img > xml $ xpath -e '//product_name' < xml Found 1 nodes in stdin: -- NODE -- <product_name>Fedora Linux 40 (Forty)</product_name>
دریافت هسته بوت پیشفرض برای یک ماشین مجازی لینوکس
پیوند زیر حاوی برنامهای برای چاپ هسته بوت پیشفرض برای یک ماشین مجازی لینوکس است.
این روش از Augeas استفاده میکند و این تکنیک عموماً برای بسیاری از کارهای مختلف قابل استفاده است، از جمله:
- فهرست کردن حسابهای کاربری در سیستم مهمان
- مشاهده مخازنی که سیستم برای استفاده از آنها پیکربندی شده است
- سرورهای NTP که سیستم به آنها متصل میشود
- پیامهای راهاندازی در آخرین باری که سیستم بوت شده است
- فهرست کردن افرادی که اخیراً وارد سیستم شدهاند
http://augeas.net.SH "سیستمهای مهمان قفلشده (Hanging guests)" روشهای گوناگونی برای استفاده از libguestfs جهت پی بردن به این که چرا یک سیستم مهمان قفل شده یا بدون پاسخ است وجود دارد:
- 1.
- خواندن
فایلهای
لاگ با
استفاده از
virt-cat:
virt-cat Guest /var/log/messages | less
- 2.
- خواندن Windows Event Log
(تنها در Windows Vista
یا جدیدتر):
https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content
- 3.
- یافتن
فایلهایی
که اخیراً
در یک سیستم
مهمان
بهروزرسانی
شدهاند:
این کار ممکن است سرنخی از این که چه برنامهای در حال اجراست به شما بدهد.
دامپ هگزادسیمال سکتورها از مهمان (Hex-dumping sectors from the guest)
تهیه دامپ هگزادسیمال از پارتیشن بوت (Master Boot Record / سکتور نخست):
guestfish --ro -a disk.img run : pread-device /dev/sda 0x200 0 | hexdump -C
(0x200 = 512 بایت که اندازه سکتورهای سنتی رایانههای شخصی است)
برای تهیه دامپ هگزادسیمال از پارتیشن Nام، در دستور زیر یک عدد را جایگزین "N" کنید:
guestfish --ro -a disk.img \
run : pread-device /dev/sda 0x200 $((N*0x200)) |
hexdump -C
ویرایش هگزادسیمال سکتورها در مهمان (Hex-editing sectors in the guest)
ویرایش هگزادسیمال پارتیشن بوت (Master Boot Record / سکتور نخست):
guestfish --rw -a disk.img run : hexedit /dev/sda 0x200
نصب بستهها (RPMها، بستههای دبیان) در مهمان (Install packages (RPMs, Debian packages) in a guest)
از نسخه 1.26 نرمافزار libguestfs، دستورهای virt-builder(1)، virt-customize(1) و virt-sysprep(1) دارای گزینه --install برای نصب بستهها در سیستمهای مهمان لینوکس هستند. (اگر یک سیستم مهمان از قبل موجود دارید از virt-customize استفاده کنید، یا اگر میخواهید یک سیستم مهمان را از ابتدا بسازید از virt-builder استفاده نمایید).
برای نمونه:
virt-builder fedora-20 --install emacs
نصب بستهها از یک مخزن جایگزین (Install packages from an alternate repository)
از نسخه 1.26 نرمافزار libguestfs، میتوانید از گزینه --edit در virt-builder(1)، virt-customize(1) یا virt-sysprep(1) برای ویرایش فرادادههای مخزن پیش از نصب بستهها استفاده کنید.
بهعنوان مثال، این دستور بستهها را از مخزن updates-testing در Fedora نصب میکند:
virt-builder fedora-20 \
--edit '/etc/yum.repos.d/fedora-updates-testing.repo:
s/enabled=0/enabled=1/' \
--install emacs
نصب بارگذار بوت SYSLINUX در مهمان (Install SYSLINUX bootloader in a guest)
SYSLINUX یک بارگذار بوت کوچک با پیکربندی آسان برای سیستمهای مهمان لینوکس و ویندوز است. اگر سیستم مهمان شما قابل راهاندازی (bootable) نیست، میتوانید بارگذار بوت SYSLINUX را با استفاده از دستورهای guestfish شامل "syslinux" (برای مهمانهای مبتنی بر FAT) یا "extlinux" (برای مهمانهای مبتنی بر ext2/3/4 و btrfs) نصب کنید.
این راهنما یک سیستم مهمان لینوکس را فرض میکند که در آن /dev/sda1 همان /boot، /boot/vmlinuz هسته سیستم مهمان، و /dev/sda3 پارتیشن ریشه است. برای یک سیستم مهمان ویندوز به یک پارتیشن بوت با فرمت FAT نیاز دارید و باید در عوض از دستور "syslinux" استفاده کنید.
یک فایل پیکربندی syslinux.cfg بسازید. شما باید مستندات SYSLINUX را در http://www.syslinux.org بررسی کنید، اما ساختار آن میتواند چیزی شبیه به این باشد:
DEFAULT linux LABEL linux SAY Booting the kernel KERNEL vmlinuz INITRD initrd APPEND ro root=/dev/sda3
مکان Master Boot Record مربوط به syslinux را مشخص کنید (فایلی با نامی شبیه به /usr/share/syslinux/mbr.bin).
guestfish -a disk.img -i # Upload the master boot record and configuration file: ><fs> upload ..../mbr.bin /boot/mbr.bin ><fs> upload ..../syslinux.cfg /boot/syslinux.cfg # Put the MBR into the boot sector: ><fs> copy-file-to-device /boot/mbr.bin /dev/sda size:440 # Install syslinux on the first partition: ><fs> extlinux /boot # Set the first partition as bootable: ><fs> part-set-bootable /dev/sda 1 true
همچنین ببینید: http://rwmj.wordpress.com/2013/04/04/new-in-libguestfs-use-syslinux-or-extlinux-to-make-bootable-guests/#content
فهرست کردن برنامههای نصبشده در ماشین مجازی (List applications installed in a VM)
دستورهای زیر را در یک فایل به نام list-apps.sh ذخیره کنید:
#!/bin/sh - set -e eval "$(guestfish --ro -d "$1" --i --listen)" root="$(guestfish --remote inspect-get-roots)" guestfish --remote inspect-list-applications "$root" guestfish --remote exit
فایل را قابل اجرا کنید؛ پس از آن میتوانید آن را روی هر ماشین مجازی نامگذاریشدهای اجرا کنید:
# list-apps.sh WinGuest
[0] = {
app_name: Mozilla Firefox (3.6.12)
app_display_name: Mozilla Firefox (3.6.12)
app_epoch: 0
app_version: 3.6.12 (en-GB)
app_release:
app_install_path: C:\Program Files\Mozilla Firefox
app_trans_path:
app_publisher: Mozilla
app_url: http://www.mozilla.com/en-GB
app_source_package:
app_summary:
app_description: Mozilla Firefox
}
[1] = {
app_name: VLC media player
app_display_name: VLC media player 1.1.5
app_epoch: 0
app_version: 1.1.5
app_release:
app_install_path: C:\Program Files\VideoLAN\VLC
app_trans_path:
app_publisher: VideoLAN
app_url: http://www.videolan.org
app_source_package:
app_summary:
app_description:
}
اگر میخواهید اسکریپت را بر روی ایمیجهای دیسک (به جای ماشینهای مجازی libvirt) اجرا کنید، "-d "$1"" را به "-a "$1"" تغییر دهید. همچنین ببینید: virt-inspector(1)..SH "فهرست کردن فایلها و دایرکتوریها در یک VM" از virt-ls(1) استفاده کنید.
فهرست کردن سرویسها در یک VM ویندوز
پیوند زیر حاوی اسکریپتی است که میتوان از آن برای استخراج فهرست سرویسهای یک VM ویندوز و اینکه آیا این سرویسها هنگام بوت اجرا میشوند یا بر اساس تقاضا بارگذاری میشوند، استفاده کرد.
https://rwmj.wordpress.com/2010/12/10/tip-list-services-in-a-windows-guest/#content
کمپشت کردن ایمیج دیسک (sparse)
از virt-sparsify(1) استفاده کنید.
نظارت بر مصرف دیسک در گذر زمان
میتوانید از virt-df(1) برای نظارت بر مصرف دیسک ماشینهای مهمان خود در گذر زمان استفاده کنید. پیوند زیر حاوی یک راهنما است.
http://web.archive.org/web/20130214073726/http://virt-tools.org/learning/advanced-virt-df
خواندن Windows Event Log از ویندوز Vista (یا جدیدتر)
guestfish(1) به همراه ابزارهای شرحدادهشده در پیوند زیر میتواند برای خواندن Windows Event Log از هر ماشین مجازی که Windows Vista یا نسخههای جدیدتر را اجرا میکند، استفاده شود.
https://rwmj.wordpress.com/2011/04/17/decoding-the-windows-event-log-using-guestfish/#content
حذف گذرواژه ریشه (Linux)
با استفاده از گزینه -e در virt-edit(1) میتوانید جایگزینیهای سادهای را روی فایلها انجام دهید. یک کاربرد آن، حذف گذرواژه root از یک ماشین مهمان لینوکس است:
virt-edit -d domname /etc/passwd -e 's/^root:.*?:/root::/' virt-edit -a disk.img /etc/passwd -e 's/^root:.*?:/root::/'
حذف گذرواژه Administrator (ویندوز)
پیوند زیر حاوی روشی برای حذف گذرواژه Administrator از یک VM ویندوز است، یا دقیقتر بگوییم، در ورود بعدی یک خط فرمان (command prompt) در اختیارتان میگذارد که میتوانید از آن برای دور زدن هرگونه تدابیر امنیتی استفاده کنید:
آمادهسازی با Sysprep در یک ماشین مجازی (Windows)
انجام یک «sysprep» صرفاً با استفاده از libguestfs امکانپذیر است، هرچند چندان سرراست نیست. در حال حاضر کدی در پروژه Aeolus Oz وجود دارد که این کار را (با استفاده از libguestfs) انجام میدهد. این احتمال وجود دارد که در آینده این قابلیت را به virt-sysprep(1) اضافه کنیم.
https://github.com/clalancette/oz https://www.redhat.com/archives/virt-tools-list/2011-May/msg00019.html
باز کردن یک دیسک زنده (Live CD)
دیسکهای زنده (Live CD) لینوکس اغلب حاوی چندین لایه از ایمیجهای دیسک هستند که مانند عروسکهای ماتریوشکای روسی تو در تو قرار گرفتهاند. میتوانید از guestfish(1) برای کاوش در این لایههای چندگانه استفاده کنید، همانطور که در راهنمای زیر شرح داده شده است.
https://rwmj.wordpress.com/2009/07/15/unpack-the-russian-doll-of-a-f11-live-cd/#content
بارگذاری و دریافت فایلها
پیوند زیر حاوی نکات عمومی درباره بارگذاری (رونوشت به داخل / copying in) و بارگیری (رونوشت به خارج / copying out) فایلها از ماشینهای مجازی است.
https://rwmj.wordpress.com/2010/12/02/tip-uploading-and-downloading/#content
بارگذاری محتوای خام سیستمفایل
میتوانید از guestfish(1) برای بارگذاری کل سیستمفایلها در یک VM استفاده کنید، حتی درون سیستمفایلی که رمزگذاری شده یا درون یک دستگاه LV یا RAID جای گرفته است:
guestfish --rw -a disk.img run : upload sda1.img /dev/sda1 guestfish --rw -d Guest run : upload lv.img /dev/vg_guest/lv_root
یک مشکل رایج این است که اندازه سیستمفایل برای مقصد مناسب نیست. اگر بیش از اندازه بزرگ باشد، کار چندانی از دست libguestfs برنمیآید - باید سیستمفایل را به گونهای دیگر آماده کنید. اما اگر سیستمفایل نیاز به گسترش در مقصد داشته باشد، میتوانید از guestfish برای تغییر اندازه آن به اندازه مناسب استفاده کنید:
guestfish --rw -d Guest run : \ upload lv.img /dev/vg_guest/lv_root : \ resize2fs /dev/vg_guest/lv_root
(یا در صورتی که سیستمفایل NTFS است از "ntfsresize" استفاده کنید).
استفاده از ابزارهای libguestfs روی ماشینهای مهمان VMware ESX
پیوند زیر نحوه استفاده از libguestfs، guestfish(1) و ابزارهای virt را روی ماشینهای مهمان VMware ESX، با به اشتراکگذاری اولیه VMware VMFS از طریق sshfs توضیح میدهد.
https://rwmj.wordpress.com/2011/05/10/tip-use-libguestfs-on-vmware-esx-guests/#content
همچنین ببینید (SEE ALSO)
guestfs(3), guestfish(1), guestfs-examples(3), guestfs-erlang(3), guestfs-golang(3), guestfs-java(3), guestfs-lua(3), guestfs-ocaml(3), guestfs-perl(3), guestfs-python(3), guestfs-ruby(3), http://libguestfs.org.
نویسندگان (AUTHORS)
Richard W.M. Jones ("rjones at redhat dot com")
کپیرایت و تکثیر (COPYRIGHT)
Copyright (C) 2009-2025 Red Hat Inc.
مجوز (LICENSE)
این صفحه راهنما شامل مثالهایی است که امیدواریم در برنامههایتان از آنها استفاده کنید. این مثالها را میتوان برای هر مقصودی، آزادانه و بدون هیچ محدودیتی کپی، دستکاری و توزیع کرد..SH "گزارش باگها (BUGS)" برای دریافت فهرستی از باگهای 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-14 | libguestfs-1.60.1 |