.TH MAKEDUMPFILE 8 "20 Apr 2026" "makedumpfile v1.7.9" "Linux System Administrator's Manual" .SH "نام (NAME)" makedumpfile \- ایجاد یک فایل دامپ فشرده و کم‌حجم از kdump .SH "خلاصه دستور (SYNOPSIS)" \fBmakedumpfile\fR [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-F [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR .br \fBmakedumpfile\fR [\fIOPTION\fR] \-x \fIVMLINUX\fR [\-\-config \fIFILTERCONFIGFILE\fR] [\-\-eppic \fIEPPICMACRO\fR] \fIVMCORE\fR \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-R \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-\-split [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR \fIDUMPFILE1\fR \fIDUMPFILE2\fR [\fIDUMPFILE3\fR ..] .br \fBmakedumpfile\fR [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \-\-num\-threads \fITHREADNUM\fR \fIVMCORE\fR \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-\-reassemble \fIDUMPFILE1\fR \fIDUMPFILE2\fR [\fIDUMPFILE3\fR ..] \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-g \fIVMCOREINFO\fR \-x \fIVMLINUX\fR .br \fBmakedumpfile\fR [\fIOPTION\fR] [\-\-xen-syms \fIXEN-SYMS\fR|\-\-xen-vmcoreinfo \fIVMCOREINFO\fR] \fIVMCORE\fR \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-\-dump-dmesg [\-\-partial-dmesg] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR \fILOGFILE\fR .br \fBmakedumpfile\fR [\fIOPTION\fR] \-x \fIVMLINUX\fR \-\-diskset=\fIVMCORE1\fR \-\-diskset=\fIVMCORE2\fR [\-\-diskset=\fIVMCORE3\fR ..] \fIDUMPFILE\fR .br .B makedumpfile \-h .br .B makedumpfile \-v .br .SH "توضیحات (DESCRIPTION)" .PP با استفاده از kdump، تصویر حافظه کرنل اول (کرنل دچار وحشت یا "panicked kernel") می‌تواند در حین اجرای کرنل دوم (معروف به "kdump kernel" یا "capture kernel") به صورت /proc/vmcore ذخیره شود. در این مستند، /proc/vmcore با \fIVMCORE\fR نشان داده شده است. دستور makedumpfile با فشرده‌سازی داده‌های دامپ، یا با حذف صفحاتی که برای تحلیل غیرضروری هستند، یا هر دو، یک \fIDUMPFILE\fR کوچک ایجاد می‌کند. makedumpfile به اطلاعات اشکال‌زدایی کرنل اول نیاز دارد تا بتواند با تحلیل نحوه استفاده کرنل اول از حافظه، صفحات غیرضروری را تشخیص دهد. این اطلاعات را می‌توان از \fIVMLINUX\fR یا \fIVMCOREINFO\fR به دست آورد. .PP دستور makedumpfile می‌تواند هنگام کپی کردن \fIVMCORE\fR به \fIDUMPFILE\fR، انواع صفحات زیر را حذف کند و کاربر می‌تواند انتخاب نماید که کدام نوع از صفحات حذف شوند: .br .B \- صفحاتی که با صفر پر شده‌اند .br .B \- صفحات حافظه موقت (کش) بدون پرچم خصوصی (non-private cache) .br .B \- صفحات حافظه موقت (کش) دارای پرچم خصوصی (private cache) .br .B \- صفحات داده‌های فرایندهای کاربری .br .B \- صفحات آزاد (Free pages) .PP دستور makedumpfile دو قالب برای \fIDUMPFILE\fR ارائه می‌دهد (قالب ELF و قالب فشرده kdump یا kdump\-compressed). به طور پیش‌فرض، makedumpfile فایل خروجی را در قالب kdump\-compressed تولید می‌کند. این قالب فقط با ابزار crash قابل خواندن است و به دلیل پشتیبانی از فشرده‌سازی می‌تواند بسیار کوچکتر از قالب ELF باشد. قالب ELF توسط هر دو ابزار GDB و crash قابل خواندن است. اگر کاربری مایل به استفاده از GDB باشد، قالب \fIDUMPFILE\fR باید صریحاً به صورت ELF مشخص شود. .PP جدا از حذف صفحات غیرضروری ذکرشده در بالا، makedumpfile به کاربر امکان می‌دهد داده‌های خاصی از کرنل را فیلتر و حذف کند. فایل پیکربندی فیلتر می‌تواند برای تعیین نمادهای کرنل/ماژول و اعضای آن‌ها که باید از طریق نحو دستور erase فیلتر شوند به کار رود. دستور makedumpfile فایل پیکربندی فیلتر را خوانده و پس از پردازش دستورات فیلتر، فهرستی از آدرس‌های حافظه و اندازه‌های آن‌ها می‌سازد. مکان‌های حافظه‌ای که باید فیلتر شوند با نویسه 'X' (کد ۵۸ در هگزادسیمال) پر (poison) می‌شوند. برای قالب فایل به \fBmakedumpfile.conf(5)\fR مراجعه کنید. .PP ماکروهای Eppic نیز می‌توانند برای تعیین نمادهای کرنل و اعضای نیازمند فیلتر استفاده شوند. ابزار Eppic معناشناسی زبان C شامل ساختارهای زبانی مانند عبارات شرطی، عملگرهای منطقی و حسابی، توابع و حلقه‌های تودرتو را برای پیمایش و پاک‌سازی داده‌های کرنل فراهم می‌کند. گزینه --eppic نیازمند کتابخانه eppic و \fBeppic_makedumpfile.so\fR است. فایل \fBeppic_makedumpfile.so\fR را می‌توان از سورس کد makedumpfile ساخت. برای ساخت کتابخانه eppic یعنی \fBlibeppic.a\fR و اطلاعات بیشتر درباره نگارش ماکروهای eppic به مراجعه کنید. نکته: در حال حاضر زبان Rust در این قابلیت پشتیبانی نمی‌شود. .PP برای تحلیل نحوه استفاده کرنل اول از حافظه، makedumpfile می‌تواند به جای \fIVMLINUX\fR به \fIVMCOREINFO\fR ارجاع دهد. فایل \fIVMCOREINFO\fR حاوی اطلاعات کرنل اول (اندازه ساختارها، آفست فیلدها و غیره) است و به اندازه کافی کوچک است که در initrd کرنل دوم گنجانده شود. .br اگر کرنل دوم روی initrd خود بدون سوار کردن سیستم‌فایل ریشه اجرا شود، makedumpfile نمی‌تواند به \fIVMLINUX\fR ارجاع دهد زیرا initrd کرنل دوم نمی‌تواند فایل بزرگی مانند \fIVMLINUX\fR را در خود جای دهد. برای حل این مشکل، makedumpfile فایل \fIVMCOREINFO\fR را از قبل می‌سازد و در حین اجرای کرنل دوم به جای \fIVMLINUX\fR به \fIVMCOREINFO\fR رجوع می‌کند. .br از زمان لینوکس نسخه 2.6.24، فایل \fIVMCORE\fR خود حاوی \fIVMCOREINFO\fR بوده است و کاربر نیازی به مشخص کردن گزینه‌های -x یا -i ندارد. .PP اگر کرنل دوم روی initrd خود بدون سوار کردن هیچ سیستم‌فایلی اجرا شود، کاربر باید داده‌های دامپ را به یک میزبان راه دور انتقال دهد. برای انتقال داده‌های دامپ از طریق SSH، دستور makedumpfile داده‌ها را در قالب واسط (قالب مسطح یا flattened format) به خروجی استاندارد ارسال می‌کند. با هدایت داده‌های خروجی به SSH، کاربر می‌تواند داده‌های دامپ را به میزبان دیگر منتقل کند. توجه داشته باشید که ابزارهای تحلیل (ابزار crash قبل از نسخه 5.1.2 یا GDB) نمی‌توانند قالب مسطح را مستقیماً بخوانند، بنابراین در میزبان راه دور داده‌های دریافت‌شده در قالب مسطح باید توسط makedumpfile (یا makedumpfile\-R.pl) به قالب قابل خواندن \fIDUMPFILE\fR مرتب‌سازی مجدد شوند. .PP دستور makedumpfile می‌تواند به جای \fIVMCORE\fR، یک \fIDUMPFILE\fR در قالب kdump-compressed را خوانده و مجدداً آن را فیلتر کند. این ویژگی در شرایطی مفید است که کاربران نیاز دارند حجم فایل \fIDUMPFILE\fR را برای ارسال از طریق ftp/scp یا غیره کاهش دهند (اگر تمام انواع صفحاتی که با یک dump_level جدید مشخص شده‌اند از قبل از \fIDUMPFILE\fR اصلی حذف شده باشند، \fIDUMPFILE\fR جدید تفاوتی با نسخه اصلی نخواهد داشت). .br برای نمونه، makedumpfile می‌تواند یک \fIDUMPFILE\fR با dump_level برابر ۳۱ را از فایلی با dump_level برابر ۳ بسازد: .br .B مثال: .br # makedumpfile \-c \-d 3 /proc/vmcore dumpfile.1 .br # makedumpfile \-c \-d 31 dumpfile.1 dumpfile.2 .PP دستور makedumpfile می‌تواند \fIVMCORE\fR را در سه نوع از قالب‌های sadump بخواند: قالب تک‌پارتیشن، قالب مجموعه‌دیسک (diskset) و قالب پشتیبان رسانه؛ و می‌تواند هر یک از آن‌ها را با اعمال فیلتر و فشرده‌سازی به قالب kdump-compressed تبدیل نماید. توجه داشته باشید که برای \fIVMCORE\fR ایجادشده توسط sadump، همیشه باید \fIVMLINUX\fR را با گزینه -x ارسال کنید. همچنین، برای ارسال چندین \fIVMCORE\fR ایجادشده در پیکربندی مجموعه‌دیسک، باید از گزینه --diskset استفاده کنید. .SH "گزینه‌ها (OPTIONS)" .TP \fB\-c,\-l,\-p,\-z\fR فشرده‌سازی داده‌های دامپ صفحه به صفحه با استفاده از کتابخانه‌های فشرده‌سازی زیر به ترتیب: .br \fB-c\fR : zlib .br \fB-l\fR : lzo .br \fB-p\fR : snappy .br \fB-z\fR : zstd .br (گزینه‌های -l، -p و -z هنگام ساخت makedumpfile به ترتیب نیازمند مقادیر USELZO=on، USESNAPPY=on و USEZSTD=on هستند). .br کاربر نمی‌تواند این گزینه را همراه با گزینه \-E استفاده کند، زیرا قالب ELF از داده‌های فشرده پشتیبانی نمی‌کند. .br .B مثال: .br # makedumpfile \-c \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP .BI \-d \ dump_level تعیین نوع صفحات غیرضروری برای تحلیل. .br صفحات از نوع مشخص‌شده در \fIDUMPFILE\fR کپی نمی‌شوند. انواع صفحاتی که در جدول زیر علامت خورده‌اند مستثنی می‌شوند. کاربر می‌تواند چندین نوع صفحه را با تعیین مجموع هر یک از انواع برای dump_level مشخص کند. حداکثر مقدار dump_level برابر ۳۱ است. توجه داشته باشید که dump_level برای فیلتر دامپ Xen روی ماشین‌هایی غیر از x86_64 برابر ۰ یا ۱ است. در ماشین x86_64، حتی سطوح ۲ یا بزرگتر نیز در صورتی که \fIvmlinux\fR مربوط به domain-0 را با گزینه \-x مشخص کنید مؤثر خواهند بود و در این صورت صفحات فقط از domain-0 حذف می‌شوند. .br اگر چندین dump_level را با جداکننده ',' مشخص کنید، در صورتی که اندازه فایل دامپ از حد مشخص‌شده با '-L' فراتر رود یا خطای "No space on device" رخ دهد، makedumpfile با استفاده از dump_level بعدی تلاش مجدد می‌کند. برای نمونه، اگر dump_level برابر "11,31" باشد و makedumpfile با dump_level 11 با شکست مواجه شود، مجدداً با dump_level 31 تلاش می‌کند. .br .B مثال: .br # makedumpfile \-d 11 \-x vmlinux /proc/vmcore dumpfile .br # makedumpfile \-d 11,31 \-x vmlinux /proc/vmcore dumpfile .br .B سطوح پایه: .br مقدار dump_level از پنج بیت تشکیل شده است، بنابراین پنج سطح پایه برای تعیین نوع صفحات غیرضروری وجود دارد: .br \fB 1\fR : حذف صفحات پرشده با صفر. .br \fB 2\fR : حذف صفحات کش غیرخصوصی (non-private). .br \fB 4\fR : حذف تمامی صفحات کش. .br \fB 8\fR : حذف صفحات داده‌های فرایندهای کاربر. .br \fB16\fR : حذف صفحات آزاد (free pages). .sp جدول تمام ترکیب‌های این بیت‌ها: .sp .nf | |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 .fi .TP \fB\-L\fR \fISIZE\fR محدود کردن اندازه فایل خروجی به \fISIZE\fR بایت. اگر حجم خروجی از \fISIZE\fR فراتر رود، یک \fIDUMPFILE\fR یا \fILOGFILE\fR ناقص نوشته خواهد شد. .TP \fB\-E\fR ایجاد \fIDUMPFILE\fR در قالب ELF. .br این گزینه را نمی‌توان همراه با گزینه‌های -c، -l یا -p استفاده کرد، زیرا قالب ELF از داده‌های فشرده پشتیبانی نمی‌کند. .br .B مثال: .br # makedumpfile \-E \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP \fB\-f\fR اجبار به بازنویسی فایل دامپ موجود و فعال‌سازی قابلیت mem-usage برای کار با هسته‌های قدیمی‌تر. .br .B مثال: .br # makedumpfile \-f \-d 31 \-x vmlinux /proc/vmcore dumpfile .br این دستور فایل \fIDUMPFILE\fR را حتی در صورت وجود بازنویسی می‌کند. .br # makedumpfile \-f \-\-mem\-usage /proc/kcore .br نسخه‌های هسته کمتر از v4.11 تا زمان اعمال وصله با کامیت بالادستی 464920104bf7 با قابلیت \-\-mem\-usage کار نخواهند کرد؛ بنابراین اگر هسته قدیمی خود را وصله کرده‌اید از \-f استفاده کنید. .TP \fB\-x\fR \fIVMLINUX\fR مشخص کردن فایل \fIVMLINUX\fR کرنل اول همراه با اطلاعات اشکال‌زدایی برای تحلیل میزان مصرف حافظه آن. .br این گزینه در صورتی لازم است که \fIVMCORE\fR شامل \fIVMCOREINFO\fR نباشد، [\-i \fIVMCOREINFO\fR] مشخص نشده باشد، و dump_level برابر ۲ یا بیشتر باشد. .br اندازه صفحه کرنل اول و کرنل دوم باید یکسان باشد. .br .B مثال: .br # makedumpfile \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP \fB\-i\fR \fIVMCOREINFO\fR مشخص کردن \fIVMCOREINFO\fR به جای \fIVMLINUX\fR برای تحلیل میزان استفاده حافظه کرنل اول. .br فایل \fIVMCOREINFO\fR باید از قبل توسط makedumpfile با گزینه \-g ساخته شده باشد و حاوی اطلاعات کرنل اول است. .br این گزینه در صورتی ضروری است که \fIVMCORE\fR شامل \fIVMCOREINFO\fR نباشد، [\-x \fIVMLINUX\fR] تعیین نشده باشد، و dump_level برابر ۲ یا بیشتر باشد. .br .B مثال: .br # makedumpfile \-d 31 \-i vmcoreinfo /proc/vmcore dumpfile .TP \fB\-g\fR \fIVMCOREINFO\fR تولید \fIVMCOREINFO\fR از فایل \fIVMLINUX\fR کرنل اول به همراه اطلاعات اشکال‌زدایی. .br فایل \fIVMCOREINFO\fR باید روی سیستمی که کرنل اول روی آن در حال اجراست تولید شود. با گزینه \-i کاربر می‌تواند \fIVMCOREINFO\fR تولیدشده در سیستم دیگری که همان کرنل اول را اجرا می‌کند مشخص کند. مشخص کردن [\-x \fIVMLINUX\fR] الزامی است. .br .B مثال: .br # makedumpfile \-g vmcoreinfo \-x vmlinux .TP \fB\-\-config\fR \fIFILTERCONFIGFILE\fR همراه با گزینه \-x \fIVMLINUX\fR برای مشخص کردن فایل پیکربندی فیلتر \fIFILTERCONFIGFILE\fR استفاده می‌شود که حاوی دستورات erase برای حذف داده‌های مورد نظر کرنل از vmcore هنگام ساخت \fIDUMPFILE\fR است. برای نحو دستورات به \fBmakedumpfile.conf(5)\fR مراجعه کنید. .TP \fB\-\-eppic\fR \fIEPPICMACRO\fR همراه با گزینه \-x \fIVMLINUX\fR برای مشخص کردن فایل ماکروی eppic شامل قوانین فیلتر یا دایرکتوری حاوی فایل‌های ماکروی eppic جهت فیلتر کردن داده‌های مورد نظر کرنل از vmcore هنگام ساخت \fIDUMPFILE\fR استفاده می‌شود. در صورت تعیین دایرکتوری، تمامی ماکروهای eppic موجود در آن پردازش خواهند شد. .TP \fB\-F\fR ارسال داده‌های دامپ در قالب مسطح (flattened format) به خروجی استاندارد برای انتقال داده‌ها از طریق SSH. .br ابزارهای تحلیل (مانند crash قبل از نسخه 5.1.2 یا GDB) نمی‌توانند قالب مسطح را مستقیماً بخوانند. برای تحلیل، داده‌های دامپ مسطح باید با گزینه \-R به یک \fIDUMPFILE\fR معمولی (قابل خواندن با ابزارهای تحلیل) بازآرایی شوند. این که چه گزینه‌ای همراه با گزینه \-F مشخص شده باشد، قالب فایل بازآرایی‌شده نهایی را تعیین می‌کند. به عبارت دیگر، هنگام بازآرایی داده‌ها با گزینه \-R امکان تعیین قالب فایل وجود ندارد. اگر گزینه \-E همراه با \-F مشخص شود، قالب فایل حاصله ELF خواهد بود؛ در غیر این صورت، در قالب kdump\-compressed خواهد بود. با استفاده از گزینه \-F تمامی پیام‌ها به خروجی خطای استاندارد ارسال می‌شوند زیرا خروجی استاندارد برای داده‌های دامپ به کار می‌رود. .br .B مثال: .br # makedumpfile \-F \-c \-d 31 \-x vmlinux /proc/vmcore \e .br | ssh user@host "cat > dumpfile.tmp" .br # makedumpfile \-F \-c \-d 31 \-x vmlinux /proc/vmcore \e .br | ssh user@host "makedumpfile \-R dumpfile" .br # makedumpfile \-F \-E \-d 31 \-i vmcoreinfo /proc/vmcore \e .br | ssh user@host "makedumpfile \-R dumpfile" .br # makedumpfile \-F \-E \-\-xen-vmcoreinfo \fIVMCOREINFO\fR /proc/vmcore \e .br | ssh user@host "makedumpfile \-R dumpfile" .TP \fB\-R\fR بازآرایی داده‌های دامپ در قالب مسطح از ورودی استاندارد به یک \fIDUMPFILE\fR عادی (قابل خواندن با ابزارهای تحلیل). .br .B مثال: .br # makedumpfile \-R dumpfile < dumpfile.tmp .br # makedumpfile \-F \-d 31 \-x vmlinux /proc/vmcore \e .br | ssh user@host "makedumpfile \-R dumpfile" .sp به جای گزینه \-R، اسکریپت پرل "makedumpfile\-R.pl" نیز می‌تواند داده‌های قالب مسطح را به یک \fIDUMPFILE\fR عادی تبدیل کند. این اسکریپت پرل وابسته به معماری نیست و اکثر سیستم‌ها دارای دستور perl هستند. حتی اگر در میزبان راه دور makedumpfile وجود نداشته باشد، با اجرای این اسکریپت می‌توان داده‌های دامپ را بازآرایی کرد. .br .B مثال: .br # makedumpfile \-F \-d 31 \-x vmlinux /proc/vmcore \e .br | ssh user@host "makedumpfile\-R.pl dumpfile" .TP \fB\-\-split\fR تقسیم موازی داده‌های دامپ به چندین \fIDUMPFILE\fR. با تعیین فایل‌ها روی دستگاه‌های ذخیره‌سازی مختلف، بار ورودی/خروجی بین دستگاه‌ها توزیع شده و زمان ذخیره داده‌های دامپ کاهش می‌یابد. اندازه هر فایل کوچکتر از حافظه کل سیستم تقسیم بر تعداد فایل‌ها است. این قابلیت تنها از قالب kdump\-compressed پشتیبانی می‌کند. .br .B مثال: .br # makedumpfile \-\-split \-d 31 \-x vmlinux /proc/vmcore dumpfile1 dumpfile2 .TP \fB\-\-num\-threads\fR \fITHREADNUM\fR استفاده از چندین ریسه (thread) برای خواندن و فشرده‌سازی موازی داده‌های هر صفحه که زمان ذخیره‌سازی \fIDUMPFILE\fR را کاهش می‌دهد. توجه داشته باشید که اگر تعداد پردازنده‌های در دسترس کمتر از تعداد ریسه‌ها باشد، ممکن است باعث افت شدید کارایی شود. این قابلیت تنها از ایجاد \fIDUMPFILE\fR در قالب kdump-compressed از روی \fIVMCORE\fR در قالب kdump-compressed یا elf پشتیبانی می‌کند. .br .B مثال: .br # makedumpfile \-d 31 \-\-num\-threads 4 /proc/vmcore dumpfile .TP \fB\-\-reassemble\fR سرهم کردن مجدد چندین \fIDUMPFILE\fR که با گزینه \-\-split ایجاد شده‌اند در قالب یک \fIDUMPFILE\fR واحد. در مثال زیر dumpfile1 و dumpfile2 در dumpfile تجمیع می‌شوند: .br .B مثال: .br # makedumpfile \-\-reassemble dumpfile1 dumpfile2 dumpfile .TP \fB\-b\fR \fI\fR کش کردن 2^order صفحه در رم هنگام تولید \fIDUMPFILE\fR پیش از نوشتن در خروجی. مقدار پیش‌فرض ۴ است. .TP \fB\-\-cyclic\-buffer\fR \fIbuffer_size\fR مشخص کردن اندازه بافر بر حسب کیلوبایت برای داده‌های بیت‌مپ (bitmap). پردازش فیلتر به چندین چرخه تقسیم می‌شود تا میزان مصرف حافظه ثابت بماند؛ تعداد چرخه‌ها به صورت زیر محاسبه می‌شود: .sp .nf num_of_cycles = system_memory / (\fIbuffer_size\fR * 1024 * bit_per_bytes * page_size ) .fi .sp هرچه تعداد چرخه‌ها کمتر باشد، سرعت کار بالاتر خواهد بود. به طور پیش‌فرض، \fIbuffer_size\fR بر اساس اندازه حافظه سیستم محاسبه می‌شود، بنابراین کاربران عادی نیازی به تعیین این گزینه ندارند. .br .B مثال: .br # makedumpfile \-\-cyclic\-buffer 1024 \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP \fB\-\-splitblock\-size\fR \fIsplitblock_size\fR مشخص کردن اندازه بلوک تفکیک بر حسب کیلوبایت برای تحلیل همراه با --split. اگر --splitblock N تعیین شود، اختلاف اندازه هر یک از فایل‌های دامپ حداکثر N کیلوبایت خواهد بود. .br .B مثال: .br # makedumpfile \-\-splitblock\-size 1024 \-d 31 \-x vmlinux \-\-split /proc/vmcore dumpfile1 dumpfile2 .TP \fB\-\-work\-dir\fR مشخص کردن دایرکتوری کاری برای فایل بیت‌مپ موقت. در صورت عدم تعیین، بیت‌مپ روی حافظه ذخیره می‌شود. پردازش فیلتر باید پویش دو مرحله‌ای انجام دهد تا مصرف حافظه تثبیت شود، اما با استفاده از دایرکتوری کاری روی سیستم‌فایل می‌توان از این کار اجتناب کرد؛ بنابراین تعیین این گزینه ممکن است سرعت فیلتر را اندکی افزایش دهد. .br .B مثال: .br # makedumpfile \-\-work\-dir /tmp \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP \fB\-\-non\-mmap\fR عدم استفاده از \fBmmap(2)\fR برای خواندن \fIVMCORE\fR حتی در صورت پشتیبانی. به طور کلی خواندن با \fBmmap(2)\fR سریع‌تر است و کاربران عادی نیازی به تعیین این گزینه ندارند. این گزینه عمدتاً برای اشکال‌زدایی کاربرد دارد. .br .B مثال: .br # makedumpfile \-\-non\-mmap \-d 31 \-x vmlinux /proc/vmcore dumpfile .TP \fB\-\-xen-syms\fR \fIXEN-SYMS\fR مشخص کردن فایل \fIXEN-SYMS\fR به همراه اطلاعات اشکال‌زدایی برای تحلیل میزان مصرف حافظه xen. این گزینه بخش‌های xen و domain-0 را استخراج می‌کند. .br .B مثال: .br # makedumpfile \-E \-\-xen-syms xen-syms /proc/vmcore dumpfile .TP \fB\-\-xen-vmcoreinfo\fR \fIVMCOREINFO\fR مشخص کردن \fIVMCOREINFO\fR به جای \fIXEN-SYMS\fR برای تحلیل میزان استفاده حافظه xen. .br فایل \fIVMCOREINFO\fR باید قبلاً توسط makedumpfile با گزینه \-g ساخته شده باشد و شامل اطلاعات xen است. .br .B مثال: .br # makedumpfile \-E \-\-xen-vmcoreinfo \fIVMCOREINFO\fR /proc/vmcore dumpfile .TP \fB\-X\fR حذف تمام صفحات دامنه کاربری از \fIVMCORE\fR مربوط به Xen kdump، و استخراج بخش‌های xen و domain-0. اگر \fIVMCORE\fR حاوی \fIVMCOREINFO\fR برای Xen باشد، نیازی به تعیین \fI\-\-xen-syms\fR و \fI\-\-xen-vmcoreinfo\fR نیست. .br .B مثال: .br # makedumpfile \-E \-X /proc/vmcore dumpfile .TP \fB\-\-xen_phys_start\fR \fIxen_phys_start_address\fR این گزینه تنها برای معماری x86_64 است. در صورتی که کد/داده‌های xen جابجایی‌پذیر (relocatable) باشد و \fIVMCORE\fR حاوی \fIxen_phys_start_address\fR در CRASHINFO نباشد، این آدرس را مشخص کنید. این آدرس را می‌توان از خط "Hypervisor code and data" در /proc/iomem به دست آورد. برای نمونه، در صورتی که /proc/iomem به صورت زیر باشد آدرس 0xcee00000 را تعیین کنید: .sp .nf ------------------------------------------------------- # cat /proc/iomem ... cee00000-cfd99999 : Hypervisor code and data ... ------------------------------------------------------- .fi .br .B مثال: .br # makedumpfile \-E \-X \-\-xen_phys_start 0xcee00000 /proc/vmcore dumpfile .TP \fB\-\-message-level\fR \fImessage_level\fR تعیین انواع پیام‌ها. .br کاربران می‌توانند خروجی‌های چاپ‌شده را با تعیین \fImessage_level\fR محدود کنند. انواع پیام‌هایی که با علامت X در جدول زیر مشخص شده‌اند چاپ می‌شوند. برای نمونه تعیین عدد ۷ به معنای چاپ نشانگر پیشرفت، پیام‌های عمومی و پیام‌های خطا است که مقدار پیش‌فرض می‌باشد. حداکثر مقدار \fImessage_level\fR برابر ۳۱ است. .sp .nf 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 .fi .TP \fB\-\-vtop\fR \fIvirtual_address\fR این گزینه هنگام اشکال‌زدایی تبدیل آدرس‌های مجازی مفید است. با تعیین \fIvirtual_address\fR، آدرس فیزیکی آن چاپ می‌شود و مقایسه آن با زیردستور "vtop" در ابزار crash اشکال‌زدایی را ساده می‌کند. این گزینه تنها خروجی تبدیل آدرس را چاپ کرده و تأثیری بر ساخت فایل دامپ ندارد. .TP \fB\-\-dump-dmesg\fR این گزینه رفتار عادی makedumpfile را بازنویسی می‌کند. به جای فشرده‌سازی و فیلتر کردن \fIVMCORE\fR، صرفاً گزارش dmesg را از \fIVMCORE\fR استخراج کرده و در فایل مشخص‌شده \fILOGFILE\fR می‌نویسد. اگر \fIVMCORE\fR حاوی \fIVMCOREINFO\fR برای dmesg نباشد، تعیین [\-x \fIVMLINUX\fR] یا [\-i \fIVMCOREINFO\fR] ضروری است. .br .B مثال: .br # makedumpfile \-\-dump-dmesg /proc/vmcore dmesgfile .br # makedumpfile \-\-dump-dmesg -x vmlinux /proc/vmcore dmesgfile .TP \fB\-\-partial-dmesg\fR این گزینه باعث می‌شود --dump-dmesg تنها لاگ‌های dmesg را از زمانی که بافر آخرین بار در هسته دچار وحشت پاک شده است (برای نمونه با "dmesg --clear") استخراج کند. .TP \fB\-\-mem-usage\fR این گزینه در حال حاضر روی معماری‌های x86_64، arm64، ppc64 و s390x پشتیبانی می‌شود. از این گزینه برای نمایش تعداد صفحات سیستم در کاربردهای مختلف استفاده می‌شود و باید در کرنل اول اجرا شود. به کمک آن، کاربر می‌تواند متوجه شود هنگام تعیین مقادیر مختلف dump_level چه تعداد صفحه قابل ذخیره در دامپ خواهد بود. این گزینه بخش‌های 'System Ram' و 'kernel text' در /proc/kcore را به استثنای محدوده crashkernel تحلیل کرده و تعداد صفحات هر نوع را بر اساس vmcoreinfo محاسبه می‌کند؛ بنابراین در حال حاضر /proc/kcore باید صریحاً مشخص شود. .br .B مثال: .br # makedumpfile \-\-mem-usage /proc/kcore .TP \fB\-\-diskset=VMCORE\fR مشخص کردن چندین \fIVMCORE\fR ایجادشده در پیکربندی sadump diskset به همان تعداد فایل‌های \fIVMCORE\fR به ترتیب صعودی از چپ به راست. این فایل‌ها در یک \fIDUMPFILE\fR واحد تجمیع می‌شوند. .br .B مثال: .br # makedumpfile \-x vmlinux \-\-diskset=vmcore1 \-\-diskset=vmcore2 dumpfile .TP \fB\-D\fR چاپ پیام‌های اشکال‌زدایی. .TP \fB\-h (\-\-help)\fR نمایش پیام راهنما و وضعیت پشتیبانی از LZO/snappy (فعال/غیرفعال). .TP \fB\-v\fR نمایش نسخه makedumpfile. .TP \fB\-\-check-params\fR تنها بررسی معتبر بودن یا نبودن پارامترهای خط فرمان و سپس خروج. ترجیحاً بهتر است به عنوان اولین پارامتر داده شود. .TP \fB\-\-dry-run\fR عدم نوشتن فایل دامپ خروجی ضمن اجرای سایر عملیات مشخص‌شده توسط گزینه‌ها. این گزینه را نمی‌توان همراه با --dump-dmesg، --reassemble و -g استفاده کرد. .TP \fB\-\-show-stats\fR نمایش پیام‌های گزارش (report). این گزینه جایگزینی برای فعال کردن بیت ۴ در سطح ارائه‌شده به --message-level است. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .TP 8 .B TMPDIR این متغیر محیطی در محیط کرنل اول برای فایل موقت بیت‌مپ حافظه استفاده می‌شود. اگر ماشین شما حافظه زیادی دارد و از یک tmpfs کوچک روی /tmp استفاده می‌کنید، ممکن است makedumpfile به دلیل کمبود حافظه با شکست مواجه شود، زیرا در این حالت فایل موقت بسیار بزرگی می‌سازد. برای جلوگیری از این خطا، باید از گزینه --work-dir برای استفاده از سیستم‌فایل روی حافظه جانبی برای فایل بیت‌مپ استفاده کنید. .SH "عیب‌یابی (DIAGNOSTICS)" دستور makedumpfile با مقادیر زیر خارج می‌شود: .TP \fB0\fR : دستور makedumpfile با موفقیت به پایان رسید. .TP \fB1\fR : اجرای makedumpfile به دلایلی غیر از موارد زیر با شکست مواجه شد. .TP \fB2\fR : شکست به دلیل تفاوت نسخه میان \fIVMLINUX\fR و \fIVMCORE\fR. .SH "نویسندگان (AUTHORS)" .PP نوشته‌شده توسط Masaki Tachibana و Ken'ichi Ohmichi. .SH "همچنین ببینید (SEE ALSO)" .PP crash(8), gdb(1), kexec(8), makedumpfile.conf(5)