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

udflabel — نمایش یا تغییر برچسب سیستم فایل UDF

udflabel [encoding-options] [block-options] [identifier-options] device [new-label]

هنگامی که udflabel بدون identifier-options و بدون مشخص کردن new-label فراخوانی شود، برچسب فعلی سیستم فایل UDF روی device را در خروجی استاندارد چاپ می‌کند که با یک خط جدید پایان می‌یابد. در غیر این صورت، سیستم فایل UDF (تا بازبینی 2.60) روی device را با شناسه‌های جدید مشخص‌شده از طریق identifier-options به‌روزرسانی می‌کند. مشخص کردن new-label معادل هم‌زمان گزینه‌های --lvid و --vid است؛ به بخش برچسب UDF و شناسه یکتا (UDF LABEL AND UUID) مراجعه کنید.

نمایش راهنمای استفاده و فهرست گزینه‌ها.

مشخص کردن اندازه بلوک‌ها به بایت. اندازه بلوک معتبر برای سیستم فایل UDF توانی از دو در محدوده 512 تا 32768 است و باید با اندازه منطقی (سکتور) دستگاه مطابقت داشته باشد. در صورت حذف این گزینه، udflabel تلاش می‌کند اندازه بلوک را به صورت خودکار شناسایی کند. ابتدا اندازه منطقی (سکتور) و سپس تمامی اندازه‌های بلوک معتبر را بررسی می‌کند.
مشخص کردن مکان بلوکی که سیستم فایل UDF از آنجا شروع می‌شود. این گزینه برای محاسبه مکان بلوک دنباله شناسایی دیسک (Volume Recognition Sequence ‏- ۳۲ کیلوبایت پس از بلوک شروع) و اولین اشاره‌گر توصیف‌گر لنگر دیسک (Anchor Volume Descriptor Pointer ‏- ۲۵۶ بلوک پس از بلوک شروع) استفاده می‌شود.

به طور معمول بلوک شروع 0 است، اما برای دیسک‌های نوری چندنشستی (Multisession UDF) مکان بلوکی است که آخرین نشست دیسک از آنجا آغاز می‌شود.

در صورت عدم مشخص کردن، udflabel برای دیسک‌های نوری تلاش می‌کند بلوک شروع آخرین نشست را از جدول محتویات (Table Of Contents) دیسک تشخیص دهد. در غیر این صورت مقدار 0 استفاده می‌شود.

برای دسترسی به نشست‌های قبلی دیسک نوری Multisession UDF، مشخص کردن بلوک صحیح شروع آن نشست قبلی الزامی است. همچنین باید از طریق گزینه --lastblock پایان آن نشست مشخص شود.

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

(این گزینه از نسخه 2.3 udflabel در دسترس است)

مشخص کردن مکان بلوکی که سیستم فایل UDF در آن به پایان می‌رسد. این گزینه برای محاسبه مکان بلوک دومین و سومین اشاره‌گر توصیف‌گر لنگر دیسک (۲۵۶ بلوک قبل از بلوک پایانی و خود بلوک پایانی) استفاده می‌شود.

به طور معمول بلوک پایانی برابر با تعداد بلوک‌های دیسک منهای یک است، اما برای دیسک‌های نوری چندنشستی هنگام خواندن نشستی غیر از آخرین نشست (مشخص‌شده با --startblock)، مکان بلوکی است که نشست مشخص‌شده در آن به پایان می‌رسد.

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

برای دسترسی به نشست قبلی دیسک نوری Multisession UDF، تعیین مقادیر صحیح برای هر دو گزینه --startblock و --lastblock الزامی است.

(این گزینه از نسخه 2.3 udflabel در دسترس است)

مشخص کردن مکان بلوک جدول تخصیص مجازی (Virtual Allocation Table). جدول تخصیص مجازی فقط در دیسک‌های UDF با نگاشت پارتیشن مجازی وجود دارد و باید در آخرین بلوک نوشته/ضبط‌شده دیسک قرار داشته باشد.

