FIXPARTS(8) FixParts Manual FIXPARTS(8)

fixparts - ابزار رفع عیب پارتیشن‌های MBR

fixparts device

برنامه FixParts (با نام دیگر fixparts) یک برنامه مبتنی بر منوی متنی برای رفع عیب انواع خاصی از مشکلات جدول‌های پارتیشن Master Boot Record (MBR) است. این برنامه دارای سه هدف طراحی اصلی است، هرچند از چند ویژگی اضافی نیز پشتیبانی می‌کند:

*
می‌تواند داده‌های سرگردان و به‌جامانده جدول پارتیشن GUID (GPT) را حذف کند؛ داده‌هایی که ممکن است روی دیسکی که پیش‌تر به عنوان دیسک GPT استفاده می‌شده و سپس به طور ناقص به ساختار رایج‌تر MBR تبدیل شده است باقی مانده باشند.
*
می‌تواند پارتیشن‌های گسترده (extended) با اندازه نادرست را تعمیر کند -- چه پارتیشن‌هایی که فراتر از انتهای فیزیکی دیسک امتداد یافته‌اند و چه آن‌هایی که با پارتیشن‌های اصلی (primary) مجاور همپوشانی دارند. FixParts به‌گونه‌ای طراحی شده است که این نوع تعمیر به صورت خودکار رخ می‌دهد؛ بنابراین اگر این تنها مشکل دیسک شما باشد، می‌توانید برنامه را اجرا کرده و بلافاصله بدون هیچ تغییر دستی جدول پارتیشن را ذخیره کنید، و برنامه مشکل را رفع خواهد کرد.
*
می‌توانید در چارچوب محدودیت‌های ساختار داده MBR، پارتیشن‌های اصلی (primary) را به پارتیشن‌های منطقی (logical) یا برعکس تبدیل کنید.

قابلیت‌های اضافی شامل امکان تغییر کدهای نوع پارتیشن، پرچم‌های boot/active، حذف پارتیشن‌ها و محاسبه مجدد مقادیر CHS است. به جز احتمالاً محاسبه مجدد مقادیر CHS، این ویژگی‌های ثانویه بهتر است با fdisk انجام شوند، زیرا طراحی fixparts به‌گونه‌ای است که حتی زمانی که چنین تغییری درخواست نشده باشد، احتمال تغییر در شماره‌گذاری پارتیشن‌ها وجود دارد.

برنامه fixparts از یک رابط کاربری شبیه به fdisk لینوکس استفاده می‌کند، اما fixparts بسیار تخصصی‌تر است. از همه مهم‌تر، شما نمی‌توانید با fixparts پارتیشن‌های جدید ایجاد کنید، هرچند می‌توانید تخصیص primary/logical را تغییر دهید.

در طرح MBR، پارتیشن‌ها به سه دسته تقسیم می‌شوند:

این پارتیشن‌ها در سکتور اول دیسک سخت تعریف می‌شوند و تعداد آن‌ها به چهار عدد محدود است. برخی سیستم‌عامل‌ها مانند Windows و FreeBSD باید از یک پارتیشن اصلی (primary) بوت شوند.
پارتیشن‌های گسترده نوعی پارتیشن اصلی تخصصی هستند. آن‌ها به عنوان فضایی برای نگهداری پارتیشن‌های منطقی (logical) عمل می‌کنند.
یک دیسک می‌تواند شامل تعداد دلخواهی پارتیشن منطقی باشد (با این حال، fixparts محدودیت ۱۲۴ پارتیشن منطقی را اعمال می‌کند). تمام پارتیشن‌های منطقی درون یک پارتیشن گسترده منفرد قرار می‌گیرند و با استفاده از ساختار داده پیوندی (linked-list) تعریف می‌شوند. این امر بدان معناست که پیش از هر پارتیشن منطقی باید دست‌کم یک سکتور فضای تخصیص‌نیافته وجود داشته باشد تا ساختار داده تعریف‌کننده آن (یک Extended Boot Record یا EBR) را در خود جای دهد.

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

