Bash Script Untuk memformat perangkat blok (hard drive atau flash drive) di UDF. Outputnya adalah drive yang dapat digunakan untuk membaca/menulis di berbagai keluarga sistem operasi: Windows, MacOS, dan Linux. Script ini harus mampu berjalan dalam macOS atau di Linux.
Untuk pengguna tingkat lanjut, format-UDF juga mampu memformat satu partisi yang ada, tanpa memodifikasi tabel partisi. Waspadalah bahwa menggunakan metode ini akan membuat partisi UDF yang baru diformat tidak dapat digunakan pada macOS (tetapi masih dapat digunakan di Linux dan Windows). (Lihat #24 untuk peringatan.) Karena keterbatasan ini, rekomendasinya adalah untuk memformat seluruh perangkat.
Format-UDF dibuat untuk mengatasi beberapa keanehan khusus OS yang mencegah perangkat UDF yang diformat secara naif bekerja di berbagai sistem operasi. Berikut adalah beberapa faktor rumit, yang format-UDF bertujuan untuk abstrak:
Pada pandangan pertama, kendala ini tampaknya dalam konflik parsial. Solusi, seperti yang disarankan oleh Pieter, adalah menempatkan tabel partisi palsu (melalui MBR) di blok pertama drive, yang mencantumkan satu partisi seluruh disk. Ini berfungsi karena UDF (mungkin sengaja) tidak menggunakan blok pertama. Sayangnya, tidak ada cara mudah untuk melakukan ini, sambil menyulap semua variabel lain (seperti ukuran blok logis perangkat). Format-UDF menulis MBR palsu untuk menambahkan kompatibilitas pada windows. Jika ini bukan yang Anda inginkan, Anda dapat menonaktifkan MBR dengan -p none .
Tujuan dari proyek ini adalah untuk menyediakan akses ke sistem file lintas platform dengan fitur modern , sedemikian rupa sehingga adalah:
Tidak semua sistem operasi mendukung UDF. Tabel berikut ini detail dukungan sistem operasi untuk UDF. Data diadaptasi dari https://en.wikipedia.org/wiki/universal_disk_format#compatibility (sebagaimana diambil pada 2017-06-16).
Keduanya membaca/menulis didukung kecuali sebaliknya terdaftar di bawah ini.
| Sistem Operasi | Hanya baca | Catatan |
|---|---|---|
| Windows XP, Server 2003 | Hanya baca | Tulis dukungan yang tersedia dengan utilitas pihak ketiga |
| Windows Vista, 7, 8, 10 | Disebut oleh Microsoft sebagai "Sistem File Langsung"; Membutuhkan partisi disk penuh palsu | |
| Mac OS 9 | ||
| Mac OS X 10.5 hingga 10.11 | ||
| MacOS 10.12+ | ||
| Linux 2.6+, 3.x | Revisi UDF 2.01 dan sebelum membaca/menulis. Setelah Revisi 2.01 UDF, baca saja. | |
| AIX 5.2, 5.3, 6.1 | ||
| Beos, Magnussoft Zeta, haiku | ||
| Dosbox | ||
| Ecomstation, OS/2 | Driver tambahan di OS/2 | |
| NetBSD 5.0 | ||
| Solaris 8, 9, 10 |
| Sistem Operasi | Catatan |
|---|---|
| Windows 95 OSR2+, 98 | Utilitas termasuk DLA dan INCD |
| Windows 2000, saya |
| Sistem Operasi | Catatan |
|---|---|
| Dos, freedos, windows 3.11 atau lebih | Sistem file yang memiliki struktur kompatibilitas terbelakang ISO9660 dapat dibaca |
Tidak semua sistem operasi mendukung drive 4K (format canggih). Jika sistem operasi Anda mendukung UDF, tetapi bukan drive 4K Anda, Anda mungkin masih mengalami masalah menggunakan format-UDF.
Tabel berikut merinci dukungan windows untuk drive 4K. Data diadaptasi dari kebijakan dukungan Microsoft untuk hard drive sektor 4K di Windows (seperti yang diambil pada 2017-06-16). Disapikan ke dalam tabel ini adalah menguji hasil dari komunitas format-udf. (Terima kasih khusus kepada @pali untuk pengujiannya di xp.)
| Ukuran / Os | 512-byte asli | 512 emulasi (Alias "512e") | 4K asli (Alias "4kn") |
|---|---|---|---|
| Ukuran blok logis | 512 byte | 512 byte | 4096 byte |
| Ukuran blok fisik | 512 byte | 4096 byte | 4096 byte |
| File UDF maksimum kapasitas sistem | 2 tib | 2 tib | 16 tib |
| Windows XP | Didukung; Pekerjaan | Tidak didukung; Tidak berhasil | Tidak didukung; Tidak berhasil |
| Windows XP Pro X64, Server 2003, Server 2003 R2 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Tidak didukung | Tidak didukung |
| Windows Vista, Server 2008 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Didukung; Kemungkinan bekerja tetapi tidak teruji | Tidak didukung |
| Windows 7, Server 2008 R2 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Didukung; Kemungkinan bekerja tetapi tidak teruji | Tidak didukung |
| Windows 8, Server 2012 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Didukung; Kemungkinan bekerja tetapi tidak teruji | Didukung; Kemungkinan bekerja tetapi tidak teruji |
| Windows 8.1, Server 2012 R2 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Tidak didukung | Tidak didukung |
| Windows 10, Server 2016 | Didukung; Kemungkinan bekerja tetapi tidak teruji | Tidak didukung | Didukung; Kemungkinan bekerja tetapi tidak teruji |
Jika Anda telah melakukan pengujian dan ingin memperbarui tabel ini untuk memberi manfaat bagi pengguna format-format di masa depan, silakan kirim permintaan tarik. Harap sertakan tautan ke data mentah atau hasil pengujian Anda.
printfxxdblockdev , ioregblockdev , diskutillsblk , diskutilumount , diskutilmkudffs , newfs_udfUntuk memasang prasyarat yang diperlukan di Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-UDF adalah skrip mandiri. Cukup salin format-udf.sh ke direktori pilihan Anda. Jangan lupa membuatnya dapat dieksekusi:
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"
Di Ubuntu:
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.
Di macOS:
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.
Jika sangat penting bahwa format-UDF menggunakan ukuran blok yang benar saat memformat drive Anda. Format-UDF akan berusaha untuk mendeteksi dan menggunakan ukuran blok yang benar (logis). Jika Anda tahu apa yang Anda lakukan, opsi format -udf -b BLOCK_SIZE dapat digunakan untuk secara eksplisit mengganti nilai ukuran blok yang terdeteksi.
Jika ukuran blok yang salah digunakan saat memformat (yaitu yang tidak cocok dengan ukuran blok logis drive Anda), drive yang dihasilkan kemungkinan akan memiliki masalah kompatibilitas OS dan menderita masalah kinerja yang tidak optimal.
Dengan cara yang sama, sama pentingnya bahwa drive yang dihasilkan dipasang menggunakan ukuran blok yang benar. Banyak sistem operasi hanya akan mencoba satu ukuran blok (biasanya apa pun default utilitas mount). Misalnya, untuk memasang perangkat UDF, Windows tampaknya mengharuskan sistem file UDF menggunakan ukuran blok yang sama dengan ukuran blok logis. Jika ukuran blok Anda bukan default OS, maka pemasangan otomatis kemungkinan tidak akan berfungsi pada OS Anda. Sementara gangguan kecil, upaya pemasangan manual masih harus berhasil untuk ukuran blok tanpa standar.
Contoh cara memasang secara manual di Linux:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
Contoh cara memasang secara manual di macOS:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
Sayangnya, apa pun dengan ukuran blok berbeda dari 512 tampaknya tidak dipasang di Windows XP.
Untuk info lebih lanjut, lihat #12, #13, #16, dan #31.
Format UDF memiliki maksimum 2^32 blok. Dengan format-udf, blok-blok ini sama dengan blok logis.
Jika drive Anda memiliki kapasitas lebih dari ukuran maksimum ini, kapasitas ekstra tidak akan digunakan. Ini adalah batasan UDF itu sendiri.
Untuk kompatibilitas OS maksimal, gunakan format-UDF pada perangkat yang memiliki ukuran blok logis 512 byte. Ini akan membatasi total kapasitas Anda menjadi 2 TIB, tetapi perangkat yang dihasilkan harus bekerja pada sistem yang paling banyak operasi.
Untuk kapasitas sistem file UDF yang dihasilkan maksimal, gunakan format-format pada perangkat yang memiliki ukuran blok logis 4096 byte. Ini akan meningkatkan kapasitas total Anda (dari 2 TIB) menjadi 16 TIB, tetapi akan membatasi jumlah/jenis sistem operasi yang akan dapat memasang/membaca/menulis perangkat yang dihasilkan. Lihat tabel kompatibilitas di atas untuk lebih detail.
Untuk label perangkat yang dapat dibaca manusia, gunakan format-UDF di salah satu konfigurasi berikut:
fdisk untuk mengatur partisi sebagai aktif jika BIOS Anda tidak dapat boot dari drive tanpa partisi. (Terima kasih kepada @tome- untuk tipnya.)