در صورت عدم مشخص کردن، udflabel برای دیسک‌های نوری تلاش می‌کند آخرین بلوک ضبط‌شده را شناسایی کند و در صورت عدم موفقیت، از آخرین بلوک دستگاه بلوکی یا فایل ایمیج دیسک یا بلوک مشخص‌شده با --lastblock استفاده می‌کند. در بیشتر موارد، این جایگزینی لزوماً کار نمی‌کند و برای ایمیج‌های فایل دیسک دارای جدول تخصیص مجازی لازم است مکان صحیح به صورت دستی مشخص شود.

جدول تخصیص مجازی شامل شناسه دیسک منطقی (برچسب UDF) است.

اجبار به به‌روزرسانی دیسک‌های UDF بدون پشتیبانی از نوشتن یا دیسک‌های محافظت‌شده در برابر نوشتن. برخی دیسک‌های UDF ممکن است فلگ محافظت در برابر نوشتن را فعال کرده باشند. برخی رسانه‌ها مانند CD-ROM، DVD-ROM یا BD-ROM فقط‌خواندنی هستند. رسانه‌های دیگر مانند CD-RW یا DVD-RW یک‌بار‌نوشتنی (write-once) هستند. UDF همچنین برای چنین رسانه‌هایی طراحی شده است که در آن‌ها به‌روزرسانی برچسب یا شناسه‌ها ممکن نیست. اما در موارد نادری، ممکن است تلاش برای بازنویسی برچسب یا شناسه‌های موجود برای سیستم فایل UDF با نوع دسترسی فقط‌خواندنی یا قابل ضبط منطقی باشد. این کار تنها در صورتی ممکن است که رسانه زیرین از بازنویسی پشتیبانی کند؛ مانند ایمیج UDF از یک CD-ROM ذخیره‌شده روی دیسک سخت، یا ایمیج UDF فقط‌خواندنی رایت‌شده روی دیسک‌های DVD-RAM یا BD-RE. گزینه --force نوع دسترسی UDF را نادیده گرفته و با آن مانند قابل بازنویسی (Overwritable) رفتار می‌کند. همچنین فلگ‌های SoftWriteProtect و HardWriteProtected مربوط به UDF را نادیده می‌گیرد.
عدم نوشتن واقعی روی device. صرفاً شبیه‌سازی و نمایش آنچه روی device رخ خواهد داد. برای تعیین اینکه کدام بلوک‌های UDF بازنویسی می‌شوند مفید است.

مشخص کردن uuid سیستم فایل UDF. باید دقیقاً شامل ۱۶ رقم هگزادسیمال با حروف کوچک باشد و برای ۱۶ کاراکتر اول گزینه --fullvsid استفاده می‌شود. مقدار ویژه random یک uuid جدید بر اساس زمان محلی و یک عدد تصادفی تولید می‌کند. به بخش برچسب UDF و شناسه یکتا (UDF LABEL AND UUID) مراجعه کنید.
مشخص کردن شناسه جدید دیسک منطقی (Logical Volume Identifier).
مشخص کردن شناسه جدید دیسک (Volume Identifier).
مشخص کردن کاراکترهای ۱۷ تا ۱۲۷ شناسه مجموعه دیسک (Volume Set Identifier). به بخش برچسب UDF و شناسه یکتا (UDF LABEL AND UUID) مراجعه کنید.
مشخص کردن شناسه جدید مجموعه فایل (File Set Identifier).
مشخص کردن شناسه کامل جدید مجموعه دیسک. گزینه‌های قبلی --uuid و --vsid را بازنویسی می‌کند. به بخش برچسب UDF و شناسه یکتا (UDF LABEL AND UUID) مراجعه کنید.
مشخص کردن نام مالک جدید، فردی که رسانه یا سیستم فایل را ایجاد کرده است. این مقدار در UDF Logical Volume Info1، بخشی از توصیف‌گر دیسک کاربرد پیاده‌سازی UDF ذخیره می‌شود. (در دسترس از نسخه 2.3 udflabel)
مشخص کردن نام سازمان جدید مسئول ایجاد رسانه یا سیستم فایل. این مقدار در UDF Logical Volume Info2، بخشی از توصیف‌گر دیسک کاربرد پیاده‌سازی UDF ذخیره می‌شود. (در دسترس از نسخه 2.3 udflabel)
مشخص کردن اطلاعات تماس جدید برای رسانه یا سیستم فایل. این مقدار در UDF Logical Volume Info3، بخشی از توصیف‌گر دیسک کاربرد پیاده‌سازی UDF ذخیره می‌شود. (در دسترس از نسخه 2.3 udflabel)
مشخص کردن شناسه برنامه کاربردی جدید که برنامه‌سازنده رسانه یا سیستم فایل را معرفی می‌کند. در توصیف‌گر اولیه دیسک UDF ذخیره می‌شود. این شناسه می‌تواند خالی باشد یا باید با * شروع شده و فقط شامل نویسه‌های 7-bit ASCII باشد. (در دسترس از نسخه 2.3 udflabel)
مشخص کردن شناسه توسعه‌دهنده جدید برای شناسه پیاده‌سازی (Implementation Identifier). این شناسه یکتای پیاده‌سازی است که رسانه یا سیستم فایل را ساخته است. در توصیف‌گر اولیه دیسک UDF ذخیره می‌شود. این شناسه باید با * شروع شده و فقط شامل نویسه‌های 7-bit ASCII باشد. (در دسترس از نسخه 2.3 udflabel)

