CGDISK(8) راهنمای GPT fdisk CGDISK(8)

cgdisk - ابزار مبتنی بر Curses برای دستکاری پارتیشن‌های GPT

cgdisk [ -a ] device

مجموعه GPT fdisk خانواده‌ای از برنامه‌های متنی برای ایجاد و دستکاری جداول پارتیشن است. عضو cgdisk از این خانواده از یک رابط کاربری مبتنی بر curses برای تعامل از طریق سامانه منوی متنی استفاده می‌کند. این ابزار به‌طور خودکار یک جدول پارتیشن قدیمی Master Boot Record (یا MBR) یا disklabel متعلق به BSD که بدون پارتیشن حامل MBR ذخیره شده است را به قالب جدیدتر جدول پارتیشن شناسه یکتای سراسری (GUID Partition Table یا GPT) تبدیل می‌کند، یا یک جدول پارتیشن GUID را بارگذاری می‌نماید. دیگر اعضای این خانواده برنامه‌ها عبارتند از gdisk (پرقابلیت‌ترین برنامه گروه، با یک رابط کاربری تعاملی غیر curses) و sgdisk (که از طریق گزینه‌های خط فرمان برای استفاده متخصصان یا در اسکریپت‌ها هدایت می‌شود). ابزار FixParts نیز برنامه‌ای مرتبط برای رفع مجموعه محدودی از مشکلات در دیسک‌های MBR است.

برای اطلاعات بیشتر درباره مقایسه MBR و GPT و همچنین اصطلاحات و ساختار GPT، مستندات جامع GPT fdisk را در نشانی https://www.rodsbooks.com/gdisk ببینید یا به ویکی‌پدیا مراجعه کنید.

برنامه cgdisk از رابط کاربری مشابه برنامه cfdisk در لینوکس استفاده می‌کند، اما cgdisk پارتیشن‌های GPT را اصلاح می‌نماید. این ابزار همچنین قابلیت تبدیل پارتیشن‌های MBR یا disklabelهای BSD را به پارتیشن‌های GPT دارد. مانند برنامه اصلی cfdisk، برنامه cgdisk نیز ساختارهای دیسک را تا زمانی که صریحاً آن‌ها را روی دیسک ننویسید تغییر نمی‌دهد؛ بنابراین در صورت بروز اشتباه، می‌توانید با گزینه Quit بدون تغییر ماندن پارتیشن‌ها از برنامه خارج شوید.

به‌طور معمول، cgdisk روی فایل‌های دستگاه دیسک عمل می‌کند، مانند /dev/sda یا /dev/hda در لینوکس، /dev/disk0 در Mac OS X، یا /dev/ad0 یا /dev/da0 در FreeBSD. این برنامه همچنین می‌تواند روی فایل‌های تصویر دیسک عمل کند، که می‌توانند نسخه‌های رونوشت کامل از کل دیسک (برای مثال ساخته‌شده با dd) یا تصاویر خام دیسک مورد استفاده شبیه‌سازهایی مانند QEMU یا VMWare باشند. توجه داشته باشید که تنها تصاویر دیسک خام (raw) پشتیبانی می‌شوند؛ cgdisk نمی‌تواند روی قالب‌های فشرده یا دیگر قالب‌های پیشرفته تصویر دیسک کار کند.

هنگام راه‌اندازی، cgdisk تلاش می‌کند نوع پارتیشن‌بندی در حال استفاده روی دیسک را شناسایی کند. اگر داده‌های معتبر GPT بیابد، cgdisk از آن استفاده خواهد کرد. اگر cgdisk یک MBR یا disklabel متعلق به BSD معتبر بیابد اما داده‌های GPT موجود نباشد، تلاش می‌کند MBR یا disklabel را به قالب GPT تبدیل کند. (البته احتمال دارد پارتیشن اول یا آخر در disklabelهای BSD غیرقابل استفاده شوند زیرا با ساختارهای داده‌ای GPT همپوشانی پیدا می‌کنند.) پس از خروج با گزینه 'w'، ابزار cgdisk جدول MBR یا disklabel را با یک GPT جایگزین می‌کند. این عمل بالقوه خطرناک است! ممکن است سیستم شما غیرقابل بوت شود و کدهای نوع پارتیشن در صورتی که دیسک از کدهای نوع ناشناخته استفاده کند خراب شوند. مشکلات بوت به‌ویژه زمانی محتمل هستند که در حال بوت چندگانه با هر سیستم‌عامل ناآگاه از GPT باشید. اگر اشتباهاً cgdisk را روی دیسک MBR اجرا کردید، می‌توانید با استفاده از گزینه Quit بدون اعمال هیچ تغییری با خیالی آسوده از برنامه خارج شوید.

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