برخلاف اغلب ابزارهای دیسک، رابط کاربری fixparts پارتیشن‌های گسترده را نادیده می‌گیرد. به صورت درونی، این برنامه اطلاعات مربوط به پارتیشن گسترده اصلی را دور می‌اندازد و هنگامی که دستور ذخیره تغییرات را می‌دهید، یک پارتیشن گسترده جدید ایجاد می‌کند تا پارتیشن‌های منطقیِ تعریف‌شده در آن زمان را در خود جای دهد. دلیل این کار آن است که بیشتر تعمیرات و تغییراتی که این ابزار انجام می‌دهد نیازمند تولید یک پارتیشن گسترده تازه است؛ بنابراین نگه‌داشتن پارتیشن اولیه در رابط کاربری تنها باعث پیچیدگی می‌شد.

یکی دیگر از ویژگی‌های غیرعادی رابط کاربری fixparts این است که شماره‌های پارتیشن لزوماً با وضعیت اصلی/منطقی بودن مرتبط نیستند. در بیشتر ابزارها، پارتیشن‌های ۱ تا ۴ به پارتیشن‌های اصلی تعلق دارند، در حالی که پارتیشن‌های ۵ به بالا پارتیشن‌های منطقی هستند. در fixparts، به هر شماره پارتیشنی می‌توان وضعیت اصلی یا منطقی اختصاص داد، به شرطی که قواعد چینش که پیش‌تر توضیح داده شد رعایت شوند. هنگام ذخیره جدول پارتیشن، پارتیشن‌ها به‌درستی تخصیص داده می‌شوند و سپس ابزارهایی مانند کرنل لینوکس و fdisk شماره‌های استاندارد را به آن‌ها اختصاص خواهند داد.

هنگام راه‌اندازی اولیه، fixparts اقدام به پویش دیسک برای یافتن داده‌های GPT می‌کند. اگر دیسک شبیه به یک دیسک GPT استاندارد باشد، fixparts از اجرا خودداری می‌کند. اگر دیسک مانند یک دیسک MBR معمولی به نظر برسد اما امضاهای GPT در نواحی هدر اصلی یا ثانویه GPT موجود باشند، fixparts پیشنهاد حذف این داده‌های اضافی را ارائه می‌دهد. اگر تایید کنید، برنامه بلافاصله هدر یا هدرهای GPT را پاک می‌کند. (اگر فقط یک هدر یافت شود، تنها همان یک هدر پاک خواهد شد تا ریسک آسیب به بوت‌لودر یا داده‌های دیگری که ممکن است تنها یکی از هدرهای GPT را بازنویسی کرده باشند به حداقل برسد.)

به استثنای پاک‌سازی اختیاری داده‌های باقی‌مانده GPT در ابتدای اجرا، fixparts تمام تغییرات را تا زمانی که کاربر آن‌ها را با دستور w ذخیره نکند در حافظه نگه می‌دارد. بنابراین، می‌توانید پارتیشن‌های خود را در رابط کاربری دستکاری کرده و در صورت تمایل، با فشردن کلید q بدون ذخیره تغییرات خارج شوید.

ابزار fixparts از هیچ گزینه خط فرمانی پشتیبانی نمی‌کند، مگر تعیین دستگاه (device) هدف.

بیشتر تعاملات با fixparts از طریق منوی متنی تعاملی آن صورت می‌پذیرد. عملکردهای مشخص آن عبارتند از:

تغییر وضعیت پرچم active/boot. این پرچم برای برخی بوت‌لودرها و سیستم‌عامل‌ها الزامی است.
محاسبه مجدد مقادیر سیلندر/هد/سکتور (CHS) برای تمام پارتیشن‌ها. حالت آدرس‌دهی CHS تا حد زیادی منسوخ شده است، اما برخی سیستم‌عامل‌ها و ابزارها در صورت نامعتبر بودن مقادیر CHS هشدار می‌دهند. توجه داشته باشید که مقادیر CHS در fixparts روی دیسک‌های کوچک‌تر از حدود ۸ گیبی‌بایت (به جز در لینوکس) احتمالاً نادرست خواهند بود.
تغییر وضعیت یک پارتیشن به منطقی (logical). این گزینه تنها در صورتی کار می‌کند که چینش فعلی پارتیشن‌ها از چنین تغییری پشتیبانی کند. توجه داشته باشید که اگر تغییر وضعیت یک پارتیشن به این شیوه در حال حاضر ممکن نباشد، ایجاد تغییری دیگر ممکن است آن را میسر سازد. برای نمونه، کنار گذاشتن (omit) پارتیشنی که پیش از پارتیشن هدف قرار دارد، در حالتی که هیچ سکتور آزادی بین دو پارتیشن وجود نداشته باشد، می‌تواند تبدیل پارتیشن به حالت منطقی را امکان‌پذیر کند.
کنار گذاشتن یک پارتیشن. پس از کنار گذاشته شدن، پارتیشن همچنان در فهرست پارتیشن‌های fixparts نمایش داده می‌شود، اما به عنوان کنارگذاشته‌شده نشانه‌گذاری می‌گردد. می‌توانید پس از آن با دستورات r یا l، آن را به ترتیب به حالت اصلی یا منطقی تبدیل کنید. با این حال، هنگامی که تغییرات خود را با w ذخیره کنید، این پارتیشن از دست خواهد رفت.
نمایش اطلاعات خلاصه و پایه پارتیشن‌ها. این اطلاعات شامل شماره پارتیشن، وضعیت پرچم boot/active، شماره سکتورهای شروع و پایان، وضعیت اصلی/منطقی/کنارگذاشته‌شده، امکان یا عدم امکان تبدیل پارتیشن به حالت منطقی، و کد نوع MBR پارتیشن است.
خروج از برنامه بدون ذخیره تغییرات. اگر فقط می‌خواستید اطلاعات را مشاهده کنید یا اگر مرتکب اشتباهی شده‌اید و می‌خواهید تمام تغییرات را لغو کنید، از این گزینه استفاده نمایید.
تغییر وضعیت یک پارتیشن به اصلی (primary). این گزینه تنها زمانی کار خواهد کرد که چینش فعلی پارتیشن‌ها از چنین تغییری پشتیبانی کند. توجه داشته باشید که هر پارتیشن از نظر تئوری می‌تواند به پارتیشن اصلی تبدیل شود، اگرچه در برخی پیکربندی‌ها، انجام این کار مستلزم کنار گذاشتن برخی پارتیشن‌ها خواهد بود. اگر fixparts اجازه تبدیل یک پارتیشن به اصلی را ندهد، ممکن است لازم باشد سایر پارتیشن‌ها را به حالت منطقی تبدیل کرده یا به کلی کنار بگذارید.
مرتب‌سازی ورودی‌های پارتیشن. این گزینه پارتیشن‌ها را در صفحه نمایش بر اساس موقعیت فیزیکی آن‌ها روی دیسک مرتب می‌کند، که در برخی موارد درک ساختار دیسک را ساده‌تر می‌سازد. این گزینه هیچ تاثیری بر ترتیب نهایی پارتیشن‌های منطقی ندارد، زیرا آن‌ها قبل از ذخیره شدن مرتب می‌شوند. ترتیب پارتیشن‌های اصلی در جدول پارتیشن نهایی ذخیره‌شده ممکن است تحت تأثیر این گزینه قرار گیرد. در هر دو مورد، همان‌طور که پیش‌تر ذکر شد، شماره پارتیشن‌های نمایش داده شده توسط fixparts ممکن است با شماره‌های مورد استفاده کرنل یا سایر ابزارهای پارتیشن‌بندی یکسان نباشد.
تغییر کد نوع (type code) پارتیشن. کد نوع را به صورت یک عدد هگزادسیمال یک‌بایتی وارد می‌کنید.
نوشتن داده‌ها. از این دستور برای ذخیره تغییرات و خروج از برنامه استفاده کنید.
?
چاپ منو. این دستور (یا هر دستور ناشناخته دیگر) را برای دیدن خلاصه گزینه‌های موجود وارد کنید.