رفتار با گزینه‌های رشته‌ای شناسه به عنوان رشته‌های کدگذاری‌شده طبق تنظیمات محلی (locale) فعلی (پیش‌فرض). باید به عنوان اولین آرگومان مشخص شود.
رفتار با گزینه‌های رشته‌ای شناسه به عنوان رشته‌های کدگذاری‌شده در قالب یونیکد فشرده OSTA هشت بیتی بدون بایت فشرده‌سازی ابتدایی، که معادل Latin1 (ISO-8859-1) است. باید به عنوان اولین آرگومان مشخص شود.
رفتار با گزینه‌های رشته‌ای شناسه به عنوان رشته‌های کدگذاری‌شده در قالب یونیکد فشرده OSTA شانزده بیتی بدون بایت فشرده‌سازی ابتدایی، که معادل UTF-16BE است. توجه داشته باشید که گنجاندن بایت صفر در گزینه‌های خط فرمان ممکن نیست، بنابراین هر نویسه‌ای که حداقل یک بایت صفر داشته باشد نمی‌تواند ارائه شود (این مورد شامل تمام نویسه‌های Latin1 می‌شود). باید به عنوان اولین آرگومان مشخص شود.
رفتار با گزینه‌های رشته‌ای شناسه به عنوان رشته‌های کدگذاری‌شده با UTF-8. باید به عنوان اولین آرگومان مشخص شود.

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

مشخصات UDF بر خلاف سایر سیستم‌های فایل مفهومی به نام UUID دیسک ندارد. اما الزام می‌کند که ۱۶ نویسه اول شناسه مجموعه دیسک UDF (UDF Volume Set Identifier) یکتا، غیرثابت و غیربدیهی باشد. علاوه بر این، هشت نویسه اول ارقام هگزادسیمال هستند. برنامه ویندوزی format.exe و برنامه مکینتاش newfs_udf مشهور به نقض این الزامات هستند و تنها ۸ نویسه اول را یکتا تعیین می‌کنند (بقیه ثابت هستند). از آنجا که هنوز پیاده‌سازی‌های زیادی از UDF وجود دارند که در ۱۶ نویسه اول فقط از ارقام هگزادسیمال استفاده می‌کنند و تمام پیاده‌سازی‌های منطبق بر استاندارد UDF دارای ارقام هگزادسیمال در ۸ نویسه اول هستند، الگوریتم زیر برای تولید UUID پایدار به صورت غیررسمی انتخاب شده و اکنون توسط udftools، util-linux، grub2 و سایر پروژه‌ها استفاده می‌شود:

0. اگر شناسه مجموعه دیسک کمتر از ۸ نویسه دارد، با یک UUID خالی متوقف شو.
1. دریافت ۱۶ بایت اول از رشته کدگذاری‌شده UTF-8 شناسه مجموعه دیسک.
2. اگر تمام بایت‌ها ارقام هگزادسیمال هستند، استفاده از فرم حروف کوچک آن‌ها به عنوان UUID.
3. اگر ۸ بایت اول همگی ارقام هگزادسیمال نیستند، تبدیل آن ۸ بایت به نمایش هگزادسیمال آن‌ها (حاصل ۱۶ بایت) و استفاده به عنوان UUID.
4. در غیر این صورت، ترکیب UUID از دو بخش ۸ بایتی:
بخش 1: استفاده از حالت حروف کوچک ۸ بایت اول (که ارقام هگزادسیمال هستند).
بخش 2: تبدیل ۴ بایت بعدی (موقعیت‌های ۹ تا ۱۲) به نمایش هگزادسیمال آن‌ها.

این بدان معناست که این UUID تولیدشده همیشه ۱۶ رقم هگزادسیمال با حروف کوچک دارد. در بیشتر موارد، این UUID بدون حساسیت به حروف کوچک و بزرگ با ۱۶ نویسه اول شناسه مجموعه دیسک UDF مطابقت دارد و برای تمام دیسک‌های سازگار با استاندارد UDF، هشت بایت اول UUID بدون حساسیت به حروف کوچک و بزرگ با ۸ نویسه اول شناسه مجموعه دیسک مطابقت دارد. در این الگوریتم کدگذاری UTF-8 انتخاب شد زیرا تنها تبدیل رایج یونیکد به بایت با نقاط ثابت در تمام ارقام هگزادسیمال است.

دستور udflabel در صورت موفقیت مقدار 0 و در صورت بروز مشکلاتی نظیر عدم وجود سیستم فایل UDF روی دستگاه یا شکست به‌روزرسانی، مقداری غیرصفر برمی‌گرداند.

دستور udflabel قادر به تنظیم برچسب جدید، شناسه دیسک منطقی و شناسه مجموعه فایل برای دیسک‌های دارای جدول تخصیص مجازی (مورد استفاده در رسانه‌های یک‌بار‌نوشتنی) نیست.

دستور udflabel قبل از نسخه 2.3 قادر به مدیریت صحیح دیسک‌های Multisession UDF نبود. همیشه فقط به اولین نشست (قدیمی‌ترین) دسترسی داشت و به آخرین نشست (جدیدترین) دسترسی پیدا نمی‌کرد.

دستور udflabel قبل از نسخه 2.2 قادر به چاپ و پردازش صحیح رشته‌های یونیکد با کدهای بالاتر از U+FFFF نبود. هنگامی که گزینه --utf8 مشخص می‌شد رشته‌های ورودی به توالی‌های ۳ بایتی UTF-8 محدود می‌شدند و زمانی که گزینه --u16 مشخص می‌شد رشته‌های ورودی تنها به رشته‌های UCS-2BE (زیرمجموعه UTF-16BE) محدود بودند.

دستور udflabel قبل از نسخه 2.2 فلگ‌های SoftWriteProtect و HardWriteProtected مربوط به UDF را نادیده می‌گرفت و بدون هیچ هشداری چنین دیسک‌هایی را بازنویسی می‌کرد.

دستور udflabel قبل از نسخه 2.2 قادر به تنظیم برچسب جدید، شناسه دیسک منطقی و شناسه مجموعه فایل برای دیسک‌های دارای پارتیشن فراداده (Metadata Partition - مورد استفاده در بازبینی‌های UDF بالاتر از 2.01) نبود.

دستور udflabel قبل از نسخه 2.1 در صورتی که دیسک دارای جدول تخصیص مجازی ذخیره‌شده در خارج از بلوک کنترل اطلاعات بود، قادر به خواندن صحیح برچسب نبود.

Pali Rohár <pali.rohar@gmail.com>

ابزار udflabel از نسخه 2.0 بخشی از بسته udftools است و از نشانی https://github.com/pali/udftools در دسترس می‌باشد.

mkudffs(8), pktsetup(8), cdrwtool(1), udfinfo(1), wrudf(1)

udftools Commands