*
برای دیسک‌های داده (غیر بوت)، و برای دیسک‌های بوت استفاده‌شده در رایانه‌های مبتنی بر BIOS با GRUB به عنوان بوت‌لودر، پارتیشن‌ها می‌توانند به هر ترتیب و با هر اندازه دلخواهی ایجاد شوند.
*
دیسک‌های بوت برای سامانه‌های مبتنی بر EFI به یک EFI System Partition (کد داخلی GPT fdisk برابر 0xEF00) قالب‌بندی‌شده با FAT-32 نیاز دارند. اندازه توصیه‌شده برای این پارتیشن بین ۱۰۰ تا ۳۰۰ مبی‌بایت (MiB) است. پرونده‌های مرتبط با بوت در اینجا ذخیره می‌شوند. (توجه داشته باشید که GNU Parted این پارتیشن‌ها را با فلگ "boot" تنظیم‌شده شناسایی می‌کند.)
*
بوت‌لودر GRUB 2 برای سامانه‌های مبتنی بر BIOS از یک BIOS Boot Partition (کد داخلی GPT fdisk برابر 0xEF02) استفاده می‌کند، که بوت‌لودر مرحله دوم در آن و بدون نیاز به سیستم فایل ذخیره می‌شود. این پارتیشن معمولاً می‌تواند بسیار کوچک باشد (حدود ۳۲ کیبی‌بایت تا ۱ مبی‌بایت)، اما برای جزئیات بیشتر باید به مستندات بوت‌لودر خود مراجعه کنید.
*
اگر قرار است ویندوز از یک دیسک GPT بوت شود، یک پارتیشن از نوع Microsoft Reserved (کد داخلی GPT fdisk برابر 0x0C01) توصیه می‌شود. این پارتیشن باید اندازه‌ای حدود ۱۲۸ مبی‌بایت داشته باشد. این پارتیشن به‌طور معمول بعد از پارتیشن EFI System و بلافاصله پیش از پارتیشن‌های داده ویندوز قرار می‌گیرد. (توجه داشته باشید که نسخه‌های قدیمی GNU Parted تمام پارتیشن‌های FAT را از این نوع می‌ساختند، که در واقع پارتیشن را برای ذخیره‌سازی عادی فایل هم در ویندوز و هم در Mac OS X غیرقابل استفاده می‌کرد.)
*
ابزارهای GPT برخی از سیستم‌عامل‌ها مقداری فضای خالی (معمولاً ۱۲۸ مبی‌بایت) پس از هر پارتیشن ایجاد می‌کنند. هدف این است که ابزارهای آینده دیسک بتوانند از این فضا استفاده کنند. چنین فضای خالی برای دیسک‌های GPT الزامی نیست، اما ایجاد آن ممکن است به نگهداری آتی دیسک کمک کند. می‌توانید از گزینه موقعیت‌یابی نسبی پارتیشن در GPT fdisk (مثلاً با مشخص کردن سکتور شروع به‌صورت '+128M') برای ساده‌سازی ایجاد چنین فاصله‌هایی استفاده کنید.

علاوه بر نام فایل دستگاه، تنها یک گزینه خط فرمان پذیرفته می‌شود: -a. این گزینه نحوه برجسته‌سازی پارتیشن‌ها و بلوک‌های فضای خالی را تغییر می‌دهد: به جای استفاده از ncurses، وقتی از -a استفاده شود، cgdisk از یک نماد ">" در سمت چپ پارتیشن یا فضای خالی انتخاب‌شده استفاده می‌کند. این گزینه برای استفاده در دستگاه‌های نمایش محدود مانند تله‌تایپ‌ها و صفحه‌خوان‌ها در نظر گرفته شده است.

