Bash Script لتنسيق جهاز كتلة (محرك أقراص ثابت أو محرك أقراص فلاش) في UDF. الإخراج عبارة عن محرك يمكن استخدامه للقراءة/الكتابة عبر عائلات نظام التشغيل المتعددة: Windows و MacOs و Linux. يجب أن يكون هذا البرنامج النصي قادرًا على التشغيل في MacOS أو في Linux.
بالنسبة للمستخدم المتقدم ، فإن Format-UDF قادر أيضًا على تنسيق قسم واحد موجود ، دون تعديل جدول التقسيم. احذر من أن استخدام هذه الطريقة سيجعل قسم UDF المنسق حديثًا غير قابل للاستخدام على MacOS (ولكن لا يزال قابلاً للاستخدام على Linux و Windows). (انظر #24 للاطلاع على المحاذير.) بسبب هذا القيد ، فإن التوصية هي تنسيق الجهاز بأكمله.
تم إنشاء Format-ODF لمعالجة بعض المراوغات الخاصة بنظام التشغيل التي تمنع جهاز UDF الذي تم تنظيمه بسذاجة من العمل عبر أنظمة التشغيل المختلفة. فيما يلي بعض العوامل المعقدة ، التي تهدف التنسيق-UDF إلى التجريد بعيدًا:
للوهلة الأولى ، يبدو أن هذه القيود في صراع جزئي. الحل ، كما اقترح Pieter ، هو وضع جدول تقسيم مزيف (عبر MBR) في الكتلة الأولى من محرك الأقراص ، والذي يسرد قسمًا واحدًا من القرص الكامل. هذا يعمل لأن UDF (ربما عن قصد) لا يستخدم الكتلة الأولى. لسوء الحظ ، لم تكن هناك طريقة سهلة للقيام بذلك ، في حين تنقل جميع المتغيرات الأخرى (مثل حجم الكتلة المنطقية للجهاز). يكتب Format-UDF مثل هذا MBR مزيف لتوافق إضافي على Windows. إذا لم يكن هذا ما تريده ، فيمكنك تعطيل MBR مع -p none .
الهدف من هذا المشروع هو توفير إمكانية الوصول إلى نظام الملفات عبر المنصات بالميزات الحديثة ، بطريقة:
لا تدعم جميع أنظمة التشغيل UDF. الجداول التالية تفاصيل دعم نظام التشغيل لـ UDF. تم تكييف البيانات من https://en.wikipedia.org/wiki/universal_disk_format#compatibility (كما تم استردادها في 2017-06-16).
يتم دعم كلا القراءة/الكتابة ما لم يتم سردها أدناه.
| نظام التشغيل | قراءة فقط | ملحوظة |
|---|---|---|
| Windows XP ، Server 2003 | قراءة فقط | اكتب الدعم المتاح مع مرافق الطرف الثالث |
| Windows Vista ، 7 ، 8 ، 10 | يشار إليها من قبل Microsoft باسم "نظام الملفات المباشر" ؛ يتطلب تقسيم الخرق الكامل مزيف | |
| Mac OS 9 | ||
| Mac OS X 10.5 إلى 10.11 | ||
| ماكوس 10.12+ | ||
| Linux 2.6+ ، 3.x | مراجعات UDF 2.01 وقبل قراءة/الكتابة. بعد مراجعة UDF 2.01 ، القراءة فقط. | |
| AIX 5.2 ، 5.3 ، 6.1 | ||
| Beos ، Magnussoft Zeta ، Haiku | ||
| Dosbox | ||
| ecomstation ، OS/2 | برامج التشغيل الإضافية على OS/2 | |
| Netbsd 5.0 | ||
| سولاريس 8 ، 9 ، 10 |
| نظام التشغيل | ملحوظة |
|---|---|
| Windows 95 OSR2+، 98 | تشمل المرافق DLA و INCD |
| Windows 2000 ، أنا |
| نظام التشغيل | ملحوظة |
|---|---|
| DOS ، Freedos ، Windows 3.11 أو أكبر | يمكن قراءة أنظمة الملفات التي لديها بنية توافق متخلف ISO9660 |
لا تدعم جميع أنظمة التشغيل محركات 4K (تنسيق متقدم). إذا كنت تدعم نظام التشغيل UDF ، ولكن ليس محرك أقراص 4K ، فقد لا تزال تواجه مشكلات باستخدام Format-UDF.
توضح الجداول التالية دعم Windows لمحركات 4K. تم تكييف البيانات من سياسة دعم Microsoft لمحركات الأقراص الصلبة في قطاع 4K في Windows (كما تم استردادها في 2017-06-16). تراكب في هذا الجدول نتائج اختبار من مجتمع التنسيق. (شكر خاص لـ pali لاختباره على XP.)
| الحجم / نظام التشغيل | 512 بايت مواطن | 512 مضاهاة (ويعرف أيضا باسم "512e") | 4K الأصلي (الملقب "4kn") |
|---|---|---|---|
| حجم الكتلة المنطقية | 512 بايت | 512 بايت | 4096 بايت |
| حجم الكتلة المادية | 512 بايت | 4096 بايت | 4096 بايت |
| أقصى ملف UDF سعة النظام | 2 تيب | 2 تيب | 16 تيب |
| Windows XP | مدعوم يعمل | غير مدعوم لا يعمل | غير مدعوم لا يعمل |
| Windows XP Pro X64 ، خادم 2003 ، خادم 2003 R2 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | غير مدعوم | غير مدعوم |
| Windows Vista ، خادم 2008 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | غير مدعوم |
| Windows 7 ، خادم 2008 R2 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | غير مدعوم |
| Windows 8 ، Server 2012 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها |
| Windows 8.1 ، Server 2012 R2 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | غير مدعوم | غير مدعوم |
| Windows 10 ، خادم 2016 | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها | غير مدعوم | مدعوم من المحتمل أن تعمل ولكن لم يتم تجربتها |
إذا كنت قد أجريت اختبارًا وترغب في تحديث هذا الجدول لصالح مستخدمي المستقبل لـ Format-UDF ، فيرجى إرسال طلب سحب. يرجى تضمين رابط لبياناتك الخام أو نتائج الاختبار.
printfxxdblockdev ، ioregblockdev ، diskutillsblk ، diskutilumount ، diskutilmkudffs ، newfs_udfلتثبيت المتطلبات الضرورية على Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-ADF هو نص مستقل ذاتي. ما عليك سوى نسخ التنسيق-udf.sh إلى دليل من اختيارك. لا تنس أن تجعلها قابلة للتنفيذ:
chmod +x format-udf.sh
Bash script to format a block device (hard drive or Flash drive) in UDF.
The output is a drive that can be used for reading/writing across multiple
operating system families: Windows, macOS, and Linux.
This script should be capable of running in macOS or in Linux.
Usage: ./format-udf.sh [-b BLOCK_SIZE] [-f] [-p PARTITION_TYPE] [-w WIPE_METHOD] device label
./format-udf.sh -v
./format-udf.sh -h
-b BLOCK_SIZE
Block size to be used during format operation.
If absent, defaults to value reported by blockdev/diskutil.
This is an expert-only option. Please consult the README for details.
-f
Forces non-interactive mode. Useful for scripting.
Please use with caution, as no user confirmation is given.
-h
Display help information and exit.
-p PARTITION_TYPE
Partition type to set during format operation.
Currently supported types include: mbr, none
mbr - Master boot record (default)
none - Do not modify partitions
If absent, defaults to 'mbr'.
See also:
https://github.com/JElchison/format-udf#why
-v
Display version information and exit.
-w WIPE_METHOD
Wipe method to be used before format operation.
Currently supported types include: quick, zero, scrub
quick - Quick method (default)
zero - Write zeros to the entire device
scrub - Iteratively writes patterns on device
to make retrieving the data more difficult.
Requires 'scrub' to be executable and in the PATH.
See also http://linux.die.net/man/1/scrub
If absent, defaults to 'quick'.
Note: 'zero' and 'scrub' methods will take a long time.
device
Device to format. Examples:
* /dev/sdx (Linux, where 'x' is a letter) or
* /dev/diskN (macOS, where 'N' is a number)
label
Label to apply to formatted device.
Example: ./format-udf.sh /dev/sdg "My UDF External Drive"
على أوبونتو:
user@computer:~$ ./format-udf.sh /dev/sdg "My UDF External Drive"
[+] Validating arguments...
[+] Testing dependencies...
[+] Looking for drive detail tool... using /sbin/blockdev
[+] Looking for drive listing tool... using /sbin/blockdev
[+] Looking for drive info tool... using /bin/lsblk
[+] Looking for drive summary tool... using /sbin/blkid
[+] Looking for unmount tool... using /bin/umount
[+] Looking for UDF tool... using /usr/sbin/mkudffs
[+] Detecting logical block size...
[sudo] password for user:
[*] Detected logical block size of 512
[+] Validating detected logical block size...
[+] Detecting physical block size...
[*] Detected physical block size of 512
[+] Validating detected physical block size...
[+] Validating file system block size...
[*] Using file system block size of 512
[+] Detecting total size...
[*] Detected total size of 8019509248
[+] Validating detected total size...
[+] Gathering drive information...
/dev/sdg: LABEL="Old Drive" UUID="4843-D1BD" TYPE="vfat"
RO RA SSZ BSZ StartSec Size Device
rw 256 512 512 0 8019509248 /dev/sdg
The above-listed device (and partitions, if any) will be completely erased.
Type 'yes' if this is what you intend: yes
[+] Unmounting device...
umount: /dev/sdg: not mounted
[+] Zeroing out first chunk of device...
4096+0 records in
4096+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.450716 s, 4.7 MB/s
[+] Formatting /dev/sdg ...
filename=/dev/sdg
label=My UDF External Drive
uuid=5e4924cc17b50769
blocksize=512
blocks=15663104
udfrev=2.01
start=0, blocks=64, type=ERASE
start=64, blocks=13, type=VRS
start=77, blocks=19, type=ERASE
start=96, blocks=16, type=MVDS
start=112, blocks=16, type=ERASE
start=128, blocks=16, type=LVID
start=144, blocks=112, type=ERASE
start=256, blocks=1, type=ANCHOR
start=257, blocks=15662590, type=PSPACE
start=15662847, blocks=1, type=ANCHOR
start=15662848, blocks=96, type=ERASE
start=15662944, blocks=16, type=RVDS
start=15662960, blocks=143, type=ERASE
start=15663103, blocks=1, type=ANCHOR
[+] Writing fake MBR...
16+0 records in
16+0 records out
16 bytes copied, 0.0037039 s, 4.3 kB/s
2+0 records in
2+0 records out
2 bytes copied, 3.7193e-05 s, 53.8 kB/s
[+] Successfully formatted /dev/sdg: UUID="5e4924cc17b50769" LABEL="My UDF External Drive" TYPE="udf" PTTYPE="dos"
Please disconnect/reconnect your drive now.
على ماكوس:
computer:~ user$ ./format-udf.sh /dev/disk4 "My UDF External Drive"
[+] Validating arguments...
[+] Testing dependencies...
[+] Looking for drive detail tool... using /usr/sbin/ioreg
[+] Looking for drive listing tool... using /usr/sbin/diskutil
[+] Looking for drive info tool... using /usr/sbin/diskutil
[+] Looking for drive summary tool... using (none)
[+] Looking for unmount tool... using /usr/sbin/diskutil
[+] Looking for UDF tool... using /sbin/newfs_udf
[+] Detecting logical block size...
[*] Detected logical block size of 512
[+] Validating detected logical block size...
[+] Detecting physical block size...
[+] Validating file system block size...
[*] Using file system block size of 512
[+] Detecting total size...
[*] Detected total size of 8019509248
[+] Validating detected total size...
[+] Gathering drive information...
/dev/disk4 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *8.0 GB disk4
1: Windows_FAT_32 Old Drive 8.0 GB disk4s1
The above-listed device (and partitions, if any) will be completely erased.
Type 'yes' if this is what you intend: yes
[+] Unmounting device...
Password:
Unmount of all volumes on disk4 was successful
[+] Zeroing out first chunk of device...
4096+0 records in
4096+0 records out
2097152 bytes transferred in 3.113956 secs (673469 bytes/sec)
[+] Formatting /dev/disk4 ...
write to block device: /dev/disk4 last written block address: 15663103
[+] Writing fake MBR...
16+0 records in
16+0 records out
16 bytes transferred in 0.000615 secs (26021 bytes/sec)
2+0 records in
2+0 records out
2 bytes transferred in 0.000644 secs (3106 bytes/sec)
[+] Successfully formatted
Please disconnect/reconnect your drive now.
إذا كان من المهم للغاية أن يستخدم Format-UDF حجم الكتلة الصحيح عند تنسيق محرك الأقراص. سيحاول Format-ODF اكتشاف حجم الكتلة الصحيح (المنطقي) واستخدامه. إذا كنت تعرف ما تفعله ، فيمكن استخدام خيار Format -ODF -b BLOCK_SIZE لتجاوز قيمة حجم الكتلة المكتشفة صراحة.
إذا تم استخدام حجم الكتلة الخاطئ أثناء التنسيق (أي لا يتطابق مع حجم الكتلة المنطقية لمحرك الأقراص) ، فمن المحتمل أن يكون لدى محرك الأقراص الناتج مشكلات توافق نظام التشغيل ويعاني من مشكلات الأداء غير الأمثل.
بنفس الطريقة ، من المهم تركيب محرك الأقراص الناتج باستخدام حجم الكتلة الصحيح. ستحاول العديد من أنظمة التشغيل فقط حجم كتلة واحدة (عادة ما تتخلف عن سداد الأداة المساعدة). على سبيل المثال ، من أجل تثبيت جهاز UDF ، يبدو أن Windows يتطلب أن يستخدم نظام ملف UDF حجم كتلة مساويًا لحجم الكتلة المنطقية. إذا لم يكن حجم الكتلة الخاص بك هو افتراضي نظام التشغيل ، فمن المحتمل أن يكون التثبيت التلقائي يعمل على نظام التشغيل الخاص بك. في حين أن الإزعاج الصغير ، يجب أن تظل محاولات التثبيت اليدوية تنجح في أحجام الكتل غير القياسية.
مثال على كيفية التركيز يدويًا على Linux:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
مثال على كيفية التركيز يدويًا على ماكوس:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
للأسف ، لا يبدو أن أي شيء بحجم كتلة مختلف عن 512 يتصاعد على نظام التشغيل Windows XP.
لمزيد من المعلومات ، راجع #12 و #13 و #16 و #31.
يتكون تنسيق UDF بحد أقصى 2^32 كتل. مع التنسيق-ADF ، هذه الكتل تعادل الكتل المنطقية.
إذا كان محرك الأقراص الخاص بك يتجاوز هذا الحجم الأقصى ، فلن يتم استخدام السعة الإضافية. هذا هو قيود على UDF نفسها.
للحصول على أقصى قدر من توافق نظام التشغيل ، استخدم Format-UDF على جهاز يحتوي على حجم كتلة منطقي يبلغ 512 بايت. سيؤدي ذلك إلى الحد من إجمالي قدرتك على 2 TIB ، ولكن يجب أن يعمل الجهاز الناتج على أنظمة التشغيل الأكثر.
للحصول على سعة نظام ملفات UDF الأقصى الناتجة ، استخدم استخدام التنسيق على الجهاز الذي يحتوي على حجم كتلة منطقي يبلغ 4096 بايت. سيؤدي ذلك إلى زيادة سعة إجمالي (من 2 TIB) إلى 16 TIB ، ولكنه سيحد من عدد/أنواع أنظمة التشغيل التي ستتمكن من تركيب/قراءة/كتابة الجهاز الناتج. انظر جداول التوافق أعلاه لمزيد من التفاصيل.
بالنسبة لعلامة الجهاز القابلة للقراءة البشرية ، استخدم Format-UDF في أحد التكوينات التالية:
fdisk لتعيين القسم على أنه نشط إذا لم تتمكن BIOS من التمهيد من محركات الأقراص. (بفضل @tome- على النصيحة.)