web-dev-qa-db-ja.com

USBフラッシュドライブでのUDFの使用

4Gより大きいファイルを8G SBフラッシュドライブ にコピーできなかった後、ext3としてフォーマットしました。これまでのところこれは問題なく機能していますが、Linuxを使用していないユーザーにファイルをコピーする場合に問題が発生します。

私はそれを [〜#〜] udf [〜#〜] としてフォーマットすることを考えています。これは、最も人気のある3つのオペレーティングシステムで読み取り(場合によっては書き込みも)できることを願っています( Windows、MacOS、Linux)、追加のドライバーをインストールする必要はありません。ただし、すでにウェブで見つけたものから、ファイルシステムの作成に使用されるパラメーターに関連するいくつかの小さな問題があるようですが、互換性が低下する可能性があります(ただし、私が見つけたほとんどのページは、USBフラッシュではなく、光メディアに関するものですドライブ)。

私が知りたいのですが:

  • ファイルシステムを作成するにはどのユーティリティを使用すればよいですか? (これまでのところ、私はmkudffsgenisoimageを見つけました。mkudffsが最良のオプションのようです。)
  • 互換性を最大にするために、選択したユーティリティでどのパラメーターを使用する必要がありますか?
  • これら3つのオペレーティングシステムの最も一般的なバージョンとの互換性UDFは実際にどの程度ですか?
  • UDFを使用することは実際に最良のアイデアですか? FAT32 4Gファイルサイズの制限などの問題のある制限がなく、それに触れるすべての単一のコンピューターに特別なドライバーをインストールする必要がない、より優れた互換性を持つ別のファイルシステムはありますか?
76
CesarB

最初に、次のコマンドでUDFファイルシステムを作成する前に、ドライブを完全にゼロにしました。

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

これは、オペレーティングシステムのファイルシステムタイプの検出を混乱させる可能性のある残りのスーパーブロックまたはその他のメタデータを回避するためです(少なくとも最初のセクターをゼロにする必要があり、パーティションテーブルを消去する必要があります。最初のいくつかのセクターはUDFによって使用されません。パーティションテーブルは本当に物事を混乱させる可能性があります)。これはテストされていませんが、ドライブの最初の512バイト(通常はMBRが配置されている場所)だけをより迅速にゼロにするために、ddコマンドでcount=1スイッチを使用することもできます。

ファイルシステムを作成するために使用したコマンドは次のとおりです。

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

mkudffsコマンドは、udftoolsパッケージをインストールすると、DebianベースのLinuxディストリビューション(Ubuntuなど)で使用できるようになります。

Sudo apt-get install udftools

mkudffsのデフォルトのブロックサイズは2048ですが、これはUSBフラッシュドライブ(512バイトのセクターを使用)の場合は間違っています。ブロックサイズはファイルシステムメタデータの検索に使用されるため、誤ったブロックサイズを使用すると、UDFファイルシステムとして認識されない可能性があります(アンカーがファイルシステムドライバーが予期する場所にないため)。 mkudffsのmanページは間違っていることに注意してください。 512はブロックサイズの有効な値です(そしてコードはそれを明示的に受け入れます)。

また、パーティションの代わりにドライブ全体を使用しました。これはより互換性があるはずです。

これまでの私のテストの結果:

  • 最新カーネルのLinux(Ubuntu 9.10からの2.6.31):動作します。
  • 古いカーネルのLinux:mountbs=512オプションが必要です。これは、デバイスセクターサイズの代わりに2048を誤って使用したためです( commit 1197e4d で修正)。
  • Windows Vista:機能します。
  • まったく新しいMac:動作します。
  • Windows XP:正常に読み取ることができますが、書き込もうとすると「アクセス拒否」が与えられます。また、ディスクがいっぱいだと思っているようです。

これまでに4Gを超えるファイルを作成しようとしたことはありませんが、機能しない理由はわかりません。

最近のすべてのオペレーティングシステムで完全に動作し(Linuxに手動でマウントする必要があるだけで、Ubuntu 9.10とFedora 12がリリースされたらすぐに必要なくなります)、Windowsで読み取り専用で動作したことを前提としていますXP(これは私にとって驚きでした。ファイルシステムをまったく認識しないと思っていました)、大きなUSBフラッシュドライブでFAT32またはNTFSの代わりにUDFを使用することは、良い考えのようです。

58
CesarB

CesarBは問題の核心に到達するために素晴らしい仕事をしました。十分に強調することができない1つのことは、UDFをフォーマットするときに適切なブロックサイズを使用することがいかに重要であるかです。

CesarBの投稿(および他の研究/テスト)に触発されて、適切に検出されたセクターサイズを使用して、UDFでのフォーマットプロセスを自動化するスクリプトを作成しました。 GitHubのformat-udf を参照してください。注目すべき機能:

  • ブロックドライブ(ハードドライブまたはフラッシュドライブ)をユニバーサルディスクフォーマット(UDF)でフォーマットします。
    • 最大限の互換性のために使用されるUDFリビジョン2.01
    • 最初の4096セクターは、既存のMBRを消去するためにゼロ化されます(適切なUDF検出に必要)。
  • 結果のファイルシステムは、複数のオペレーティングシステムファミリ(Windows、OS X、およびLinux)で読み取り/書き込みが可能
  • Bash環境を持つすべてのOSで実行

最後のポイントのため、私が作成したこのスクリプトはWindowsでは使用できません。ただし、スクリプトはOS XおよびLinuxで実行されます。そうすると、Windowsは新しくフォーマットされたUDFドライブを魔法のように検出できるはずです。

投稿された質問に直接答えるために、format-udfは次のことを行います。

  • オペレーティングシステムと環境に基づいて適切なフォーマットツールを選択する
  • 書式設定に必要なすべてのパラメータを自動的に検出して入力します
  • oSの互換性を最大化(互換性チャートについてはGitHubページを参照)
  • 質問者が探している最大の機能セット(および最小の制限)を生成する
7
j0nam1el

私はそれを行ったことを思い出すようです、私が見つけた問題は、ドライバーがr/w用にビルドされていなかったため、それを読み取り専用でマウントしたLinuxバージョンであるということです。 Windowsで動作しましたが、Macだと思います。

ええ、良い解決策を見つけるのは難しいです。しばらくの間、winとmac用のドライバー、macパーティション、大きなext3パーティションを備えたfat32パーティションを備えた外付けドライブがありました。機能しましたが、ドライバーをインストールする必要がありました。きちんとしたトリックは、Mac(fw&usb)でも起動可能だったということです。スペースを空けてメモをとる必要があります。その後、コマンドラインとMacパーティションテーブルを使用してパーティションを追加することもできます。

世界には、すべての人が利用できる無料のファイルシステムが必要です。 ZFSは良い選択です。 :-)