تعامل با cgdisk از طریق منوهای تعاملی حالت متنی آن انجام می‌شود. صفحه نمایش به دو بخش تعاملی تقسیم شده است:

*
ناحیه نمایش پارتیشن، که در آن پارتیشن‌ها و فاصله‌های بین آن‌ها (علامت‌گذاری‌شده به عنوان "free space") خلاصه شده‌اند.
*
ناحیه انتخاب گزینه‌ها، که دکمه‌های گزینه‌های اصلی در آن نمایش داده می‌شوند.

علاوه بر این، بالای صفحه نمایش نام برنامه و شماره نسخه، نام فایل دستگاه مربوط به دیسک، و اندازه دیسک را هم به سکتور و هم در واحدهای IEEE-1541 (مانند GiB، TiB و غیره) نشان می‌دهد.

می‌توانید از کلیدهای زیر برای جابه‌جایی میان گزینه‌های مختلف و انتخاب آن‌ها استفاده کنید:

کلید جهت‌نمای بالا (up arrow)
این کلید انتخاب پارتیشن را یک پارتیشن به سمت بالا حرکت می‌دهد.
کلید جهت‌نمای پایین (down arrow)
این کلید انتخاب پارتیشن را یک پارتیشن به سمت پایین حرکت می‌دهد.
این کلید انتخاب پارتیشن را به اندازه یک صفحه به سمت بالا جابه‌جا می‌کند.
این کلید انتخاب پارتیشن را به اندازه یک صفحه به سمت پایین جابه‌جا می‌کند.
کلید جهت‌نمای راست (right arrow)
این کلید انتخاب گزینه را یک مورد به سمت راست می‌برد.
کلید جهت‌نمای چپ (left arrow)
این کلید انتخاب گزینه را یک مورد به سمت چپ می‌برد.
این کلید گزینه انتخاب‌شده فعلی را فعال می‌کند. همچنین می‌توانید یک گزینه را با فشردن حرف بزرگ در نام گزینه روی صفحه‌کلید فعال کنید، مانند a برای فعال‌سازی گزینه Align.

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

گزینه‌های موجود به شرح زیر هستند. (توجه داشته باشید که cgdisk مجموعه گزینه‌های بسیار محدودتری نسبت به همتای خود gdisk ارائه می‌دهد. اگر نیاز به بازیابی جدول پارتیشن، اصلاح hybrid MBR، یا سایر عملیات پیشرفته دارید، باید به مستندات gdisk مراجعه کنید.)

