MKFS.FAT(8) دستورهای مدیریتی و نگهداری MKFS.FAT(8)

mkfs.fat - ساخت یک سیستم‌فایل MS-DOS FAT

mkfs.fat [<گزینه‌ها>] <دستگاه> [<تعداد-بلاک‌ها>]

دستور mkfs.fat برای ایجاد یک سیستم‌فایل MS-DOS FAT روی یک دستگاه (معمولاً یک پارتیشن دیسک) استفاده می‌شود.

دستور mkfs.fat برای ساخت سیستم‌فایل FAT بر روی یک دستگاه یا درون یک فایل ایمیج (تصویر دیسک) به کار می‌رود. DEVICE فایل ویژه‌ای است که متناظر با دستگاه است (مانند ‎/dev/sdXX‎) یا یک فایل ایمیج است (که در صورت مشخص شدن گزینه -C نیازی به وجود قبلی آن نیست). BLOCK-COUNT تعداد بلاک‌های روی دستگاه است و اندازه هر بلاک همواره ۱۰۲۴ بایت می‌باشد، صرف‌نظر از اندازه سکتور یا اندازه کلاستر. بنابراین BLOCK-COUNT اندازه سیستم‌فایل را بر حسب یکای KiB (کیبی‌بایت) مشخص می‌کند و نه بر اساس تعداد سکتورها (برخلاف تمام گزینه‌های دیگر mkfs.fat). اگر این مقدار حذف شود، mkfs.fat به‌طور خودکار اندازه‌ای برای سیستم‌فایل انتخاب می‌کند که تمام فضای موجود را پر کند.

دو گونهٔ مختلف از سیستم‌فایل FAT پشتیبانی می‌شوند: حالت استاندارد که همان سیستم‌فایل‌های FAT12، FAT16 و FAT32 هستند که توسط مایکروسافت تعریف شده‌اند و به‌طور گسترده روی دیسک‌های سخت و رسانه‌های جداشدنی مانند فلش‌های USB و کارت‌های SD استفاده می‌شوند. گونهٔ دیگر، نوع قدیمی آتاری (Atari) است که در رایانه‌های Atari ST استفاده می‌شد.

در حالت آتاری، در صورتی که کاربر خلاف آن را مشخص نکرده باشد، mkfs.fat همیشه ۲ سکتور در هر کلاستر در نظر می‌گیرد، زیرا GEMDOS مقادیر دیگر را به خوبی نمی‌پذیرد. همچنین این ابزار حداکثر تعداد سکتورهایی را که GEMDOS می‌تواند مدیریت کند رعایت می‌نماید. سیستم‌فایل‌های بزرگ‌تر با افزایش اندازه سکتور منطقی مدیریت می‌شوند. یک شماره‌سریال سازگار با آتاری برای سیستم‌فایل تولید می‌شود، و FAT نوع ۱۲ بیتی تنها برای سیستم‌فایل‌هایی با اندازه معمول دیسک فلاپی (720k، 1.2M، 1.44M، 2.88M) استفاده می‌شود و در غیر این صورت FAT نوع ۱۶ بیتی به کار می‌رود. این رفتار را می‌توان با استفاده از گزینه -F تغییر داد. برخی از فیلدهای سکتور راه‌انداز مختص PC نوشته نمی‌شوند و پیام بوت (گزینه -m) نادیده گرفته می‌شود.

