Bash Script для форматирования блочного устройства (жесткий диск или флэш -диск) в UDF. Вывод - это диск, который можно использовать для чтения/написания в нескольких семействах операционной системы: Windows, MacOS и Linux. Этот сценарий должен быть способен работать в MacOS или в Linux.
Для продвинутого пользователя Format-UDF также способен форматировать единый существующий раздел, не изменяя таблицу раздела. Остерегайтесь, что использование этого метода сделает недавно отформатированный раздел UDF непригодным для MacOS (но все же используется для Linux и Windows). (См. № 24 для предостережения.) Из -за этого ограничения рекомендация состоит в том, чтобы отформатировать все устройство.
Format-UDF был создан для устранения некоторых причуд, специфичных для ОС, которые предотвращают наивно форматированное устройство 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 | ||
| MacOS 10.12+ | ||
| Linux 2.6+, 3.x | UDF Revisions 2.01 и прежде чем прочитать/написать. После UDF Revision 2.01, только для чтения. | |
| AIX 5.2, 5.3, 6.1 | ||
| Beos, Magnussoft Zeta, Haiku | ||
| Dosbox | ||
| Ecomstation, OS/2 | Дополнительные водители на ОС/2 | |
| NetBSD 5.0 | ||
| Solaris 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). В эту таблицу накладываются результаты результатов сообщества Format-UDF. (Особая спасибо @pali за тестирование на XP.)
| Размер / ОС | 512-байтовый уроженец | 512 эмуляция (Aka "512e") | 4K уроженец (Aka "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, Сервер 2012 | Поддерживается; Вероятно, работает, но не проверен | Поддерживается; Вероятно, работает, но не проверен | Поддерживается; Вероятно, работает, но не проверен |
| Windows 8.1, Сервер 2012 R2 | Поддерживается; Вероятно, работает, но не проверен | Не поддерживается | Не поддерживается |
| Windows 10, Сервер 2016 | Поддерживается; Вероятно, работает, но не проверен | Не поддерживается | Поддерживается; Вероятно, работает, но не проверен |
Если вы провели тестирование и хотели бы обновить эту таблицу, чтобы принести пользу будущим пользователям Format-UDF, отправьте запрос на привлечение. Пожалуйста, укажите ссылку на свои необработанные данные или результаты тестирования.
printfxxdblockdev , ioregblockdev , diskutillsblk diskutilumount , diskutilmkudffs , newfs_udfЧтобы установить необходимые предпосылки на Ubuntu:
sudo apt-get install udftools coreutils vim-common
Format-UDF-это автономный сценарий. Просто скопируйте формат-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"
На 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.
На 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.
Если чрезвычайно важно, что формат-UDF использует правильный размер блока при форматировании вашего диска. Format-UDF попытается обнаружить и использовать правильный (логический) размер блока. Если вы знаете, что вы делаете, опция Format -UDF -b BLOCK_SIZE может использоваться для явного переопределения значения обнаруженного размера блока.
Если при форматировании используется неправильный размер блока (то есть один, который не соответствует логическому размеру блока вашего диска), результирующий диск, вероятно, будет иметь проблемы с совместимостью с ОС и страдать от не оптимальных проблем с производительностью.
Точно так же важно, чтобы результирующий диск был установлен с помощью правильного размера блока. Многие операционные системы будут предпринять только один размер блока (обычно, что утилита, по умолчанию по умолчанию). Например, чтобы установить устройство UDF, Windows, кажется, требует, чтобы файловая система UDF использовала размер блока, равный логическому размеру блока. Если ваш размер блока не является по умолчанию ОС, то автоматическое монтаж, вероятно, не будет работать на вашей ОС. В то время как небольшая неприятность, попытки монтажа ручного монтажа все равно должны быть успешными для нестандартных размеров блоков.
Пример того, как вручную установить на Linux:
$ mount -t udf -o bs=4096 /dev/sdX /mnt/mount-point
Пример того, как вручную установить на macOS:
$ sudo mount_udf -b 4096 /dev/diskN /Volumes/MountPoint
К сожалению, все, что с размером блока, отличным от 512, не установлено на Windows XP.
Для получения дополнительной информации см. #12, #13, #16 и #31.
Формат UDF имеет максимум 2^32 блоков. С форматом UDF эти блоки равны логическим блокам.
Если ваш диск имеет емкость, превышающую этот максимальный размер, дополнительная емкость не будет использоваться. Это ограничение самого UDF.
Для максимальной совместимости ОС используйте Format-UDF на устройстве, имеющем логический размер блока 512 байтов. Это ограничит вашу общую мощность до 2 TIB, но результирующее устройство должно работать над самыми операционными системами.
Для максимальной результирующей емкости файловой системы UDF используйте Format-UDF на устройстве, имеющем логический размер блока 4096 байтов. Это увеличит вашу общую емкость (с 2 TIB) до 16 TIB, но ограничит количество/типы операционных систем, которые смогут установить/читать/записать результирующее устройство. См. Таблицы совместимости выше для более подробной информации.
Для читаемой на человеке метку устройства используйте Format-UDF в одной из следующих конфигураций:
fdisk , чтобы установить раздел как активный, если ваш BIOS не может загружаться из дисков без разделов. (Спасибо @Tome- за совет.)