تغییر مقدار تراز سکتور (sector alignment). دیسک‌هایی که سکتورهای منطقی بیشتری نسبت به سکتورهای فیزیکی دارند (مانند درایوهای پیشرفته جدید Advanced Format)، برخی پیکربندی‌های RAID، و بسیاری از دستگاه‌های SSD در صورتی که پارتیشن‌ها به درستی با ساختارهای داده‌های داخلی آن‌ها تراز نشده باشند دچار افت کارایی می‌شوند. روی دیسک‌های جدید، GPT fdisk به‌طور پیش‌فرض تلاش می‌کند پارتیشن‌ها را روی مرزهای ۱ مبی‌بایت (۲۰۴۸ سکتور در دیسک‌های با سکتورهای ۵۱۲ بایتی) تراز کند، که کارایی را برای تمام این نوع دیسک‌ها بهینه می‌سازد. روی دیسک‌های از پیش پارتیشن‌بندی‌شده، GPT fdisk تلاش می‌کند مقدار تراز استفاده‌شده در آن دیسک را شناسایی کند، اما روی دیسک‌های بزرگتر از ۳۰۰ گیگابایت حتی در صورت شناسایی مقادیر تراز کمتر، تراز ۸ سکتوری تنظیم خواهد کرد. در هر حالت، این مقدار را می‌توان با استفاده از این گزینه تغییر داد. مقدار تراز همچنین بر مقدار پیش‌فرض سکتور پایانی هنگام ایجاد یک پارتیشن جدید اثر می‌گذارد؛ در صورت امکان، این مقدار روی یکی کمتر از مضرب مقدار تراز تنظیم خواهد شد. این کار باید اندازه پارتیشن‌ها را مضربی از مقدار تراز نگه دارد. برخی ابزارهای رمزنگاری دیسک نیاز دارند که اندازه پارتیشن‌ها مقداری مشخص (معمولاً ۴۰۹۶ بایت) باشد، بنابراین تراز پیش‌فرض ۱ مبی‌بایت برای آن‌ها به خوبی کار می‌کند.
ذخیره داده‌های پارتیشن در یک فایل پشتیبان. می‌توانید با استفاده از این گزینه از جدول پارتیشن فعلی درون حافظه در یک فایل دیسک پشتیبان تهیه کنید. فایل حاصل یک فایل دودویی متشکل از MBR محافظتی، سرایند اصلی GPT، سرایند پشتیبان GPT و یک نسخه از جدول پارتیشن به همین ترتیب است. توجه داشته باشید که پشتیبان‌گیری از ساختارهای داده فعلی در حافظه انجام می‌شود، بنابراین اگر برنامه را اجرا کنید، تغییراتی ایجاد نمایید و سپس از این گزینه استفاده کنید، نسخه پشتیبان تغییرات شما را بازتاب خواهد داد.
حذف یک پارتیشن. این اقدام ورودی مربوطه را از جدول پارتیشن حذف می‌کند اما داده‌های موجود در سکتورهایی را که در اصل به پارتیشن روی دیسک تخصیص یافته بودند دست‌نخورده باقی می‌گذارد. اگر پارتیشن متناظر hybrid MBR وجود داشته باشد، gdisk آن را نیز حذف کرده و هر پارتیشن محافظتی MBR از نوع 0xEE (EFI GPT) مجاور را گسترش می‌دهد تا فضای خالی جدید را پر کند.
چاپ توضیحات کوتاه برای تمام گزینه‌ها.
نمایش اطلاعات دقیق پارتیشن. اطلاعات خلاصه نمایش‌داده‌شده در ناحیه نمایش پارتیشن لزوماً بسیاری از جزئیات، مانند GUIDهای یکتای پارتیشن‌ها و نقاط شروع و پایان دقیق سکتوری پارتیشن‌ها را حذف می‌کند. گزینه Info این اطلاعات را برای یک پارتیشن تکی نمایش می‌دهد.
بارگذاری داده‌های پارتیشن از یک فایل پشتیبان. این گزینه معکوس گزینه Backup است. توجه داشته باشید که بازیابی داده‌های پارتیشن از هر چیزی به جز دیسک اصلی توصیه نمی‌شود.
تغییر نام GPT یک پارتیشن. این نام به‌صورت یک رشته UTF-16 کدگذاری می‌شود، اما ورود و نمایش صحیح هر چیزی فراتر از مقادیر پایه ASCII نیازمند پشتیبانی مناسب از محلی‌سازی (locale) و قلم است. در بیشتر موارد، لینوکس نام پارتیشن را نادیده می‌گیرد، اما ممکن است در برخی سیستم‌عامل‌ها مهم باشد. ابزار GPT fdisk یک نام پیش‌فرض بر اساس کد نوع پارتیشن تنظیم می‌کند. توجه داشته باشید که نام پارتیشن GPT با نام سیستم فایل که در ساختارهای داده سیستم فایل کدگذاری می‌شود متفاوت است. همچنین توجه داشته باشید که برای فعال کردن این مورد با تایپ معادل الفبایی آن، باید از M استفاده کنید، نه حرف بدیهی‌تر N، چرا که دومی توسط گزینه بعدی استفاده شده است...
ایجاد یک پارتیشن جدید. شما یک سکتور شروع، یک اندازه، یک کد نوع و یک نام وارد می‌کنید. سکتور شروع را می‌توان به صورت مطلق به عنوان شماره سکتور یا موقعیتی بر حسب کیبی‌بایت (K)، مبی‌بایت (M)، گیبی‌بایت (G)، تبی‌بایت (T) یا پبی‌بایت (P) مشخص کرد؛ برای مثال، 40M موقعیت ۴۰ مبی‌بایت از ابتدای دیسک را مشخص می‌کند. می‌توانید با قرار دادن نماد '+' قبل از عدد، موقعیت‌ها را نسبت به ابتدا یا انتهای محدوده پیش‌فرض مشخص‌شده تعیین کنید، مانند +2G برای تعیین نقطه‌ای ۲ گیبی‌بایت پس از سکتور شروع پیش‌فرض. مقدار اندازه نیز می‌تواند از پسوندهای K، M، G، T و P استفاده کند. فشردن کلید Enter بدون هیچ ورودی مقدار پیش‌فرض را انتخاب می‌کند، که برای سکتور شروع برابر ابتدای بزرگترین بلوک در دسترس و برای اندازه برابر تمام اندازه در دسترس است.
خروج از برنامه بدون ذخیره تغییرات شما. اگر فقط می‌خواستید اطلاعات را مشاهده کنید یا در صورت بروز اشتباه و تمایل به بازگشت از تمام تغییرات، از این گزینه استفاده کنید.
تغییر کد نوع یک پارتیشن. کد نوع را با استفاده از یک عدد هگزادسیمال دو بایتی وارد می‌کنید. همچنین در صورتی که یک شناسه یکتای سراسری (GUID) دارید و cgdisk آن را نمی‌شناسد، می‌توانید آن را مستقیماً وارد کنید. اگر کد نوع پارتیشن خود را نمی‌دانید، می‌توانید با فشردن L فهرستی از کدهای نوع شناخته‌شده را ببینید. فهرست کدهای نوع را می‌توان اختیاری با یک رشته جستجو فیلتر کرد؛ به عنوان مثال، وارد کردن linux تنها کدهای نوع پارتیشنی را نشان می‌دهد که توضیحات آن‌ها شامل رشته Linux است. این جستجو بدون حساسیت به حروف کوچک و بزرگ انجام می‌شود.
بررسی و راستی‌آزمایی دیسک. این گزینه انواع مختلفی از مشکلات را بررسی می‌کند، مانند CRCهای نادرست و عدم تطابق داده‌های اصلی و پشتیبان. البته این گزینه بیشتر مشکلات را به‌طور خودکار تصحیح نمی‌کند؛ برای این کار باید از gdisk استفاده کنید. در صورتی که هیچ مشکلی یافت نشود، این دستور خلاصه‌ای از فضای تخصیص‌نیافته دیسک را نمایش می‌دهد.
نوشتن داده‌ها. برای ذخیره تغییرات خود از این دستور استفاده کنید.

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