به‌طور معمول، برای هر سیستم‌فایلی به جز سیستم‌فایل‌های بسیار کوچک، mkfs.fat تمامی ساختارهای داده را با اندازه کلاستر تراز (هم‌خط) می‌کند تا مطمئن شود مادامی که پارتیشن به درستی تراز شده است، تمامی ساختارهای داده در سیستم‌فایل نیز تراز خواهند بود. این گزینه ترازسازی را غیرفعال می‌کند؛ این کار ممکن است چند کلاستر فضای ذخیره‌سازی بیشتر فراهم کند، اما به قیمت افت عملکرد قابل‌توجه در آرایه‌های RAID، رسانه‌های فلش یا دیسک‌های سخت با سکتورهای بزرگ تمام می‌شود.
استفاده از گونهٔ آتاری سیستم‌فایل FAT را انتخاب می‌کند اگر قبلاً فعال نشده باشد، در غیر این صورت سیستم‌فایل استاندارد FAT انتخاب می‌شود. اگر mkfs.fat روی لینوکس Atari 68k اجرا شود، این گزینه به‌طور پیش‌فرض فعال است.
محل سکتور راه‌انداز پشتیبان (backup boot sector) را برای FAT32 مشخص می‌کند. مقدار پیش‌فرض به تعداد سکتورهای رزروشده بستگی دارد، اما معمولاً سکتور شماره ۶ است. اگر فضای خالی پس از سکتور راه‌انداز پشتیبان وجود داشته باشد، پشتیبان سکتور اطلاعات FAT32 (info sector) پس از سکتور راه‌انداز پشتیبان، معمولاً در سکتور شماره ۷ قرار می‌گیرد. سکتور پشتیبان باید در محدوده سکتورهای رزروشده باشد. مقدار 0 ایجاد سکتورهای پشتیبان راه‌انداز و اطلاعات FAT32 را به‌طور کامل غیرفعال می‌کند.
پیش از ساخت سیستم‌فایل، دستگاه را برای وجود بلاک‌های خراب (bad blocks) بررسی می‌کند.
فایل مشخص‌شده به عنوان DEVICE در خط فرمان را ایجاد کرده و سیستم‌فایل جدید را درون آن می‌نویسد. این گزینه می‌تواند برای ساخت یک سیستم‌فایل درون یک فایل به جای یک دستگاه فیزیکی واقعی، و جلوگیری از نیاز به استفاده قبلی از دستور dd جهت ایجاد یک فایل با اندازه مناسب استفاده شود. با این گزینه، باید BLOCK-COUNT ارائه شود، زیرا در غیر این صورت اندازه مورد نظر سیستم‌فایل مشخص نخواهد بود. فایل ایجادشده از نوع تُنُک (sparse file) است که در عمل تنها شامل نواحی متاداده (سکتور راه‌انداز، جدول‌های FAT و دایرکتوری ریشه) می‌باشد. بخش‌های داده روی دیسک ذخیره نمی‌شوند، اما با این وجود فایل دارای اندازه صحیح خواهد بود. فایل حاصل را می‌توان بعداً روی یک دیسک فلاپی یا دستگاه دیگر کپی کرد، یا از طریق یک دستگاه لوپ (loop device) آن را سوار (mount) نمود.
شماره درایو BIOS را برای ذخیره در سکتور راه‌انداز FAT مشخص می‌کند. برای دیسک‌های سخت و رسانه‌های جداشدنی این مقدار معمولاً ‎0x80–0xFF است (‎0x80 دیسک سخت اول ‎:C، ‏‎0x81 دیسک سخت دوم ‎:D و...)، و برای دستگاه‌های فلاپی یا پارتیشن‌هایی که برای شبیه‌سازی فلاپی استفاده می‌شوند ‎0x00–0x7F است (‎0x00 فلاپی اول ‎:A، ‏‎0x01 فلاپی دوم ‎:B).
تعداد جدول‌های تخصیص فایل (FAT) را در سیستم‌فایل مشخص می‌کند. مقدار پیش‌فرض ۲ است.
نوع جدول‌های تخصیص فایل مورداستفاده را مشخص می‌کند (۱۲، ۱۶ یا ۳۲ بیتی). اگر مقداری تعیین نشود، mkfs.fat به‌طور خودکار بین ۱۲، ۱۶ و ۳۲ بیتی هرکدام را که با اندازه سیستم‌فایل سازگارتر باشد انتخاب خواهد کرد.
تعداد هدها (HEADS) و تعداد سکتورها در هر شیار (SECTORS-PER-TRACK) را که نشان‌دهنده هندسه دیسکِ DEVICE است مشخص می‌کند. هر دو عدد در سکتور راه‌انداز FAT ذخیره می‌شوند. تعداد سکتورها در هر شیار برای تراز کردن تعداد کل سکتورهای FAT نیز استفاده می‌شود. به‌طور پیش‌فرض، هندسه دیسک از خود DEVICE خوانده می‌شود. اگر در دسترس نباشد، از LBA-Assist Translation و جدول تبدیلِ SD Card Part 2 File System Specification بر اساس تعداد کل سکتورهای دیسک استفاده می‌شود.
تعداد سکتورهای موسوم به «سکتورهای مخفی» (hidden sectors) را جهت ذخیره در سکتور راه‌انداز FAT مشخص می‌کند: این عدد نشان‌دهنده سکتور شروع پارتیشنِ دربردارندهٔ سیستم‌فایل است. معمولاً این مقدار یک آفست (بر حسب سکتور) نسبت به ابتدای دیسک است؛ اگرچه برای حجم‌های منطقی MBR واقع در یک پارتیشن گسترش‌یافته از نوع 0x05 (یک پارتیشن گسترش‌یافته غیر LBA)، رفتار خاص پیاده‌سازی FAT در MS-DOS ایجاب می‌کند که این آفست نسبت به رکورد راه‌انداز گسترش‌یافته (Extended Boot Record) بلافاصله‌ای که پارتیشن را دربردارد باشد. کد راه‌انداز و سایر نرم‌افزارهای مدیریت حجم‌های FAT ممکن است به مقداردهی صحیح این فیلد وابسته باشند؛ با این حال اکثر پیاده‌سازی‌های امروزی FAT آن را نادیده می‌گیرند. به‌طور پیش‌فرض، اگر DEVICE یک دستگاه بلاک پارتیشن باشد، mkfs.fat از آفست پارتیشن نسبت به ابتدای دیسک استفاده می‌کند. در غیر این صورت، mkfs.fat مقدار صفر را در نظر می‌گیرد. از این گزینه برای بازنویسی و تغییر این رفتار پیش‌فرض استفاده کنید.
شناسه حجم (Volume ID) سیستم‌فایل جدید را تنظیم می‌کند؛ VOLUME-ID یک عدد هگزادسیمال ۳۲ بیتی است (برای مثال 2e24ec82). مقدار پیش‌فرض عددی است که به زمان ساخت سیستم‌فایل بستگی دارد.
بررسی‌های ایمنی را نادیده گرفته و غیرفعال می‌کند. به‌طور پیش‌فرض mkfs.fat از ساخت سیستم‌فایل روی دستگاهی که دارای پارتیشن یا نگاشت مجازی است خودداری می‌کند. در این حالت mkfs.fat خطا داده و اعلام می‌کند که از انجام کار خودداری می‌کند. اما وضعیت در هنگام استفاده از دیسک‌های نوری-مغناطیسی (MO) متفاوت است؛ در دیسک‌های MO همیشه نیازی به پارتیشن‌بندی نیست و سیستم‌فایل می‌تواند مستقیماً روی کل دیسک قرار گیرد. در سایر سیستم‌عامل‌ها این قالب با نام فرمت سوپرفلاپی (superfloppy) شناخته می‌شود. این سوییچ mkfs.fat را وادار می‌کند تا بدون توقف و به درستی کار کند.
لیست بلاک‌های خراب را از فایل FILENAME می‌خواند.
پیامی را تنظیم می‌کند که کاربر در صورت تلاش برای راه‌اندازی (بوت) این سیستم‌فایل بدون نصب صحیح سیستم‌عامل دریافت می‌کند. حجم فایل پیام پس از تبدیل خطوط جدید (LF) به ترکیب خط جدید و بازگشت مکان‌نما (CR-LF) و باز کردن تب‌ها (tabs) نباید از ۴۱۸ بایت تجاوز کند. اگر نام فایل خط تیره (-) باشد، متن از ورودی استاندارد خوانده می‌شود.
نوع رسانه (media type) را برای ذخیره در سکتور راه‌انداز FAT مشخص می‌کند. این مقدار معمولاً برای دیسک‌های سخت برابر 0xF8 است و برای دیسک‌های فلاپی یا پارتیشن‌هایی که برای شبیه‌سازی فلاپی به کار می‌روند، برابر 0xF0 یا مقداری بین 0xF9 تا 0xFF است.
جدول MBR (جعلی) را همراه با امضای دیسک و یک پارتیشن پر می‌کند که از سکتور ۰ آغاز می‌شود (شامل خود MBR) و کل فضای دستگاه دیسک را در بر می‌گیرد. این کار فقط برای دیسک‌های غیرقابل‌حمل (ثابت) در سیستم‌های مایکروسافت ویندوز و فقط در زمان فرمت کردن کل دیسکِ بدون پارتیشن لازم است. محل قرارگیری امضای دیسک و جدول پارتیشن با انتهای نخستین سکتور FAT (محل کد راه‌انداز) هم‌پوشانی دارد، بنابراین فضای ذخیره‌سازی اضافی مصرف نمی‌شود. حالت پیش‌فرض auto است که در آن mkfs.fat تنها برای دیسک‌های غیرقابل‌حمل و هنگام فرمت کردن کل دیسک بدون پارتیشن، جدول MBR را قرار می‌دهد.
نام حجم یا همان برچسب (label) سیستم‌فایل را مشخص می‌کند. نام حجم می‌تواند حداکثر ۱۱ کاراکتر طول داشته باشد. ارائه یک رشته خالی، رشته‌ای متشکل از فاصله‌های خالی یا رشتهٔ "NO NAME" به عنوان VOLUME-NAME همان اثری را دارد که مشخص نکردن گزینه -n خواهد داشت. حالت پیش‌فرض بدون برچسب است.
از کدپیج داس PAGE برای کدگذاری برچسب استفاده می‌کند. به‌طور پیش‌فرض از کدپیج ۸۵۰ استفاده می‌شود.
حداقل تعداد مدخل‌های موجود در دایرکتوری ریشه را تعیین می‌کند. مقدار پیش‌فرض ۱۱۲ یا ۲۲۴ برای فلاپی‌ها و ۵۱۲ برای دیسک‌های سخت است. توجه داشته باشید که این مقدار حداقل تعداد است و ممکن است توسط mkfs.fat به دلیل ترازسازی ساختارها افزایش یابد. همچنین گزینه -a از دستور mkfs.fat را ببینید.
حداقل تعداد سکتورهای رزروشده را تعیین می‌کند. در قالب FAT32 حداقل به ۲ سکتور رزروشده نیاز است که پیش‌فرض آن ۳۲ سکتور می‌باشد. در غیر این صورت پیش‌فرض ۱ سکتور است (تنها سکتور راه‌انداز). توجه داشته باشید که این مقدار حداقل تعداد است و ممکن است توسط mkfs.fat به دلیل ترازسازی ساختارها افزایش یابد. همچنین گزینه -a از دستور mkfs.fat را ببینید.
تعداد سکتورهای دیسک در هر کلاستر را مشخص می‌کند. این مقدار باید توانی از عدد ۲ باشد؛ یعنی ۱، ۲، ۴، ۸، ... ۱۲۸.
تعداد بایت‌ها در هر سکتور منطقی را مشخص می‌کند. این عدد باید توانی از ۲ و بزرگ‌تر یا مساوی ۵۱۲ باشد؛ یعنی ۵۱۲، ۱۰۲۴، ۲۰۴۸، ۴۰۹۶، ۸۱۹۲، ۱۶۳۸۴ یا ۳۲۷۶۸. مقادیر بزرگ‌تر از ۴۰۹۶ با مشخصات سیستم‌فایل FAT سازگار نبوده و ممکن است در همه جا به درستی کار نکنند.
اجرا همراه با نمایش جزئیات کامل خروجی (Verbose).
سیستم‌فایل را در یک سکتور مشخص درون فایل دستگاه می‌نویسد. این گزینه برای ایجاد سیستم‌فایل درون یک فایل تصویر دیسک پارتیشن‌بندی‌شده، بدون نیاز به راه‌اندازی یک دستگاه لوپ (loop device) مفید است.
سیستم‌فایل را بر اساس گونهٔ TYPE ایجاد می‌کند. مقادیر مجاز عبارتند از standard و atari (با هر ترکیبی از حروف کوچک و بزرگ). برای مشاهده تفاوت‌ها، بخش «توضیحات» در بالا را مشاهده کنید.
نمایش خلاصه‌ای از گزینه‌ها و خروج.
استفاده از مقادیر ثابت به جای داده‌های تصادفی یا مبتنی بر زمان (مانند شناسه حجم و زمان ایجاد). اجرای چندبارهٔ mkfs.fat روی یک دستگاه با این گزینه خروجی‌های کاملاً یکسانی تولید می‌کند. هدف اصلی این گزینه آزمایش و تست ابزار mkfs.fat است.

دستور mkfs.fat نمی‌تواند سیستم‌فایل‌های قابل راه‌اندازی (bootable) بسازد. این کار بنا به دلایل متعددی آن‌طور که در نگاه اول به نظر می‌رسد ساده نیست و پیش‌تر بحث‌های زیادی درباره آن انجام شده است. دستور mkfs.fat از این ویژگی پشتیبانی نمی‌کند ;)

fatlabel(8), fsck.fat(8)

صفحه اصلی پروژه dosfstools در گیت‌هاب قرار دارد: صفحه پروژه در گیت‌هاب.

مجموعه dosfstools توسط Werner Almesberger، Roman Hodek و دیگران نوشته شده است. نگه‌دارنده‌های فعلی عبارتند از: Andreas Bombe و Pali Rohár.

مه ۲۰۲۵ dosfstools