Использование UDF на USB-накопителе

После того, как вы не смогли скопировать файл размером более 4G на мой USB-накопитель 8G, я отформатировал его как ext3. Пока это работает для меня до сих пор, это вызовет проблемы, если я хочу использовать его для копирования файлов кому-то, кто не использует Linux.

Я думаю о форматировании его как UDF вместо этого, который, я надеюсь, позволит ему читать (и, возможно, даже писать) в трех самых популярных операционных системах (Windows, MacOS и Linux) без необходимости установки каких-либо дополнительных драйверов . Однако, из того, что я нашел в Интернете уже, кажется, есть несколько небольших ошибок, связанных с тем, какие параметры используются для создания файловой системы, что может уменьшить совместимость (но большинство страниц, которые я нашел, касаются оптических носителей, а не флэш-памяти USB диски).

Я бы хотел знать:

  • Какую утилиту я должен использовать для создания файловой системы? (До сих пор я нашел mkudffs и genisoimage , и mkudffs кажется лучшим вариантом.)
  • Какие параметры следует использовать с выбранной утилитой для максимальной совместимости?
  • Насколько совместим с наиболее распространенными версиями этих трех операционных систем UDF на самом деле?
  • Использует ли UDF наилучшую идею? Есть ли еще одна файловая система, которая имела бы лучшую совместимость, без каких-либо проблемных ограничений, таких как ограничение размера файла FAT32 4G, и без необходимости устанавливать специальные драйверы на каждом отдельном компьютере, который ее затрагивает?

Во-первых, я полностью обнулял диск перед созданием файловой системы UDF:

 dd if=/dev/zero of=/dev/sdx bs=512 

Это делается для того, чтобы избежать каких-либо оставшихся суперблоков или других метаданных, которые могли бы смутить обнаружение типов файловой системы операционной системы (требуется, по крайней мере, обнулить первый сектор, чтобы стереть таблицу разделов, первые несколько секторов не используются UDF, а оставшиеся Таблица разделов может действительно путать вещи). Вы также можете использовать переключатель count=1 в команде dd, чтобы более быстро обнулить только первые 512 байт диска (где обычно находится MBR), хотя это не было протестировано.

Чтобы создать файловую систему, я использовал следующую команду:

 mkudffs --media-type=hd --blocksize=512 /dev/sdx 

mkudffs станет доступной на дистрибутивах под управлением Debian (например, Ubuntu) после установки пакета udftools :

 sudo apt-get install udftools 

Блокировка по умолчанию для mkudffs – 2048, что неверно для флэш-накопителя USB (который использует 512-байтовые сектора). Поскольку размер блока используется для поиска метаданных файловой системы, использование неправильного размера блока может заставить его не распознаваться как файловая система UDF (так как якорь не будет там, где ожидает драйвер файловой системы). Обратите внимание, что mkudffs man mkudffs неверна; 512 является допустимым значением для размера блока (и код явно принимает его).

Я также использовал весь диск вместо раздела; Это должно быть более совместимым.

Результат моего тестирования пока:

  • Linux с самым последним ядром (2.6.31, от Ubuntu 9.10): работает.
  • Linux с более старым ядром: нужен вариант bs=512 для mount , поскольку он неправильно использовал 2048 вместо размера сектора устройства (исправлено в commit 1197e4d ).
  • Windows Vista: работает.
  • Совершенно новый Mac: работает.
  • Windows XP: может отлично читать, но при попытке писать дает «доступ запрещен»; Также кажется, что диск заполнен.

Хотя я до сих пор не пытался создать файл размером более 4G, я не вижу причин, почему это не сработает.

Учитывая, что он отлично работает на всех последних операционных системах (нужно только вручную подключаться к Linux, что больше не понадобится, как только Ubuntu 9.10 и Fedora 12), и работал только для чтения в Windows XP (что было неожиданностью Для меня, я ожидал, что он вообще не распознает файловую систему), использование UDF вместо FAT32 или NTFS на больших USB-флеш-накопителях кажется хорошей идеей.

CesarB отлично справился с задачей. Одна вещь, которая не может быть подчеркнута достаточно, – это то, насколько важно использовать правильный размер блока при форматировании UDF.