*
این برنامه تنها روی لینوکس، FreeBSD و Mac OS X به درستی کامپایل می‌شود. از نظر تئوری، اگر کتابخانه Ncurses برای ویندوز نصب باشد باید تحت ویندوز نیز کامپایل شود، اما من این قابلیت را آزمایش نکرده‌ام. نسخه‌های لینوکس برای x86-64 (۶۴ بیتی)، x86 (۳۲ بیتی) و PowerPC (۳۲ بیتی) آزمایش شده‌اند که نسخه x86-64 بیشترین آزمایش را دیده است. در FreeBSD نسخه‌های ۳۲ بیتی (x86) و ۶۴ بیتی (x86-64) آزمایش شده‌اند. برای Mac OS X تنها نسخه‌های ۳۲ بیتی توسط نویسنده آزمایش شده است.
*
نسخه FreeBSD برنامه هنگامی که پارتیشن‌های موجود روی آن دیسک سوار (mount) شده باشند، نمی‌تواند تغییرات جدول پارتیشن را روی دیسک بنویسد. (مشکل مشابهی در بسیاری دیگر از ابزارهای FreeBSD مانند gpt، fdisk و dd نیز وجود دارد.) این محدودیت را می‌توان با وارد کردن sysctl kern.geom.debugflags=16 در اعلان شل برطرف کرد.
*
این برنامه هنگام تبدیل از قالب MBR تنها می‌تواند تا ۱۲۸ پارتیشن (۴ پارتیشن اولیه و ۱۲۴ پارتیشن منطقی) را بارگذاری کند. این محدودیت را می‌توان با تغییر خط #define MAX_MBR_PARTS در فایل کد منبع basicmbr.h و کامپایل مجدد افزایش داد؛ هرچند چنین تغییری نیازمند استفاده از یک جدول پارتیشن بزرگتر از حد معمول خواهد بود. (محدودیت ۱۲۸ پارتیشن از این جهت انتخاب شد که این تعداد برابر با ۱۲۸ پارتیشن پشتیبانی‌شده توسط رایج‌ترین اندازه جدول پارتیشن است.)
*
تبدیل از قالب MBR گاهی به دلیل فضای ناکافی در ابتدا یا (معمول‌تر) در انتهای دیسک با شکست مواجه می‌شود. تغییر اندازه جدول پارتیشن (با استفاده از گزینه 's' در منوی متخصصان در gdisk) گاهی می‌تواند این مشکل را رفع کند؛ با این حال، در موارد حاد ممکن است لازم باشد قبل از تبدیل با GPT fdisk، با استفاده از GNU Parted یا ابزاری مشابه، اندازه یک پارتیشن تغییر داده شود.
*
تبدیل‌های MBR تنها در صورتی کار می‌کنند که دیسک دارای توصیف‌کننده‌های پارتیشن LBA صحیح باشد. این توصیف‌کننده‌ها باید در هر دیسکی با اندازه بیش از ۸ گیبی‌بایت یا دیسک‌های کوچکتری که با نرم‌افزارهای غیربسیار قدیمی پارتیشن‌بندی شده‌اند وجود داشته باشند.
*
پشتیبانی از BSD disklabel ممکن است پارتیشن‌های اول یا آخری ایجاد کند که با ساختارهای داده‌ای GPT همپوشانی دارند. این موضوع گاهی با تنظیم اندازه جدول پارتیشن قابل جبران است، اما در موارد حاد ممکن است نیاز به حذف پارتیشن(های) آسیب‌دیده باشد.
*
به دلیل ماهیت بسیار متغیر ساختارهای BSD disklabel، تبدیل‌ها از این قالب ممکن است غیرقابل اعتماد باشند -- ممکن است پارتیشن‌ها نادیده گرفته شوند، به گونه‌ای تبدیل شوند که با دیگر پارتیشن‌ها همپوشانی ایجاد کنند، یا با مقادیر شروع و پایان نادرست تبدیل شوند. از این ویژگی با احتیاط استفاده کنید!
*
بوت شدن پس از تبدیل یک دیسک MBR یا BSD disklabel احتمالاً مختل خواهد شد. گاهی نصب مجدد بوت‌لودر مشکل را برطرف می‌کند، اما در مواقع دیگر ممکن است لازم باشد بوت‌لودر را تغییر دهید. به جز در پلتفرم‌های مبتنی بر EFI، ویندوز تا دست‌کم ویندوز ۷ از بوت شدن از روی دیسک‌های GPT پشتیبانی نمی‌کند. ایجاد یک hybrid MBR (با استفاده از گزینه 'h' در منوی بازیابی و تبدیل در gdisk) یا رها کردن GPT به نفع MBR ممکن است تنها گزینه‌های شما در این حالت باشند.
*
تابع Verify در cgdisk و فهرست انواع پارتیشن قابل دستیابی با فشردن L در تابع Type (یا هنگام مشخص کردن نوع پارتیشن در حین ایجاد پارتیشن جدید) هر دو در حال حاضر از حالت ncurses خارج می‌شوند. این محدودیت یک نقص ظاهری جزئی است که تأثیری بر عملکرد برنامه ندارد.

نویسنده اصلی: 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), fdisk(8), gdisk(8), mkfs(8), parted(8), sfdisk(8), sgdisk(8), fixparts(8).

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

https://developer.apple.com/technotes/tn2006/tn2166.html

https://www.rodsbooks.com/gdisk

دستور cgdisk بخشی از بسته GPT fdisk است و از جانب Roderick W. Smith در دسترس می‌باشد.

1.0.10 Roderick W. Smith