اشکالات و محدودیت‌های شناخته‌شده عبارتند از:

*
این برنامه تنها روی Linux، FreeBSD، Mac OS X و Windows به درستی کامپایل می‌شود. نسخه‌های لینوکس برای x86-64 (۶۴ بیتی)، x86 (۳۲ بیتی) و PowerPC (۳۲ بیتی) آزمایش شده‌اند که نسخه x86-64 بیشترین آزمایش را داشته است. در FreeBSD نسخه‌های ۳۲ بیتی (x86) و ۶۴ بیتی (x86-64) آزمایش شده‌اند. برای Mac OS X و Windows تنها نسخه‌های ۳۲ بیتی آزمایش شده‌اند.
*
نسخه FreeBSD این برنامه هنگامی که پارتیشن‌های دیسک مانت شده باشند، نمی‌تواند تغییرات جدول پارتیشن را روی دیسک بنویسد. (این مشکل در بسیاری دیگر از ابزارهای FreeBSD مانند gpt، fdisk و dd نیز وجود دارد). با اجرای دستور sysctl kern.geom.debugflags=16 در خط فرمان شل می‌توان بر این محدودیت غلبه کرد.
*
این برنامه تنها می‌تواند حداکثر ۱۲۸ پارتیشن (۴ پارتیشن اصلی و ۱۲۴ پارتیشن منطقی) را بارگذاری کند. این محدودیت را می‌توان با تغییر خط #define MAX_MBR_PARTS در فایل سورس‌کد basicmbr.h و کامپایل مجدد افزایش داد.
*
این برنامه تنها در صورتی می‌تواند پارتیشن‌ها را بخواند که دیسک دارای توصیف‌کننده‌های معتبر پارتیشن LBA باشد. این توصیف‌کننده‌ها باید در هر دیسکی با اندازه بیش از ۸ گیبی‌بایت یا دیسک‌های کوچک‌تری که با نرم‌افزارهای مدرن (غیربسیار قدیمی) پارتیشن‌بندی شده‌اند موجود باشند.
*
برنامه تلاشی برای حفظ شماره‌های پارتیشن نمی‌کند. این موضوع می‌تواند پیامدهایی برای بوت‌لودرها و مانت کردن سیستم‌های پرونده از طریق /etc/fstab داشته باشد. ممکن است ویرایش فایل‌های پیکربندی یا حتی نصب مجدد بوت‌لودر ضروری باشد.
*

برنامه ممکن است ترتیب پارتیشن‌ها را در جدول پارتیشن تغییر دهد.

نویسنده اصلی: Roderick W. Smith (rodsmith@rodsbooks.com)

مشارکت‌کنندگان:

* Yves Blusseau (1otnwmz02@sneakemail.com)

* David Hubbard (david.c.hubbard@gmail.com)

* Justin Maggard (justin.maggard@netgear.com)

* Dwight Schauer (das@teegra.net)

* Florian Zumbiehl (florz@florz.de)

cfdisk(8), cgdisk(8), fdisk(8), mkfs(8), parted(8), sfdisk(8), gdisk(8), sgdisk(8).

https://en.wikipedia.org/wiki/Master_boot_record

https://www.rodsbooks.com/fixparts

دستور fixparts بخشی از بسته GPT fdisk بوده و از Rod Smith در دسترس است.

1.0.10 Roderick W. Smith