3
Ronald Pottol

Pieter Wuilleは、ディスクをパーティション分割してフォーマットし、[〜#〜] udf [〜#〜]レイアウトを作成して両方と互換性のあるツールを作成しましたWindows(> = Vista、XPでは読み取り専用)、MacOS X 10.5、Linux 2.6.30以降:

または:

2
dolmen

最大限の互換性を実現するには、少なくともバージョン2.0では dftools プロジェクトのmkudffsを使用する必要があります。特別なパラメータは必要ありません。すべてが自動検出されます。

3つの大きな制限があります。

  1. Microsoft Windowsシステムは、MBRまたはGPTパーティションテーブルがない場合、リムーバブルでないハードディスクを認識しません。

  2. Apple Mac OS Xシステムは、パーティションディスク上のUDFファイルシステムを認識しません。

  3. おそらくすべてのシステム(最近のLinuxカーネルを除く)は、UDFブロックサイズがディスクの論理セクターサイズと一致しない場合、UDFファイルシステムを認識しません。

バージョン2.0以降のmkudffsツールは、3つの制限すべてを処理します。リムーバブルでないハードディスクをフォーマットする場合、セクター0から始まり、ディスク全体にわたる「偽の」MBRテーブルが作成されます。したがって、UDFファイルシステムは、最初のパーティション(Microsoft Windowsに必要)またはディスク全体(Apple Mac OS Xに必要)から読み取ることができます。詳細については、mkudffs 2.0のマニュアルページを参照してください。

1
Pali

NTFS、NTFS-3Gを使用すると、Linuxを使用してそれに書き込むことができ、Macの http://macntfs-3g.blogspot.com/ を確認できます。

0
user10547