| MAKEDUMPFILE(8) | Linux System Administrator's Manual | MAKEDUMPFILE(8) |
نام (NAME)
makedumpfile - ایجاد یک فایل دامپ فشرده و کمحجم از kdump
خلاصه دستور (SYNOPSIS)
makedumpfile [OPTION] [-x VMLINUX|-i
VMCOREINFO] VMCORE DUMPFILE
makedumpfile -F [OPTION] [-x VMLINUX|-i
VMCOREINFO] VMCORE
makedumpfile [OPTION] -x VMLINUX [--config
FILTERCONFIGFILE] [--eppic EPPICMACRO] VMCORE
DUMPFILE
makedumpfile -R DUMPFILE
makedumpfile --split [OPTION] [-x VMLINUX|-i
VMCOREINFO] VMCORE DUMPFILE1 DUMPFILE2
[DUMPFILE3 ..]
makedumpfile [OPTION] [-x VMLINUX|-i VMCOREINFO]
--num-threads THREADNUM VMCORE DUMPFILE
makedumpfile --reassemble DUMPFILE1 DUMPFILE2
[DUMPFILE3 ..] DUMPFILE
makedumpfile -g VMCOREINFO -x VMLINUX
makedumpfile [OPTION] [--xen-syms
XEN-SYMS|--xen-vmcoreinfo VMCOREINFO] VMCORE
DUMPFILE
makedumpfile --dump-dmesg [--partial-dmesg] [-x VMLINUX|-i
VMCOREINFO] VMCORE LOGFILE
makedumpfile [OPTION] -x VMLINUX --diskset=VMCORE1
--diskset=VMCORE2 [--diskset=VMCORE3 ..] DUMPFILE
makedumpfile -h
makedumpfile -v
توضیحات (DESCRIPTION)
با استفاده از kdump، تصویر حافظه کرنل اول (کرنل دچار وحشت یا "panicked kernel") میتواند در حین اجرای کرنل دوم (معروف به "kdump kernel" یا "capture kernel") به صورت /proc/vmcore ذخیره شود. در این مستند، /proc/vmcore با VMCORE نشان داده شده است. دستور makedumpfile با فشردهسازی دادههای دامپ، یا با حذف صفحاتی که برای تحلیل غیرضروری هستند، یا هر دو، یک DUMPFILE کوچک ایجاد میکند. makedumpfile به اطلاعات اشکالزدایی کرنل اول نیاز دارد تا بتواند با تحلیل نحوه استفاده کرنل اول از حافظه، صفحات غیرضروری را تشخیص دهد. این اطلاعات را میتوان از VMLINUX یا VMCOREINFO به دست آورد.
دستور makedumpfile
میتواند
هنگام کپی
کردن VMCORE به
DUMPFILE، انواع
صفحات زیر
را حذف کند و
کاربر
میتواند
انتخاب
نماید که
کدام نوع از
صفحات حذف
شوند:
- صفحاتی که
با صفر پر
شدهاند
- صفحات
حافظه موقت
(کش) بدون
پرچم خصوصی
(non-private cache)
- صفحات
حافظه موقت
(کش) دارای
پرچم خصوصی
(private cache)
- صفحات
دادههای
فرایندهای
کاربری
- صفحات آزاد
(Free pages)
دستور makedumpfile دو قالب برای DUMPFILE ارائه میدهد (قالب ELF و قالب فشرده kdump یا kdump-compressed). به طور پیشفرض، makedumpfile فایل خروجی را در قالب kdump-compressed تولید میکند. این قالب فقط با ابزار crash قابل خواندن است و به دلیل پشتیبانی از فشردهسازی میتواند بسیار کوچکتر از قالب ELF باشد. قالب ELF توسط هر دو ابزار GDB و crash قابل خواندن است. اگر کاربری مایل به استفاده از GDB باشد، قالب DUMPFILE باید صریحاً به صورت ELF مشخص شود.
جدا از حذف صفحات غیرضروری ذکرشده در بالا، makedumpfile به کاربر امکان میدهد دادههای خاصی از کرنل را فیلتر و حذف کند. فایل پیکربندی فیلتر میتواند برای تعیین نمادهای کرنل/ماژول و اعضای آنها که باید از طریق نحو دستور erase فیلتر شوند به کار رود. دستور makedumpfile فایل پیکربندی فیلتر را خوانده و پس از پردازش دستورات فیلتر، فهرستی از آدرسهای حافظه و اندازههای آنها میسازد. مکانهای حافظهای که باید فیلتر شوند با نویسه 'X' (کد ۵۸ در هگزادسیمال) پر (poison) میشوند. برای قالب فایل به makedumpfile.conf(5) مراجعه کنید.
ماکروهای Eppic نیز میتوانند برای تعیین نمادهای کرنل و اعضای نیازمند فیلتر استفاده شوند. ابزار Eppic معناشناسی زبان C شامل ساختارهای زبانی مانند عبارات شرطی، عملگرهای منطقی و حسابی، توابع و حلقههای تودرتو را برای پیمایش و پاکسازی دادههای کرنل فراهم میکند. گزینه --eppic نیازمند کتابخانه eppic و eppic_makedumpfile.so است. فایل eppic_makedumpfile.so را میتوان از سورس کد makedumpfile ساخت. برای ساخت کتابخانه eppic یعنی libeppic.a و اطلاعات بیشتر درباره نگارش ماکروهای eppic به http://code.google.com/p/eppic مراجعه کنید. نکته: در حال حاضر زبان Rust در این قابلیت پشتیبانی نمیشود.
برای
تحلیل نحوه
استفاده
کرنل اول از
حافظه، makedumpfile
میتواند
به جای VMLINUX به
VMCOREINFO ارجاع
دهد. فایل VMCOREINFO
حاوی
اطلاعات
کرنل اول
(اندازه
ساختارها،
آفست
فیلدها و
غیره) است و
به اندازه
کافی کوچک
است که در initrd
کرنل دوم
گنجانده
شود.
اگر کرنل
دوم روی initrd
خود بدون
سوار کردن
سیستمفایل
ریشه اجرا
شود، makedumpfile
نمیتواند
به VMLINUX ارجاع
دهد زیرا initrd
کرنل دوم
نمیتواند
فایل بزرگی
مانند VMLINUX را
در خود جای
دهد. برای حل
این مشکل،
makedumpfile فایل VMCOREINFO
را از قبل
میسازد و
در حین
اجرای کرنل
دوم به جای
VMLINUX به VMCOREINFO
رجوع
میکند.
از زمان
لینوکس
نسخه 2.6.24،
فایل VMCORE خود
حاوی VMCOREINFO
بوده است و
کاربر
نیازی به
مشخص کردن
گزینههای -x
یا -i ندارد.
اگر کرنل دوم روی initrd خود بدون سوار کردن هیچ سیستمفایلی اجرا شود، کاربر باید دادههای دامپ را به یک میزبان راه دور انتقال دهد. برای انتقال دادههای دامپ از طریق SSH، دستور makedumpfile دادهها را در قالب واسط (قالب مسطح یا flattened format) به خروجی استاندارد ارسال میکند. با هدایت دادههای خروجی به SSH، کاربر میتواند دادههای دامپ را به میزبان دیگر منتقل کند. توجه داشته باشید که ابزارهای تحلیل (ابزار crash قبل از نسخه 5.1.2 یا GDB) نمیتوانند قالب مسطح را مستقیماً بخوانند، بنابراین در میزبان راه دور دادههای دریافتشده در قالب مسطح باید توسط makedumpfile (یا makedumpfile-R.pl) به قالب قابل خواندن DUMPFILE مرتبسازی مجدد شوند.
دستور makedumpfile
میتواند
به جای VMCORE،
یک DUMPFILE در
قالب kdump-compressed را
خوانده و
مجدداً آن
را فیلتر
کند. این
ویژگی در
شرایطی
مفید است که
کاربران
نیاز دارند
حجم فایل DUMPFILE
را برای
ارسال از
طریق ftp/scp یا
غیره کاهش
دهند (اگر
تمام انواع
صفحاتی که
با یک dump_level
جدید مشخص
شدهاند از
قبل از DUMPFILE
اصلی حذف
شده باشند،
DUMPFILE جدید
تفاوتی با
نسخه اصلی
نخواهد
داشت).
برای
نمونه، makedumpfile
میتواند
یک DUMPFILE با dump_level
برابر ۳۱ را
از فایلی با
dump_level برابر ۳
بسازد:
مثال:
# makedumpfile -c -d 3 /proc/vmcore dumpfile.1
# makedumpfile -c -d 31 dumpfile.1 dumpfile.2
دستور makedumpfile میتواند VMCORE را در سه نوع از قالبهای sadump بخواند: قالب تکپارتیشن، قالب مجموعهدیسک (diskset) و قالب پشتیبان رسانه؛ و میتواند هر یک از آنها را با اعمال فیلتر و فشردهسازی به قالب kdump-compressed تبدیل نماید. توجه داشته باشید که برای VMCORE ایجادشده توسط sadump، همیشه باید VMLINUX را با گزینه -x ارسال کنید. همچنین، برای ارسال چندین VMCORE ایجادشده در پیکربندی مجموعهدیسک، باید از گزینه --diskset استفاده کنید.
گزینهها (OPTIONS)
- -c,-l,-p,-z
- فشردهسازی
دادههای
دامپ صفحه
به صفحه با
استفاده از
کتابخانههای
فشردهسازی
زیر به
ترتیب:
-c : zlib
-l : lzo
-p : snappy
-z : zstd
(گزینههای -l، -p و -z هنگام ساخت makedumpfile به ترتیب نیازمند مقادیر USELZO=on، USESNAPPY=on و USEZSTD=on هستند).
کاربر نمیتواند این گزینه را همراه با گزینه -E استفاده کند، زیرا قالب ELF از دادههای فشرده پشتیبانی نمیکند.
مثال:
# makedumpfile -c -d 31 -x vmlinux /proc/vmcore dumpfile - -d dump_level
- تعیین نوع
صفحات
غیرضروری
برای تحلیل.
صفحات از نوع مشخصشده در DUMPFILE کپی نمیشوند. انواع صفحاتی که در جدول زیر علامت خوردهاند مستثنی میشوند. کاربر میتواند چندین نوع صفحه را با تعیین مجموع هر یک از انواع برای dump_level مشخص کند. حداکثر مقدار dump_level برابر ۳۱ است. توجه داشته باشید که dump_level برای فیلتر دامپ Xen روی ماشینهایی غیر از x86_64 برابر ۰ یا ۱ است. در ماشین x86_64، حتی سطوح ۲ یا بزرگتر نیز در صورتی که vmlinux مربوط به domain-0 را با گزینه -x مشخص کنید مؤثر خواهند بود و در این صورت صفحات فقط از domain-0 حذف میشوند.
اگر چندین dump_level را با جداکننده ',' مشخص کنید، در صورتی که اندازه فایل دامپ از حد مشخصشده با '-L' فراتر رود یا خطای "No space on device" رخ دهد، makedumpfile با استفاده از dump_level بعدی تلاش مجدد میکند. برای نمونه، اگر dump_level برابر "11,31" باشد و makedumpfile با dump_level 11 با شکست مواجه شود، مجدداً با dump_level 31 تلاش میکند.
مثال:
# makedumpfile -d 11 -x vmlinux /proc/vmcore dumpfile
# makedumpfile -d 11,31 -x vmlinux /proc/vmcore dumpfile
سطوح پایه:
مقدار dump_level از پنج بیت تشکیل شده است، بنابراین پنج سطح پایه برای تعیین نوع صفحات غیرضروری وجود دارد:
1 : حذف صفحات پرشده با صفر.
2 : حذف صفحات کش غیرخصوصی (non-private).
4 : حذف تمامی صفحات کش.
8 : حذف صفحات دادههای فرایندهای کاربر.
16 : حذف صفحات آزاد (free pages).جدول تمام ترکیبهای این بیتها:
| |non- | | | dump | zero |private|private| user | free level | page |cache |cache | data | page -------+------+-------+-------+------+------ 0 | | | | | 1 | X | | | | 2 | | X | | | 3 | X | X | | | 4 | | X | X | | 5 | X | X | X | | 6 | | X | X | | 7 | X | X | X | | 8 | | | | X | 9 | X | | | X | 10 | | X | | X | 11 | X | X | | X | 12 | | X | X | X | 13 | X | X | X | X | 14 | | X | X | X | 15 | X | X | X | X | 16 | | | | | X 17 | X | | | | X 18 | | X | | | X 19 | X | X | | | X 20 | | X | X | | X 21 | X | X | X | | X 22 | | X | X | | X 23 | X | X | X | | X 24 | | | | X | X 25 | X | | | X | X 26 | | X | | X | X 27 | X | X | | X | X 28 | | X | X | X | X 29 | X | X | X | X | X 30 | | X | X | X | X 31 | X | X | X | X | X - -L SIZE
- محدود کردن اندازه فایل خروجی به SIZE بایت. اگر حجم خروجی از SIZE فراتر رود، یک DUMPFILE یا LOGFILE ناقص نوشته خواهد شد.
- -E
- ایجاد DUMPFILE در
قالب ELF.
این گزینه را نمیتوان همراه با گزینههای -c، -l یا -p استفاده کرد، زیرا قالب ELF از دادههای فشرده پشتیبانی نمیکند.
مثال:
# makedumpfile -E -d 31 -x vmlinux /proc/vmcore dumpfile - -f
- اجبار به
بازنویسی
فایل دامپ
موجود و
فعالسازی
قابلیت mem-usage
برای کار با
هستههای
قدیمیتر.
مثال:
# makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
این دستور فایل DUMPFILE را حتی در صورت وجود بازنویسی میکند.
# makedumpfile -f --mem-usage /proc/kcore
نسخههای هسته کمتر از v4.11 تا زمان اعمال وصله با کامیت بالادستی 464920104bf7 با قابلیت --mem-usage کار نخواهند کرد؛ بنابراین اگر هسته قدیمی خود را وصله کردهاید از -f استفاده کنید. - -x VMLINUX
- مشخص کردن
فایل VMLINUX
کرنل اول
همراه با
اطلاعات
اشکالزدایی
برای تحلیل
میزان مصرف
حافظه آن.
این گزینه در صورتی لازم است که VMCORE شامل VMCOREINFO نباشد، [-i VMCOREINFO] مشخص نشده باشد، و dump_level برابر ۲ یا بیشتر باشد.
اندازه صفحه کرنل اول و کرنل دوم باید یکسان باشد.
مثال:
# makedumpfile -d 31 -x vmlinux /proc/vmcore dumpfile - -i VMCOREINFO
- مشخص کردن
VMCOREINFO به جای VMLINUX
برای تحلیل
میزان
استفاده
حافظه کرنل
اول.
فایل VMCOREINFO باید از قبل توسط makedumpfile با گزینه -g ساخته شده باشد و حاوی اطلاعات کرنل اول است.
این گزینه در صورتی ضروری است که VMCORE شامل VMCOREINFO نباشد، [-x VMLINUX] تعیین نشده باشد، و dump_level برابر ۲ یا بیشتر باشد.
مثال:
# makedumpfile -d 31 -i vmcoreinfo /proc/vmcore dumpfile - -g VMCOREINFO
- تولید VMCOREINFO
از فایل VMLINUX
کرنل اول به
همراه
اطلاعات
اشکالزدایی.
فایل VMCOREINFO باید روی سیستمی که کرنل اول روی آن در حال اجراست تولید شود. با گزینه -i کاربر میتواند VMCOREINFO تولیدشده در سیستم دیگری که همان کرنل اول را اجرا میکند مشخص کند. مشخص کردن [-x VMLINUX] الزامی است.
مثال:
# makedumpfile -g vmcoreinfo -x vmlinux - --config FILTERCONFIGFILE
- همراه با گزینه -x VMLINUX برای مشخص کردن فایل پیکربندی فیلتر FILTERCONFIGFILE استفاده میشود که حاوی دستورات erase برای حذف دادههای مورد نظر کرنل از vmcore هنگام ساخت DUMPFILE است. برای نحو دستورات به makedumpfile.conf(5) مراجعه کنید.
- --eppic EPPICMACRO
- همراه با گزینه -x VMLINUX برای مشخص کردن فایل ماکروی eppic شامل قوانین فیلتر یا دایرکتوری حاوی فایلهای ماکروی eppic جهت فیلتر کردن دادههای مورد نظر کرنل از vmcore هنگام ساخت DUMPFILE استفاده میشود. در صورت تعیین دایرکتوری، تمامی ماکروهای eppic موجود در آن پردازش خواهند شد.
- -F
- ارسال
دادههای
دامپ در
قالب مسطح
(flattened format) به
خروجی
استاندارد
برای
انتقال
دادهها از
طریق SSH.
ابزارهای تحلیل (مانند crash قبل از نسخه 5.1.2 یا GDB) نمیتوانند قالب مسطح را مستقیماً بخوانند. برای تحلیل، دادههای دامپ مسطح باید با گزینه -R به یک DUMPFILE معمولی (قابل خواندن با ابزارهای تحلیل) بازآرایی شوند. این که چه گزینهای همراه با گزینه -F مشخص شده باشد، قالب فایل بازآراییشده نهایی را تعیین میکند. به عبارت دیگر، هنگام بازآرایی دادهها با گزینه -R امکان تعیین قالب فایل وجود ندارد. اگر گزینه -E همراه با -F مشخص شود، قالب فایل حاصله ELF خواهد بود؛ در غیر این صورت، در قالب kdump-compressed خواهد بود. با استفاده از گزینه -F تمامی پیامها به خروجی خطای استاندارد ارسال میشوند زیرا خروجی استاندارد برای دادههای دامپ به کار میرود.
مثال:
# makedumpfile -F -c -d 31 -x vmlinux /proc/vmcore \
| ssh user@host "cat > dumpfile.tmp"
# makedumpfile -F -c -d 31 -x vmlinux /proc/vmcore \
| ssh user@host "makedumpfile -R dumpfile"
# makedumpfile -F -E -d 31 -i vmcoreinfo /proc/vmcore \
| ssh user@host "makedumpfile -R dumpfile"
# makedumpfile -F -E --xen-vmcoreinfo VMCOREINFO /proc/vmcore \
| ssh user@host "makedumpfile -R dumpfile" - -R
- بازآرایی
دادههای
دامپ در
قالب مسطح
از ورودی
استاندارد
به یک DUMPFILE
عادی (قابل
خواندن با
ابزارهای
تحلیل).
مثال:
# makedumpfile -R dumpfile < dumpfile.tmp
# makedumpfile -F -d 31 -x vmlinux /proc/vmcore \
| ssh user@host "makedumpfile -R dumpfile"به جای گزینه -R، اسکریپت پرل "makedumpfile-R.pl" نیز میتواند دادههای قالب مسطح را به یک DUMPFILE عادی تبدیل کند. این اسکریپت پرل وابسته به معماری نیست و اکثر سیستمها دارای دستور perl هستند. حتی اگر در میزبان راه دور makedumpfile وجود نداشته باشد، با اجرای این اسکریپت میتوان دادههای دامپ را بازآرایی کرد.
مثال:
# makedumpfile -F -d 31 -x vmlinux /proc/vmcore \
| ssh user@host "makedumpfile-R.pl dumpfile" - --split
- تقسیم
موازی
دادههای
دامپ به
چندین DUMPFILE. با
تعیین
فایلها
روی
دستگاههای
ذخیرهسازی
مختلف، بار
ورودی/خروجی
بین
دستگاهها
توزیع شده و
زمان ذخیره
دادههای
دامپ کاهش
مییابد.
اندازه هر
فایل
کوچکتر از
حافظه کل
سیستم
تقسیم بر
تعداد
فایلها
است. این
قابلیت
تنها از
قالب kdump-compressed
پشتیبانی
میکند.
مثال:
# makedumpfile --split -d 31 -x vmlinux /proc/vmcore dumpfile1 dumpfile2 - --num-threads THREADNUM
- استفاده از
چندین ریسه
(thread) برای
خواندن و
فشردهسازی
موازی
دادههای
هر صفحه که
زمان
ذخیرهسازی
DUMPFILE را کاهش
میدهد.
توجه داشته
باشید که
اگر تعداد
پردازندههای
در دسترس
کمتر از
تعداد
ریسهها
باشد، ممکن
است باعث
افت شدید
کارایی شود.
این قابلیت
تنها از
ایجاد DUMPFILE در
قالب kdump-compressed از
روی VMCORE در
قالب kdump-compressed یا elf
پشتیبانی
میکند.
مثال:
# makedumpfile -d 31 --num-threads 4 /proc/vmcore dumpfile - --reassemble
- سرهم کردن
مجدد چندین
DUMPFILE که با
گزینه --split
ایجاد
شدهاند در
قالب یک DUMPFILE
واحد. در
مثال زیر dumpfile1
و dumpfile2 در dumpfile
تجمیع
میشوند:
مثال:
# makedumpfile --reassemble dumpfile1 dumpfile2 dumpfile - -b <order>
- کش کردن 2^order صفحه در رم هنگام تولید DUMPFILE پیش از نوشتن در خروجی. مقدار پیشفرض ۴ است.
- --cyclic-buffer buffer_size
- مشخص کردن
اندازه
بافر بر حسب
کیلوبایت
برای
دادههای
بیتمپ (bitmap).
پردازش
فیلتر به
چندین چرخه
تقسیم
میشود تا
میزان مصرف
حافظه ثابت
بماند؛
تعداد
چرخهها به
صورت زیر
محاسبه
میشود:
num_of_cycles = system_memory / (buffer_size * 1024 * bit_per_bytes * page_size )
هرچه تعداد چرخهها کمتر باشد، سرعت کار بالاتر خواهد بود. به طور پیشفرض، buffer_size بر اساس اندازه حافظه سیستم محاسبه میشود، بنابراین کاربران عادی نیازی به تعیین این گزینه ندارند.
مثال:
# makedumpfile --cyclic-buffer 1024 -d 31 -x vmlinux /proc/vmcore dumpfile - --splitblock-size splitblock_size
- مشخص کردن
اندازه
بلوک تفکیک
بر حسب
کیلوبایت
برای تحلیل
همراه با --split.
اگر --splitblock N
تعیین شود،
اختلاف
اندازه هر
یک از
فایلهای
دامپ
حداکثر N
کیلوبایت
خواهد بود.
مثال:
# makedumpfile --splitblock-size 1024 -d 31 -x vmlinux --split /proc/vmcore dumpfile1 dumpfile2 - --work-dir
- مشخص کردن
دایرکتوری
کاری برای
فایل
بیتمپ
موقت. در
صورت عدم
تعیین،
بیتمپ روی
حافظه
ذخیره
میشود.
پردازش
فیلتر باید
پویش دو
مرحلهای
انجام دهد
تا مصرف
حافظه
تثبیت شود،
اما با
استفاده از
دایرکتوری
کاری روی
سیستمفایل
میتوان از
این کار
اجتناب
کرد؛
بنابراین
تعیین این
گزینه ممکن
است سرعت
فیلتر را
اندکی
افزایش دهد.
مثال:
# makedumpfile --work-dir /tmp -d 31 -x vmlinux /proc/vmcore dumpfile - --non-mmap
- عدم
استفاده از
mmap(2) برای
خواندن VMCORE
حتی در صورت
پشتیبانی.
به طور کلی
خواندن با
mmap(2) سریعتر
است و
کاربران
عادی نیازی
به تعیین
این گزینه
ندارند. این
گزینه
عمدتاً
برای
اشکالزدایی
کاربرد
دارد.
مثال:
# makedumpfile --non-mmap -d 31 -x vmlinux /proc/vmcore dumpfile - --xen-syms XEN-SYMS
- مشخص کردن
فایل XEN-SYMS به
همراه
اطلاعات
اشکالزدایی
برای تحلیل
میزان مصرف
حافظه xen. این
گزینه
بخشهای xen و
domain-0 را
استخراج
میکند.
مثال:
# makedumpfile -E --xen-syms xen-syms /proc/vmcore dumpfile - --xen-vmcoreinfo VMCOREINFO
- مشخص کردن
VMCOREINFO به جای
XEN-SYMS برای
تحلیل
میزان
استفاده
حافظه xen.
فایل VMCOREINFO باید قبلاً توسط makedumpfile با گزینه -g ساخته شده باشد و شامل اطلاعات xen است.
مثال:
# makedumpfile -E --xen-vmcoreinfo VMCOREINFO /proc/vmcore dumpfile - -X
- حذف تمام
صفحات
دامنه
کاربری از
VMCORE مربوط به
Xen kdump، و
استخراج
بخشهای xen و
domain-0. اگر VMCORE
حاوی VMCOREINFO
برای Xen
باشد،
نیازی به
تعیین --xen-syms و
--xen-vmcoreinfo نیست.
مثال:
# makedumpfile -E -X /proc/vmcore dumpfile - --xen_phys_start xen_phys_start_address
- این گزینه
تنها برای
معماری x86_64
است. در
صورتی که
کد/دادههای
xen
جابجاییپذیر
(relocatable) باشد و VMCORE
حاوی xen_phys_start_address
در CRASHINFO
نباشد، این
آدرس را
مشخص کنید.
این آدرس را
میتوان از
خط "Hypervisor code and data" در
/proc/iomem به دست
آورد. برای
نمونه، در
صورتی که /proc/iomem
به صورت زیر
باشد آدرس
0xcee00000 را تعیین
کنید:
------------------------------------------------------- # cat /proc/iomem ... cee00000-cfd99999 : Hypervisor code and data ... -------------------------------------------------------
مثال:
# makedumpfile -E -X --xen_phys_start 0xcee00000 /proc/vmcore dumpfile - --message-level message_level
- تعیین
انواع
پیامها.
کاربران میتوانند خروجیهای چاپشده را با تعیین message_level محدود کنند. انواع پیامهایی که با علامت X در جدول زیر مشخص شدهاند چاپ میشوند. برای نمونه تعیین عدد ۷ به معنای چاپ نشانگر پیشرفت، پیامهای عمومی و پیامهای خطا است که مقدار پیشفرض میباشد. حداکثر مقدار message_level برابر ۳۱ است.message | progress | common | error | debug | report level | indicator| message | message | message | message ---------+----------+---------+---------+---------+--------- 0 | | | | | 1 | X | | | | 2 | | X | | | 3 | X | X | | | 4 | | | X | | 5 | X | | X | | 6 | | X | X | | * 7 | X | X | X | | 8 | | | | X | 9 | X | | | X | 10 | | X | | X | 11 | X | X | | X | 12 | | | X | X | 13 | X | | X | X | 14 | | X | X | X | 15 | X | X | X | X | 16 | | | | | X 17 | X | | | | X 18 | | X | | | X 19 | X | X | | | X 20 | | | X | | X 21 | X | | X | | X 22 | | X | X | | X 23 | X | X | X | | X 24 | | | | X | X 25 | X | | | X | X 26 | | X | | X | X 27 | X | X | | X | X 28 | | | X | X | X 29 | X | | X | X | X 30 | | X | X | X | X 31 | X | X | X | X | X - --vtop virtual_address
- این گزینه هنگام اشکالزدایی تبدیل آدرسهای مجازی مفید است. با تعیین virtual_address، آدرس فیزیکی آن چاپ میشود و مقایسه آن با زیردستور "vtop" در ابزار crash اشکالزدایی را ساده میکند. این گزینه تنها خروجی تبدیل آدرس را چاپ کرده و تأثیری بر ساخت فایل دامپ ندارد.
- --dump-dmesg
- این گزینه
رفتار عادی
makedumpfile را
بازنویسی
میکند. به
جای
فشردهسازی
و فیلتر
کردن VMCORE،
صرفاً
گزارش dmesg را
از VMCORE
استخراج
کرده و در
فایل
مشخصشده
LOGFILE
مینویسد.
اگر VMCORE حاوی
VMCOREINFO برای dmesg
نباشد،
تعیین [-x VMLINUX]
یا [-i VMCOREINFO]
ضروری است.
مثال:
# makedumpfile --dump-dmesg /proc/vmcore dmesgfile
# makedumpfile --dump-dmesg -x vmlinux /proc/vmcore dmesgfile - --partial-dmesg
- این گزینه باعث میشود --dump-dmesg تنها لاگهای dmesg را از زمانی که بافر آخرین بار در هسته دچار وحشت پاک شده است (برای نمونه با "dmesg --clear") استخراج کند.
- --mem-usage
- این گزینه
در حال حاضر
روی
معماریهای
x86_64، arm64، ppc64 و s390x
پشتیبانی
میشود. از
این گزینه
برای نمایش
تعداد
صفحات
سیستم در
کاربردهای
مختلف
استفاده
میشود و
باید در
کرنل اول
اجرا شود.
به کمک آن،
کاربر
میتواند
متوجه شود
هنگام
تعیین
مقادیر
مختلف dump_level چه
تعداد صفحه
قابل ذخیره
در دامپ
خواهد بود.
این گزینه
بخشهای 'System Ram'
و 'kernel text' در /proc/kcore را
به استثنای
محدوده crashkernel
تحلیل کرده
و تعداد
صفحات هر
نوع را بر
اساس vmcoreinfo
محاسبه
میکند؛
بنابراین
در حال حاضر
/proc/kcore باید
صریحاً
مشخص شود.
مثال:
# makedumpfile --mem-usage /proc/kcore - --diskset=VMCORE
- مشخص کردن
چندین VMCORE
ایجادشده
در
پیکربندی sadump
diskset به همان
تعداد
فایلهای
VMCORE به ترتیب
صعودی از چپ
به راست.
این
فایلها در
یک DUMPFILE واحد
تجمیع
میشوند.
مثال:
# makedumpfile -x vmlinux --diskset=vmcore1 --diskset=vmcore2 dumpfile - -D
- چاپ پیامهای اشکالزدایی.
- -h (--help)
- نمایش پیام راهنما و وضعیت پشتیبانی از LZO/snappy (فعال/غیرفعال).
- -v
- نمایش نسخه makedumpfile.
- --check-params
- تنها بررسی معتبر بودن یا نبودن پارامترهای خط فرمان و سپس خروج. ترجیحاً بهتر است به عنوان اولین پارامتر داده شود.
- --dry-run
- عدم نوشتن فایل دامپ خروجی ضمن اجرای سایر عملیات مشخصشده توسط گزینهها. این گزینه را نمیتوان همراه با --dump-dmesg، --reassemble و -g استفاده کرد.
- --show-stats
- نمایش پیامهای گزارش (report). این گزینه جایگزینی برای فعال کردن بیت ۴ در سطح ارائهشده به --message-level است.
متغیرهای محیطی (ENVIRONMENT VARIABLES)
- TMPDIR
- این متغیر محیطی در محیط کرنل اول برای فایل موقت بیتمپ حافظه استفاده میشود. اگر ماشین شما حافظه زیادی دارد و از یک tmpfs کوچک روی /tmp استفاده میکنید، ممکن است makedumpfile به دلیل کمبود حافظه با شکست مواجه شود، زیرا در این حالت فایل موقت بسیار بزرگی میسازد. برای جلوگیری از این خطا، باید از گزینه --work-dir برای استفاده از سیستمفایل روی حافظه جانبی برای فایل بیتمپ استفاده کنید.
عیبیابی (DIAGNOSTICS)
دستور makedumpfile با مقادیر زیر خارج میشود:
- 0 : دستور makedumpfile با موفقیت به پایان رسید.
- 1 : اجرای makedumpfile به دلایلی غیر از موارد زیر با شکست مواجه شد.
- 2 : شکست به دلیل تفاوت نسخه میان VMLINUX و VMCORE.
نویسندگان (AUTHORS)
نوشتهشده توسط Masaki Tachibana و Ken'ichi Ohmichi.
همچنین ببینید (SEE ALSO)
crash(8), gdb(1), kexec(8), makedumpfile.conf(5)
| 20 Apr 2026 | makedumpfile v1.7.9 |