4Gより大きいファイルを8G SBフラッシュドライブ にコピーできなかった後、ext3としてフォーマットしました。これまでのところこれは問題なく機能していますが、Linuxを使用していないユーザーにファイルをコピーする場合に問題が発生します。
私はそれを [〜#〜] udf [〜#〜] としてフォーマットすることを考えています。これは、最も人気のある3つのオペレーティングシステムで読み取り(場合によっては書き込みも)できることを願っています( Windows、MacOS、Linux)、追加のドライバーをインストールする必要はありません。ただし、すでにウェブで見つけたものから、ファイルシステムの作成に使用されるパラメーターに関連するいくつかの小さな問題があるようですが、互換性が低下する可能性があります(ただし、私が見つけたほとんどのページは、USBフラッシュではなく、光メディアに関するものですドライブ)。
私が知りたいのですが:
mkudffs
とgenisoimage
を見つけました。mkudffs
が最良のオプションのようです。)最初に、次のコマンドで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はブロックサイズの有効な値です(そしてコードはそれを明示的に受け入れます)。
また、パーティションの代わりにドライブ全体を使用しました。これはより互換性があるはずです。
これまでの私のテストの結果:
mount
にbs=512
オプションが必要です。これは、デバイスセクターサイズの代わりに2048を誤って使用したためです( commit 1197e4d で修正)。これまでに4Gを超えるファイルを作成しようとしたことはありませんが、機能しない理由はわかりません。
最近のすべてのオペレーティングシステムで完全に動作し(Linuxに手動でマウントする必要があるだけで、Ubuntu 9.10とFedora 12がリリースされたらすぐに必要なくなります)、Windowsで読み取り専用で動作したことを前提としていますXP(これは私にとって驚きでした。ファイルシステムをまったく認識しないと思っていました)、大きなUSBフラッシュドライブでFAT32またはNTFSの代わりにUDFを使用することは、良い考えのようです。
CesarBは問題の核心に到達するために素晴らしい仕事をしました。十分に強調することができない1つのことは、UDFをフォーマットするときに適切なブロックサイズを使用することがいかに重要であるかです。
CesarBの投稿(および他の研究/テスト)に触発されて、適切に検出されたセクターサイズを使用して、UDFでのフォーマットプロセスを自動化するスクリプトを作成しました。 GitHubのformat-udf を参照してください。注目すべき機能:
最後のポイントのため、私が作成したこのスクリプトはWindowsでは使用できません。ただし、スクリプトはOS XおよびLinuxで実行されます。そうすると、Windowsは新しくフォーマットされたUDFドライブを魔法のように検出できるはずです。
投稿された質問に直接答えるために、format-udfは次のことを行います。
私はそれを行ったことを思い出すようです、私が見つけた問題は、ドライバーがr/w用にビルドされていなかったため、それを読み取り専用でマウントしたLinuxバージョンであるということです。 Windowsで動作しましたが、Macだと思います。
ええ、良い解決策を見つけるのは難しいです。しばらくの間、winとmac用のドライバー、macパーティション、大きなext3パーティションを備えたfat32パーティションを備えた外付けドライブがありました。機能しましたが、ドライバーをインストールする必要がありました。きちんとしたトリックは、Mac(fw&usb)でも起動可能だったということです。スペースを空けてメモをとる必要があります。その後、コマンドラインとMacパーティションテーブルを使用してパーティションを追加することもできます。
世界には、すべての人が利用できる無料のファイルシステムが必要です。 ZFSは良い選択です。 :-)
Pieter Wuilleは、ディスクをパーティション分割してフォーマットし、[〜#〜] udf [〜#〜]レイアウトを作成して両方と互換性のあるツールを作成しましたWindows(> = Vista、XPでは読み取り専用)、MacOS X 10.5、Linux 2.6.30以降:
または:
最大限の互換性を実現するには、少なくともバージョン2.0では dftools プロジェクトのmkudffsを使用する必要があります。特別なパラメータは必要ありません。すべてが自動検出されます。
3つの大きな制限があります。
Microsoft Windowsシステムは、MBRまたはGPTパーティションテーブルがない場合、リムーバブルでないハードディスクを認識しません。
Apple Mac OS Xシステムは、パーティションディスク上のUDFファイルシステムを認識しません。
おそらくすべてのシステム(最近のLinuxカーネルを除く)は、UDFブロックサイズがディスクの論理セクターサイズと一致しない場合、UDFファイルシステムを認識しません。
バージョン2.0以降のmkudffsツールは、3つの制限すべてを処理します。リムーバブルでないハードディスクをフォーマットする場合、セクター0から始まり、ディスク全体にわたる「偽の」MBRテーブルが作成されます。したがって、UDFファイルシステムは、最初のパーティション(Microsoft Windowsに必要)またはディスク全体(Apple Mac OS Xに必要)から読み取ることができます。詳細については、mkudffs 2.0のマニュアルページを参照してください。
NTFS、NTFS-3Gを使用すると、Linuxを使用してそれに書き込むことができ、Macの http://macntfs-3g.blogspot.com/ を確認できます。