MAKEDUMPFILE(8) Linux System Administrator's Manual MAKEDUMPFILE(8)

makedumpfile - ایجاد یک فایل دامپ فشرده و کم‌حجم از kdump

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

با استفاده از 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 استفاده کنید.

فشرده‌سازی داده‌های دامپ صفحه به صفحه با استفاده از کتابخانه‌های فشرده‌سازی زیر به ترتیب:
-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
تعیین نوع صفحات غیرضروری برای تحلیل.
صفحات از نوع مشخص‌شده در 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
محدود کردن اندازه فایل خروجی به SIZE بایت. اگر حجم خروجی از SIZE فراتر رود، یک DUMPFILE یا LOGFILE ناقص نوشته خواهد شد.
ایجاد DUMPFILE در قالب ELF.
این گزینه را نمی‌توان همراه با گزینه‌های -c، -l یا -p استفاده کرد، زیرا قالب ELF از داده‌های فشرده پشتیبانی نمی‌کند.
مثال:
# makedumpfile -E -d 31 -x vmlinux /proc/vmcore dumpfile
اجبار به بازنویسی فایل دامپ موجود و فعال‌سازی قابلیت mem-usage برای کار با هسته‌های قدیمی‌تر.
مثال:
# makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
این دستور فایل DUMPFILE را حتی در صورت وجود بازنویسی می‌کند.
# makedumpfile -f --mem-usage /proc/kcore
نسخه‌های هسته کمتر از v4.11 تا زمان اعمال وصله با کامیت بالادستی 464920104bf7 با قابلیت --mem-usage کار نخواهند کرد؛ بنابراین اگر هسته قدیمی خود را وصله کرده‌اید از -f استفاده کنید.
مشخص کردن فایل VMLINUX کرنل اول همراه با اطلاعات اشکال‌زدایی برای تحلیل میزان مصرف حافظه آن.
این گزینه در صورتی لازم است که VMCORE شامل VMCOREINFO نباشد، [-i VMCOREINFO] مشخص نشده باشد، و dump_level برابر ۲ یا بیشتر باشد.
اندازه صفحه کرنل اول و کرنل دوم باید یکسان باشد.
مثال:
# makedumpfile -d 31 -x vmlinux /proc/vmcore dumpfile
مشخص کردن VMCOREINFO به جای VMLINUX برای تحلیل میزان استفاده حافظه کرنل اول.
فایل VMCOREINFO باید از قبل توسط makedumpfile با گزینه -g ساخته شده باشد و حاوی اطلاعات کرنل اول است.
این گزینه در صورتی ضروری است که VMCORE شامل VMCOREINFO نباشد، [-x VMLINUX] تعیین نشده باشد، و dump_level برابر ۲ یا بیشتر باشد.
مثال:
# makedumpfile -d 31 -i vmcoreinfo /proc/vmcore dumpfile
تولید VMCOREINFO از فایل VMLINUX کرنل اول به همراه اطلاعات اشکال‌زدایی.
فایل VMCOREINFO باید روی سیستمی که کرنل اول روی آن در حال اجراست تولید شود. با گزینه -i کاربر می‌تواند VMCOREINFO تولیدشده در سیستم دیگری که همان کرنل اول را اجرا می‌کند مشخص کند. مشخص کردن [-x VMLINUX] الزامی است.
مثال:
# makedumpfile -g vmcoreinfo -x vmlinux
همراه با گزینه -x VMLINUX برای مشخص کردن فایل پیکربندی فیلتر FILTERCONFIGFILE استفاده می‌شود که حاوی دستورات erase برای حذف داده‌های مورد نظر کرنل از vmcore هنگام ساخت DUMPFILE است. برای نحو دستورات به makedumpfile.conf(5) مراجعه کنید.
همراه با گزینه -x VMLINUX برای مشخص کردن فایل ماکروی eppic شامل قوانین فیلتر یا دایرکتوری حاوی فایل‌های ماکروی eppic جهت فیلتر کردن داده‌های مورد نظر کرنل از vmcore هنگام ساخت DUMPFILE استفاده می‌شود. در صورت تعیین دایرکتوری، تمامی ماکروهای eppic موجود در آن پردازش خواهند شد.
ارسال داده‌های دامپ در قالب مسطح (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";
بازآرایی داده‌های دامپ در قالب مسطح از ورودی استاندارد به یک 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"

تقسیم موازی داده‌های دامپ به چندین DUMPFILE. با تعیین فایل‌ها روی دستگاه‌های ذخیره‌سازی مختلف، بار ورودی/خروجی بین دستگاه‌ها توزیع شده و زمان ذخیره داده‌های دامپ کاهش می‌یابد. اندازه هر فایل کوچکتر از حافظه کل سیستم تقسیم بر تعداد فایل‌ها است. این قابلیت تنها از قالب kdump-compressed پشتیبانی می‌کند.
مثال:
# makedumpfile --split -d 31 -x vmlinux /proc/vmcore dumpfile1 dumpfile2
استفاده از چندین ریسه (thread) برای خواندن و فشرده‌سازی موازی داده‌های هر صفحه که زمان ذخیره‌سازی DUMPFILE را کاهش می‌دهد. توجه داشته باشید که اگر تعداد پردازنده‌های در دسترس کمتر از تعداد ریسه‌ها باشد، ممکن است باعث افت شدید کارایی شود. این قابلیت تنها از ایجاد DUMPFILE در قالب kdump-compressed از روی VMCORE در قالب kdump-compressed یا elf پشتیبانی می‌کند.
مثال:
# makedumpfile -d 31 --num-threads 4 /proc/vmcore dumpfile
سرهم کردن مجدد چندین DUMPFILE که با گزینه --split ایجاد شده‌اند در قالب یک DUMPFILE واحد. در مثال زیر dumpfile1 و dumpfile2 در dumpfile تجمیع می‌شوند:
مثال:
# makedumpfile --reassemble dumpfile1 dumpfile2 dumpfile
کش کردن 2^order صفحه در رم هنگام تولید DUMPFILE پیش از نوشتن در خروجی. مقدار پیش‌فرض ۴ است.
مشخص کردن اندازه بافر بر حسب کیلوبایت برای داده‌های بیت‌مپ (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

مشخص کردن اندازه بلوک تفکیک بر حسب کیلوبایت برای تحلیل همراه با --split. اگر --splitblock N تعیین شود، اختلاف اندازه هر یک از فایل‌های دامپ حداکثر N کیلوبایت خواهد بود.
مثال:
# makedumpfile --splitblock-size 1024 -d 31 -x vmlinux --split /proc/vmcore dumpfile1 dumpfile2
مشخص کردن دایرکتوری کاری برای فایل بیت‌مپ موقت. در صورت عدم تعیین، بیت‌مپ روی حافظه ذخیره می‌شود. پردازش فیلتر باید پویش دو مرحله‌ای انجام دهد تا مصرف حافظه تثبیت شود، اما با استفاده از دایرکتوری کاری روی سیستم‌فایل می‌توان از این کار اجتناب کرد؛ بنابراین تعیین این گزینه ممکن است سرعت فیلتر را اندکی افزایش دهد.
مثال:
# makedumpfile --work-dir /tmp -d 31 -x vmlinux /proc/vmcore dumpfile
عدم استفاده از mmap(2) برای خواندن VMCORE حتی در صورت پشتیبانی. به طور کلی خواندن با mmap(2) سریع‌تر است و کاربران عادی نیازی به تعیین این گزینه ندارند. این گزینه عمدتاً برای اشکال‌زدایی کاربرد دارد.
مثال:
# makedumpfile --non-mmap -d 31 -x vmlinux /proc/vmcore dumpfile
مشخص کردن فایل XEN-SYMS به همراه اطلاعات اشکال‌زدایی برای تحلیل میزان مصرف حافظه xen. این گزینه بخش‌های xen و domain-0 را استخراج می‌کند.
مثال:
# makedumpfile -E --xen-syms xen-syms /proc/vmcore dumpfile
مشخص کردن VMCOREINFO به جای XEN-SYMS برای تحلیل میزان استفاده حافظه xen.
فایل VMCOREINFO باید قبلاً توسط makedumpfile با گزینه -g ساخته شده باشد و شامل اطلاعات xen است.
مثال:
# makedumpfile -E --xen-vmcoreinfo VMCOREINFO /proc/vmcore dumpfile
حذف تمام صفحات دامنه کاربری از VMCORE مربوط به Xen kdump، و استخراج بخش‌های xen و domain-0. اگر VMCORE حاوی VMCOREINFO برای Xen باشد، نیازی به تعیین --xen-syms و --xen-vmcoreinfo نیست.
مثال:
# makedumpfile -E -X /proc/vmcore dumpfile
این گزینه تنها برای معماری 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 محدود کنند. انواع پیام‌هایی که با علامت 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
این گزینه هنگام اشکال‌زدایی تبدیل آدرس‌های مجازی مفید است. با تعیین virtual_address، آدرس فیزیکی آن چاپ می‌شود و مقایسه آن با زیردستور "vtop" در ابزار crash اشکال‌زدایی را ساده می‌کند. این گزینه تنها خروجی تبدیل آدرس را چاپ کرده و تأثیری بر ساخت فایل دامپ ندارد.
این گزینه رفتار عادی 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
این گزینه باعث می‌شود --dump-dmesg تنها لاگ‌های dmesg را از زمانی که بافر آخرین بار در هسته دچار وحشت پاک شده است (برای نمونه با "dmesg --clear") استخراج کند.
این گزینه در حال حاضر روی معماری‌های x86_64، arm64، ppc64 و s390x پشتیبانی می‌شود. از این گزینه برای نمایش تعداد صفحات سیستم در کاربردهای مختلف استفاده می‌شود و باید در کرنل اول اجرا شود. به کمک آن، کاربر می‌تواند متوجه شود هنگام تعیین مقادیر مختلف dump_level چه تعداد صفحه قابل ذخیره در دامپ خواهد بود. این گزینه بخش‌های 'System Ram' و 'kernel text' در /proc/kcore را به استثنای محدوده crashkernel تحلیل کرده و تعداد صفحات هر نوع را بر اساس vmcoreinfo محاسبه می‌کند؛ بنابراین در حال حاضر /proc/kcore باید صریحاً مشخص شود.
مثال:
# makedumpfile --mem-usage /proc/kcore
مشخص کردن چندین VMCORE ایجادشده در پیکربندی sadump diskset به همان تعداد فایل‌های VMCORE به ترتیب صعودی از چپ به راست. این فایل‌ها در یک DUMPFILE واحد تجمیع می‌شوند.
مثال:
# makedumpfile -x vmlinux --diskset=vmcore1 --diskset=vmcore2 dumpfile
چاپ پیام‌های اشکال‌زدایی.
نمایش پیام راهنما و وضعیت پشتیبانی از LZO/snappy (فعال/غیرفعال).
نمایش نسخه makedumpfile.
تنها بررسی معتبر بودن یا نبودن پارامترهای خط فرمان و سپس خروج. ترجیحاً بهتر است به عنوان اولین پارامتر داده شود.
عدم نوشتن فایل دامپ خروجی ضمن اجرای سایر عملیات مشخص‌شده توسط گزینه‌ها. این گزینه را نمی‌توان همراه با --dump-dmesg، --reassemble و -g استفاده کرد.
نمایش پیام‌های گزارش (report). این گزینه جایگزینی برای فعال کردن بیت ۴ در سطح ارائه‌شده به --message-level است.

این متغیر محیطی در محیط کرنل اول برای فایل موقت بیت‌مپ حافظه استفاده می‌شود. اگر ماشین شما حافظه زیادی دارد و از یک tmpfs کوچک روی /tmp استفاده می‌کنید، ممکن است makedumpfile به دلیل کمبود حافظه با شکست مواجه شود، زیرا در این حالت فایل موقت بسیار بزرگی می‌سازد. برای جلوگیری از این خطا، باید از گزینه --work-dir برای استفاده از سیستم‌فایل روی حافظه جانبی برای فایل بیت‌مپ استفاده کنید.

دستور makedumpfile با مقادیر زیر خارج می‌شود:

0 : دستور makedumpfile با موفقیت به پایان رسید.
1 : اجرای makedumpfile به دلایلی غیر از موارد زیر با شکست مواجه شد.
2 : شکست به دلیل تفاوت نسخه میان VMLINUX و VMCORE.

نوشته‌شده توسط Masaki Tachibana و Ken'ichi Ohmichi.

crash(8), gdb(1), kexec(8), makedumpfile.conf(5)

20 Apr 2026 makedumpfile v1.7.9