Вдохновленный записью CesarB (и другими моими исследованиями / тестированием), я написал сценарий для автоматизации процесса форматирования в UDF – используя правильно определенный размер сектора. См. Format-udf в GitHub . Известные особенности:

  • Форматирует блок-диск (жесткий диск или флэш-накопитель) в Universal Disk Format (UDF)
    • Версия 2.0 для UDF, используемая для максимальной совместимости
    • Первые 4096 секторов обнуляются, чтобы стереть любой существующий MBR (необходимый для правильного обнаружения UDF)
  • Результирующая файловая система может быть прочитана / записана в нескольких семействах операционных систем (Windows, OS X и Linux)
  • Работает на любой ОС, имеющей среду Bash

Из-за последней точки этот сценарий, который я написал, не может быть использован в Windows. Однако сценарий будет работать на OS X и Linux. После этого Windows должна иметь возможность волшебным образом обнаружить вновь отформатированный диск UDF.

Чтобы прямо ответить на поставленные вопросы, format-udf будет:

  • Выберите соответствующий инструмент для форматирования на основе операционной системы и среды
  • Автоматически обнаруживать и заполнять все параметры, необходимые для форматирования
  • Увеличить совместимость с ОС (см. Страницу GitHub для диаграммы совместимости)
  • Дают максимальный набор функций (и минимальные ограничения), которые ищущий ищет

Я, кажется, помню, что сделал это, проблема, которую я обнаружил, заключается в том, что версия Linux, которую я установил, только для чтения, поскольку драйвер не был создан для r / w. Он работал в окнах, и я думаю, что мак.

Да, хорошего решения трудно найти. Некоторое время у меня был внешний накопитель с разделом fat32, в котором были драйверы для win и mac, раздел Mac и большой раздел ext3. Это сработало, но это означало установку драйверов. Неприятный трюк был также загрузочным на mac (fw & usb), вам нужно оставить место и сделать несколько заметок, затем вы можете добавлять разделы через командную строку и таблицу разделов Mac.

Мир нуждается в бесплатной, полезной для всех файловой системе. ZFS будет хорошим выбором. 🙂

Pieter Wuille написал инструмент для разбиения и форматирования диска, чтобы сделать макет UDF, который будет совместим с Windows (> = Vista, только для чтения), MacOS X 10.5, Linux 2.6.30+:

  • объяснение
  • Прямая ссылка на скрипт Perl, который использует mkudffs из udftools

NTFS, с NTFS-3G вы можете писать на нем с помощью Linux и взглянуть на http://macntfs-3g.blogspot.com/ для вашего Mac.

Есть драйверы для Windows (и Mac), которые могут обращаться к разделам EXT3, поэтому вы можете отформатировать его на EXT3 и использовать его (с драйверами) повсюду. Другой способ – использовать архиватор для хранения большого файла в двух или более файлах по 4 ГБ каждый. Таким образом, вы можете использовать файловую систему FAT32, которая является универсальной. На главном компьютере вам нужно извлечь архив, чтобы использовать его, но это способ сделать это без драйверов. Используйте архиватор RAR-формата, поскольку он работает на Windows, Linux, Mac, хотя я думаю, что формат ZIP также может работать. Но я бы пошел с водителями. После установки вы можете делать все без ограничений. На ПК я использовал Ext2Fsd для полного доступа EXT2, EXT3 и EXT4 и Macdrive для полного доступа к формату MacOS. Разумеется, аналогичные инструменты существуют для Linux и MacOS, а также для полного доступа к разделам NTFS и т. Д. Если вам нужен только доступ на чтение, вам не нужны никакие драйверы, Linux и MacOS поддерживают чтение разделов NTFS, поэтому отформатируйте USB как NTFS! Если все эти компьютеры находятся в одной сети, все будет проще! Сделайте USB в формате или поделитесь им в сети. У других компьютеров не должно быть проблем с доступом к нему!

  • Почему мой флеш-накопитель стал «только для чтения» и (как) я могу его исправить?
  • Как разместить загрузочный ISO на USB-накопителе?
  • Каков наилучший способ сохранить папку, синхронизированную с моим USB-накопителем?
  • В чем разница между «безопасным удалением» и «выбросом»?
  • Как «Un-Eject» флэш-накопитель USB - Извлекать легко (безопасно удалять аппаратные средства), но как насчет Un-Eject или Reconnect?
  • Можно ли использовать диск с памятью (например, USB-накопитель) в качестве ОЗУ?
  • Как настроить значок на USB-накопителе?
  • Защита от вирусов для флэш-накопителей
  • Можно ли отключить кэширование записи на запоминающем устройстве USB на Mac OS X?
  • Как превратить папку в USB-накопитель / массовое хранилище?
  • Можете ли вы сделать flashdrive только для чтения?
  • Давайте будем гением компьютера.