USBフラッシュドライブでUDFを使用する


75

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

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

私が知りたいのですが:

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

回答:


57

まず、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コマンドは、udftoolsパッケージのインストール後にDebianベースのLinuxディストリビューション(Ubuntuなど)で使用可能になります。

sudo apt-get install udftools

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

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

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

  • 最新のカーネル(2.6.31、Ubuntu 9.10以降)を搭載したLinux:動作します。
  • 古いカーネルのLinux:デバイスセクターサイズの代わりに2048を誤って使用したため、bs=512オプションが必要mountです(コミット1197e4dで修正)。
  • Windows Vista:動作します。
  • 最新のMac:動作します。
  • Windows XP:読むことはできますが、書き込もうとすると「アクセスが拒否されました」。また、ディスクがいっぱいだと考えているようです。

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

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


1
ドライブをどのようにフォーマット/パーティションしましたか?を使用して32 GBのUSBドライブをゼロにしましたdd if=/dev/zero of=/dev/sdb bs=1M。これにより、パーティションテーブルがなくなりました。
romeovs

4
@romeovs:ドライブを分割しませんでした。パーティションテーブルと古いファイルシステムの残りを削除し、パーティション分割されていないドライブ全体にUDFファイルシステムを配置するために、それがゼロ化の全体的なポイントです。パーティションテーブルを作成しても、混乱を招くだけです。
CesarB

3
500 GBのSeaGate FreeAgent Desktop USB 2.0外付けハードドライブでは動作しませんでした(このスレッドはフラッシュドライブに関するものなので、必要かどうかはわかりません)。Windows 7では、ディスク管理ユーティリティでドライブが常に「未割り当て」として表示されていました。いくつかの異なるオプションの組み合わせを試しました。
アダムモンセン

2
フォローアップしてくれてありがとう。初めてではないにしても、まれなことですが、数日/数週間のテストの後、OPによって巧妙に答えられるスマートな質問があります。お疲れ様でした!
リュック

1
UDF作成プロセスを自動化し、互換性を高めるためにパーティションテーブルを作成するPieter Wuilleスクリプトも参照してください。私はそれを代替ソリューションとして投稿しまし
ドルメン14年

7

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

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

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

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

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

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

1
Githubでformat-udfユーティリティを調べましたが、1つ質問があります。スクリプトは、ドライブの物理ブロックサイズを検出します。Linuxが「論理セクターサイズ」ではなく「物理セクター(ブロック)サイズ」と呼んでいるパラメーターが正しいのですか?物理的および論理的は多くのことを意味します。hdparm「論理セクタサイズ」と呼ばれるのは、SATAプロトコルで使用されるアドレス指定の単位ですが、「物理セクタサイズ」はドライブ内部のものです。私にとっては、UDF仕様の「物理ブロック」とは実際にはLinuxの「論理ブロック」を意味することを理解しています。
ヨハンMyréen17年

@JohanMyréen、あなたはスポットオンです。GitHubのこのトピックに関するディスカッションに参加することを勧めます。 github.com/JElchison/format-udf/issues/13 Windows 7および10での追加のテストが保留中、質問の行に沿って差し迫った変更があります
。– j0nam1el

1
format-udfは本当に素晴らしいです。Linuxでテストしたところ、OS XおよびWindows 10でフォーマットされたドライブの読み取り/書き込みができました
。– mivk

「bashを使用して任意のOSで実行する」機能には魅力がありますが、同じアプローチをmkudffs直接実装する方がより良いでしょう。に新しい--best-block-sizeオプションを追加することを意味しますmkudffs
-MarcH

3

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

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

世界には、あらゆるもので使える無料のファイルシステムが必要です。ZFSは良い選択です。:-)


ZFSは便利ですが、多くの人を混乱させます。それは外部メディアにとってもちょっとやり過ぎですよね?私の知る限りでは、巨大なファイルサーバーにより適しています。
マイククーパー

2
まあ、ZFSは合計とエラー回復をチェックします。:-Dビット腐敗が最終的に何かを食べるのに十分な量を最近保存しています(ZFSにつながる問題についてSunが行った研究を参照してください。HDエンコーディングの検出されないエラー率にも注意してください)。すべてが使用できる本当のfsが必要ですが、fatXはそうではありません。ここにはまだありません、本当に。
ロナルドポトル

ZFSがLinuxで機能しない
-ignis

2

Pieter Wuilleは、Windows(> = Vista、読み取り専用はXPのみ)、MacOS X 10.5、Linux 2.6.30+の両方と互換性のあるUDFレイアウトを作成するためにディスクをパーティションおよびフォーマットするツールを作成しました。

代わりに:


1

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

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

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

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

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

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


0

NTFS、NTFS-3Gを使用すると、Linuxを使用して書き込みでき、お使いのMacのhttp://macntfs-3g.blogspot.com/を確認できます。


4
これには、Mac用の追加ドライバーが関係しているようです。
マイククーパー

彼がFATを使いたくない場合、彼は立ち往生し、NTFS-3GはすでにMacで動作します。
user10547

4
ちょっとした問題は、それが私の Mac ではないということです。他の人のコンピューターにドライバーをインストールする必要はありません。
CesarB

-1

EXT3パーティションにアクセスできるWindows(およびMac)用のドライバーがあります。そのため、EXT3にフォーマットし、どこでも(ドライバーを使用して)使用できます。別の方法は、アーカイバーを使用して、最大4 GBの2つ以上のファイルに大きなファイルを保存することです。この方法で、普遍的なFAT32ファイルシステムを使用できます。ホストコンピューターでは、アーカイブを使用するためにアーカイブを抽出する必要がありますが、ドライバーなしでアーカイブを実行する方法です。Windows、Linux、Macで動作するため、RAR形式のアーカイバを使用しますが、ZIP形式でも動作する可能性があると思います。しかし、私はドライバーと行きます。インストールしたら、制限なしで何でもできます。PCでは、EXT2、EXT3、EXT4のフルアクセスにはExt2Fsdを、MacOS形式のフルアクセスにはMacdriveを使用しました。NTFSパーティションなどに完全にアクセスするための同様のツールがLinuxおよびMacOSにも存在します。読み取りアクセスのみが必要な場合、ドライバーは必要ありません。LinuxとMacOSはNTFSパーティションの読み取りをサポートしているため、USBをNTFSとしてフォーマットしてください。これらすべてのコンピューターが同じネットワークにある場合、物事は簡単です!USBをいずれかの形式にして、ネットワーク上で共有します。他のコンピューターへのアクセスに問題はないはずです!


2
-1答えはUDFにさえ言及していないからです!
ドルメン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.