GPART(8) System Manager's Manual GPART(8)

gpart - حدس زدن جداول پارتیشن رایانه شخصی

gpart [گزینه‌ها] device

گزینه‌ها: [-b <backup MBR>][-C c,h,s][-c][-d][-E][-e][-f] [-g][-h][-i][-K <last-sector>][-k <# of sectors>] [-L] [-l <log file>][-n <increment>] [-q][-s <sector-size>] [-t <module-name>][-V][-v] [-W <device>][-w <module-name, weight>]

دستور gpart تلاش می‌کند پارتیشن‌های موجود روی یک دیسک سخت را حدس بزند. اگر جدول پارتیشن اصلی (Primary Partition Table) مفقود، بازنویسی یا تخریب شده باشد، پارتیشن‌ها همچنان روی دیسک وجود دارند اما سیستم‌عامل نمی‌تواند به آن‌ها دسترسی پیدا کند.

دستور gpart جدول پارتیشن اصلی را نادیده می‌گیرد و دیسک (یا ایمیج دیسک، فایل) را سکتور به سکتور برای چندین نوع فایل‌سیستم/پارتیشن پویش (scan) می‌کند. این کار را با «پرسش» از ماژول‌های شناسایی فایل‌سیستم انجام می‌دهد تا مشخص شود آیا یک توالی مشخص از سکتورها شبیه به آغاز یک فایل‌سیستم یا نوع پارتیشن است یا خیر. در حال حاضر انواع فایل‌سیستم‌های زیر برای gpart شناخته‌شده هستند (بر اساس نام ماژول فهرست شده‌اند):

نوع فایل‌سیستم BeOS.
طرح زیرپارتیشن‌بندی disklabel در FreeBSD/NetBSD/386BSD مورد استفاده در پلتفرم‌های اینتل.
دومین فایل‌سیستم توسعه‌یافته لینوکس (Linux second extended filesystem).
«فایل‌سیستم‌های» FAT12/16/32 در MS-DOS.
فایل‌سیستم با کارایی بالای IBM OS/2 (High Performance filesystem).
حجم‌های فیزیکی LVM لینوکس (LVM توسعه‌یافته توسط Heinz Mauelshagen).
پارتیشن‌های سواپ لینوکس (نسخه‌های ۰ و ۱).
نوع فایل‌سیستم سیستم‌عامل Minix.
فایل‌سیستم MS Windows NT/2000.
فایل‌سیستم QNX 4.x.
فایل‌سیستم Reiser (نسخه‌های 3.5.X با X > 11 و 3.6.X).
سیستم Sun Solaris روی پلتفرم‌های اینتل از طرح زیرپارتیشن‌بندی مشابه BSD disklabel روی دیسک‌های سخت PC استفاده می‌کند.
فایل‌سیستم ژورنالی Silicon Graphics برای لینوکس.

ماژول‌های حدس فایل‌سیستم بیشتری را می‌توان در زمان اجرا اضافه کرد (گزینه -t را ببینید). لطفاً برای توضیحات دقیق درباره نحوه ایجاد ماژول‌های حدس‌زننده، به فایل README ابزار gpart مراجعه کنید. همه ماژول‌ها دارای یک ضریب وزن حدس (guessing weight factor) هستند که نشان می‌دهد حدس‌های آن‌ها در مقایسه با سایر ماژول‌ها چقدر «مطمئن و دقیق» است. اگر یک ماژول خاص مدام در شناسایی اشتباه یک پارتیشن اصرار داشته باشد، می‌توان این وزن را تغییر داد.

طبیعتاً فقط پارتیشن‌هایی قابل شناسایی هستند که به شکلی فرمت‌بندی شده باشند. اگر نوع یک مدخل پارتیشن در جدول پارتیشن اصلی از x به y تغییر یابد در حالی که فایل‌سیستم همچنان از نوع x است، gpart نیز همچنان نوع x را حدس خواهد زد.

هیچ بررسی‌ای انجام نمی‌شود که آیا فایل‌سیستم یافت‌شده سالم (clean) یا حتی سازگار/قابل اتصال (mountable) است یا خیر، بنابراین کاملاً محتمل است که gpart پارتیشن‌هایی را شناسایی کند که پیش از طرح پارتیشن‌بندی کنونی دیسک وجود داشته‌اند. به‌ویژه در دیسک‌های بزرگ، هدرها یا اَبَربلوک‌های (superblocks) قدیمی فایل‌سیستم ممکن است برای مدت طولانی باقی بمانند تا زمانی که سرانجام با داده‌های کاربر بازنویسی شوند.

باید تأکید کرد که gpart کاری کاملاً مکاشفه‌ای (heuristic) انجام می‌دهد؛ هرگز خروجی آن را بدون بررسی‌های سنجش‌پذیری باور نکنید. این ابزار به همان راحتی که ممکن است در حدس‌هایش درست باشد، می‌تواند به شدت اشتباه کند. به شما هشدار داده شد.

پس از یافتن فهرستی از انواع احتمالی پارتیشن، این فهرست از نظر سازگاری بررسی می‌شود. به عنوان مثال، پارتیشنی که با پارتیشن قبلی همپوشانی داشته باشد کنار گذاشته می‌شود. تمام پارتیشن‌های باقی‌مانده با یکی از ویژگی‌های زیر برچسب‌گذاری می‌شوند: «primary» (اصلی)، «logical» (منطقی)، «orphaned» (یتیم) یا «invalid» (نامعتبر).

پارتیشنی با برچسب «orphaned» یک پارتیشن منطقی است که درست به نظر می‌رسد اما در زنجیره پارتیشن‌های منطقی مفقود شده است. این وضعیت ممکن است زمانی رخ دهد که یک پارتیشن منطقی از جدول پارتیشن توسعه‌یافته حذف شود بدون اینکه فضای واقعی دیسک بازنویسی شده باشد.

یک پارتیشن «invalid» پارتیشنی است که به دلایل مختلف قابل پذیرش نیست. اگر یک جدول پارتیشن اصلی سازگار در این فرایند ایجاد شود، چاپ می‌گردد و می‌تواند در یک فایل یا دستگاه نوشته شود.

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

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

دستور gpart تمام تلاش خود را برای بررسی زنجیره یافت‌شده از پارتیشن‌های منطقی به کار می‌گیرد، اما نقاط شکست بسیار زیادی وجود دارد. اگر از برنامه‌های fdisk «خوب» برای ایجاد پارتیشن‌های توسعه‌یافته استفاده شده باشد، جداول حاصل شامل یک رکورد بوت صفرشده و چهار مدخل پارتیشن هستند که حداقل دو مدخل از آن‌ها باید استفاده‌نشده علامت‌گذاری شده باشند. متأسفانه برای مثال برنامه fdisk ارائه‌شده در Windows NT ظاهراً ناحیه رکورد بوت را صفر نمی‌کند، بنابراین gpart باید در شناسایی جداول پارتیشن توسعه‌یافته بیش از حد مدارا به خرج دهد. این مدارا ممکن است به حدس‌های بسیار نادرست بینجامد.

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

بررسی دیسک‌های متعلق به ماشین‌هایی با ترتیب بایت‌ها (endianness) متفاوت از ماشین پویش‌گر به هیچ وجه آزمایش نشده است و در حال حاضر توصیه نمی‌شود.

دستور gpart به سیستم‌عامل برای گزارش هندسه صحیح دیسک تکیه می‌کند. متأسفانه گاهی اوقات ممکن است سیستم‌عامل هندسه‌ای کوچک‌تر از مقدار واقعی گزارش دهد (مثلاً دیسک‌هایی با بیش از ۱۰۲۴ یا ۱۶۳۸۴ سیلندر).

دستور gpart بررسی می‌کند که آیا پارتیشن‌های حدس‌زده‌شده فراتر از اندازه دیسک امتداد می‌یابند یا خیر و آن‌ها را با عنوان «invalid» علامت‌گذاری می‌کند، اما در صورتی که اندازه دیسک از روی یک هندسه نادرست محاسبه شده باشد ممکن است دچار اشتباه شود. به عنوان مثال اگر دیسکی با هندسه 1028/255/63 باید پویش شود و سیستم‌عامل مقدار 1024/255/63 را گزارش دهد، gpart باید به این صورت فراخوانی شود:

gpart -C 1028,255,63 <other options> <device>

دستور gpart ممکن است در صورت مفقود شدن یا از بین رفتن جدول پارتیشن اصلی کمکی ارائه دهد، اما تحت هیچ شرایطی نمی‌تواند جایگزین پشتیبان‌گیری مناسب از دیسک یا جدول پارتیشن شود. برای ذخیره رکورد اصلی راه‌اندازی (MBR) شامل جدول پارتیشن اصلی در یک فایل، تایپ کنید:

dd if=/dev/hda of=mbr bs=512 count=1

با جایگزین کردن /dev/hda به جای نام دستگاه بلوکی دیسک مورد نظر. این کار باید برای همه دیسک‌های سیستم انجام شود. برای بازیابی جدول پارتیشن اصلی بدون بازنویسی MBR تایپ کنید:

dd if=mbr of=/dev/hda bs=1 count=64 skip=446 seek=446

هشدار: اطمینان حاصل کنید که تمام پارامترها دقیقاً همان‌طور که نشان داده شده تایپ شوند و دستگاه دیسک صحیح باشد. عدم انجام این کار ممکن است منجر به خرابی شدید فایل‌سیستم شود. فایل ذخیره‌شده باید در مکانی امن مانند یک دیسک فلاپی نگهداری شود.

اگر جدول پارتیشن اصلی حدس‌زده‌شده سازگار به نظر برسد و باید نوشته شود (گزینه -W را ببینید)، از MBR فعلی در فایل مشخص‌شده نسخه پشتیبان تهیه می‌کند.
تنظیم هندسه دیسک (سیلندرها، هدها، سکتورها) برای پویش. این گزینه در صورتی مفید است که بخواهید دیسکی را پویش کنید که با هندسه متفاوتی پارتیشن‌بندی شده، یا اگر device یک ایمیج دیسک است یا هندسه دیسک از طریق BIOS رایانه شخصی قابل دریافت نباشد. هیچ فاصله‌ای بین اعداد مجاز نیست، مگر اینکه هر سه عدد درون نقل‌قول قرار گیرند.
حالت بررسی/مقایسه (شامل گزینه ساکت -q نیز می‌شود). پس از پایان پویش، جدول پارتیشن اصلی حاصل با جدول موجود مقایسه می‌شود. سپس کد خروجی gpart حاوی تعداد تفاوت‌ها خواهد بود (۰ اگر به جز فلگ بوت/فعال که قابل حدس زدن نیست، کاملاً یکسان باشند). این گزینه در صورت مشخص شدن -d در خط فرمان، هیچ اثری ندارد.
حلقه حدس زدن را شروع نمی‌کند. زمانی مفید است که جدول پارتیشن باید بدون پویش واقعی پارتیشن‌ها چاپ شود (در ترکیب با گزینه -v).
تلاش برای شناسایی جداول پارتیشن توسعه‌یافته را انجام نمی‌دهد. اگر روی دستگاه مورد نظر پارتیشن‌های توسعه‌یافته وجود داشته باشد، gpart به احتمال بسیار زیاد به دلیل وجود بیش از حد پارتیشن‌های اصلی اخطار خواهد داد، زیرا تنها چهار پارتیشن اصلی می‌تواند وجود داشته باشد. پارتیشن‌های منطقی موجود به عنوان پارتیشن‌های اصلی فهرست خواهند شد.
خطاهای خواندن دیسک را نادیده نمی‌گیرد. اگر این گزینه داده شود و خواندن‌های ناقص دیسک یا خطاهای عمومی خواندن دیسک (EIO) رخ دهد، gpart خارج خواهد شد. در صورت مشخص نشدن، برنامه تلاش می‌کند به کار خود ادامه دهد.
پویش کامل. هنگامی که یک پارتیشن احتمالی پیدا می‌شود، gpart به‌طور معمول از تمام سکتورهایی که به نظر می‌رسد این مدخل اشغال کرده پرش می‌کند و پویش را از انتهای آخرین پارتیشن احتمالی ادامه می‌دهد. با تعیین این گزینه پویش دیسک ممکن است زمان زیادی ببرد، شکیبا باشید.
تلاش برای دریافت هندسه دیسک از سیستم‌عامل را انجام نمی‌دهد. اگر device یک دستگاه بلوکی یا کاراکتری نبوده و یک فایل معمولی باشد، این گزینه باید داده شود. اگر فایلی که پویش می‌شود ایمیج یک دیسک است، هندسه را می‌توان با گزینه -C تعیین کرد.
نمایش راهنما.
اجرا به صورت تعاملی. هر بار که یک پارتیشن احتمالی شناسایی می‌شود، از کاربر تأییدیه خواسته می‌شود.
پویش فقط تا سکتور داده‌شده یا انتهای فایل یا دستگاه، هرکدام که زودتر برسد.
پرش از تعداد سکتورهای داده‌شده پیش از آغاز پویش. بالقوه زمانی مفید است که به دنبال یک پارتیشن در انتهای یک دیسک بزرگ باشیم.
فهرست کردن ماژول‌های فایل‌سیستم/نوع پارتیشن موجود و وزن آن‌ها، سپس خروج.
ثبت خروجی در فایل مشخص‌شده (حتی اگر گزینه -q داده شده باشد).
گام افزایش پویش: تعداد سکتورها یا «s» برای افزایش تک‌سکتوری، «h» برای افزایش سکتورها بر حسب هر هد (بسته به هندسه) یا «c» برای افزایش بر حسب سیلندر.

گام افزایش همچنین بر شرایط جستجوی جداول پارتیشن توسعه‌یافته تأثیر می‌گذارد: اگر گام افزایش پویش «s» (یعنی ۱) باشد، جداول پارتیشن توسعه‌یافته ملزم هستند که روی مرز هد باشند، در غیر این صورت باید روی مرز سیلندر قرار گیرند.

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

حالت ساکت/بدون خروجی. با این حال اگر یک فایل لاگ مشخص شده باشد (گزینه -l را ببینید)، تمام خروجی در آن فایل نوشته می‌شود. این گزینه بر حالت تعاملی -i اولویت دارد.
تنظیم پیش‌فرض اندازه سکتور رسانه. gpart تلاش می‌کند اندازه سکتور را تشخیص دهد اما ممکن است در انجام این کار ناموفق باشد. اندازه‌های سکتور بررسی‌شده 2^i هستند که i=9..14 است (۵۱۲ تا ۱۶۳۸۴ بایت). اندازه سکتور پیش‌فرض رسانه ۵۱۲ بایت است.
نمایش شماره نسخه.
حالت پرگویی (verbose). این گزینه می‌تواند بیش از یک بار داده شود که منجر به ارائه اطلاعات بسیار زیادی خواهد شد.
نوشتن جدول پارتیشن. اگر یک جدول پارتیشن اصلی سازگار حدس زده شده باشد، می‌تواند در فایل یا دستگاه مشخص‌شده نوشته شود. دستگاه ارائه‌شده می‌تواند همان دستگاه پویش‌شده باشد.

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

هشدار: جدول پارتیشن حدس‌زده‌شده باید پیش از بازنویسی آن با دقت بسیار بررسی شود. همیشه می‌توانید جدول پارتیشن حدس‌زده‌شده را در یک فایل معمولی بنویسید و با استفاده از dd(1) آن را در سکتور ۰ بنویسید (بخش اقدامات احتیاطی در بالا را ببینید).

قرار دادن ماژول مشخص‌شده در ابتدای زنجیره ماژول‌ها و اختصاص یک وزن جدید به آن ماژول. به همه ماژول‌ها وزن اولیه ۱.۰ اختصاص می‌یابد. در اینجا نیز هیچ فاصله‌ای مجاز نیست.

تنظیمات پیش‌فرض «-n h» است.

- برای پویش نخستین دیسک سخت IDE در لینوکس با استفاده از تنظیمات پیش‌فرض:

gpart /dev/hda

- برای چاپ جدول پارتیشن اصلی سومین درایو IDE بدون شروع حلقه پویش در FreeBSD:

gpart -vvd /dev/wd2

- اگر lilo(8) در رکورد اصلی راه‌اندازی (MBR) یک دیسک سخت نصب شده باشد، محتوای سکتور اول را در فایلی به نام /boot/boot.<major/minor> ذخیره می‌کند. برای فهرست کردن پارتیشن‌های موجود در چنین فایلی:

gpart -vdg /boot/boot.0300

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

- معمولاً اولین پارتیشن اصلی روی هد دوم شروع می‌شود. اگر gpart نتواند پارتیشن اول را به درستی شناسایی کند ممکن است این حالت برقرار نباشد. می‌توان به gpart دستور داد که پویش را مستقیماً از سکتور یک دیسک با استفاده از حالت پویش سکتور به سکتور آغاز کند:

gpart -k 1 -n s /dev/hdb

- فرض کنید gpart یک پارتیشن NTFS را روی یک دیسک خاص به عنوان FAT شناسایی می‌کند. در این وضعیت، ماژول «ntfs» باید به اولین ماژول برای بررسی تبدیل شده و وزنی بالاتر از وزن معمول ۱.۰ به آن داده شود:

gpart -w ntfs,1.5 /dev/hdb

برای فهرست کردن ماژول‌های موجود و وزن آن‌ها از گزینه -L استفاده کنید.

- پس از بررسی خروجی gpart حداقل برای سه بار، جدول پارتیشن اصلی می‌تواند به این شیوه در دستگاه بازنویسی شود:

gpart -W /dev/sdc /dev/sdc

این کار البته ممکن است برای سلامت و آسودگی خاطر شما به شدت خطرناک باشد، بنابراین بسیار مراقب باشید.

- یک دیسک سخت با ۶۳ سکتور در هر هد با گام‌های ۶۳ سکتوری پویش می‌شود. برای انجام پویش روی هر هد دوم در حالی که از ۱۰۰۸ سکتور نخست پرش می‌شود:

gpart -k 1008 -n 126 /dev/sda

- اگر می‌خواهید ببینید که gpart چقدر آسان ممکن است گمراه شود، و چند شروع احتمالی پارتیشن روی یک دیسک وجود دارد، کل دیسک را واقعاً سکتور به سکتور جستجو کنید و تمام خروجی را در یک فایل لاگ بنویسید:

gpart -vvfn s -ql /tmp/gpart.log /dev/sd2 &

معمولاً gpart در این حالت قادر به ارائه یک حدس دقیق از جدول پارتیشن اصلی نخواهد بود. با این حال فایل لاگ ممکن است حاوی سرنخ‌های کافی برای بازسازی دستی جدول پارتیشن باشد.

/dev/*

دستگاه‌های بلوکی دیسک سخت. طرح نام‌گذاری دستگاه‌های بلوکی دیسک سخت وابسته به سیستم‌عامل است؛ برای اطلاعات بیشتر به کتابچه‌های راهنمای سیستم خود مراجعه کنید.

پیام‌های خطای متعددی وجود دارند، همه آن‌ها باید خودتوضیح باشند. در غیر این صورت گزارش دهید.

دستور gpart یک نرم‌افزار بتا است، بنابراین انتظار رفتارهای دارای اشکال را داشته باشید.

-دستور gpart فقط پیوندهای پارتیشن توسعه‌یافته با یک پارتیشن منطقی را می‌پذیرد. ممکن است انواع مختلفی از fdisk وجود داشته باشند که پیوندهایی با حداکثر سه مدخل پارتیشن منطقی ایجاد کنند، اما این موارد پذیرفته نمی‌شوند.

- پشتیبانی از معماری‌های با ترتیب بایت بزرگ (big-endian).
- آزمایش روی معماری‌های ۶۴ بیتی.
- جستجو برای پارتیشن‌های مدیر راه‌اندازی (مانند OS/2 BM).
- بررسی بازسازی زنجیره‌های پارتیشن منطقی.

لطفاً گزارش‌های اشکال، پیشنهادات، نظرات و موارد مشابه را ارسال کنید به:

Michail Brzitwa <michail@brzitwa.de>

fdisk(8)

January 2001 Administration Tools