web-dev-qa-db-ja.com

UbuntuLinuxでFAT32ドライブをマウントできません

私は単一の大きなFAT32パーティションを備えた320GBのUSBドライブを持っています。ボリュームは私のMacOS X 10.5.8マシンでは完全に正常にマウントされ、Macのディスクユーティリティはボリュームに問題がないことを報告します。ドライブ上のすべてのデータを読み書きできます。

ただし、ドライブをUbuntu 9.10 Karmicシステムに接続すると、パーティションがマウントされません。 dmesg|tail言う:

[ 2752.334822] scsi3 : SCSI emulation for USB Mass Storage devices
[ 2752.335040] usb-storage: device found at 3
[ 2752.335044] usb-storage: waiting for device to settle before scanning
[ 2757.330301] usb-storage: device scan complete
[ 2757.331005] scsi 3:0:0:0: Direct-Access     WD       3200AAK External 1.65 PQ: 0 ANSI: 0
[ 2757.331772] sd 3:0:0:0: Attached scsi generic sg2 type 0
[ 2757.355647] sd 3:0:0:0: [sdb] 625142448 512-byte logical blocks: (320 GB/298 GiB)
[ 2757.360737] sd 3:0:0:0: [sdb] Write Protect is off
[ 2757.360749] sd 3:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 2757.360755] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2757.367618] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2757.367631]  sdb: sdb1
[ 2762.797622] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 2762.797636] sd 3:0:0:0: [sdb] Attached SCSI disk
[ 2822.866228] FAT: bogus number of reserved sectors
[ 2822.866237] VFS: Can't find a valid FAT filesystem on dev sdb1.

実行するとfsck.vfat -a /dev/sdb1私は得る:

root@cartman:~# fsck.vfat -a /dev/sdb1
dosfsck 3.0.3, 18 May 2009, FAT32, LFN
Logical sector size is zero.

「vfat論理セクターサイズがゼロ」をグーグルで検索しても、ソリューションに関してコンセンサスは得られませんでした。ディスクには約280GBのデータが含まれているため、一時的なホームを探す必要がないため、可能であればディスクを完全に再フォーマットする必要はありません。助言がありますか?

7
Josh

私にとって、fsck.vfat /dev/sdd1が "Logical sector size is zero."を返すのは、それがvfatではなく、むしろ新しいexfatだったからです。そのため、ツールをインストールしてfsckできるように適切なツール(apt-get install exfat-utils exfat-Fuse)をインストールする必要がありました(代わりにfsck.exfat /dev/sdd1を使用するか、fsck /dev/sdd1だけを使用して、fsckにファイルシステムを自動検出させます)

4
Matija Nalis

これはさらに数回発生しています... Mac OS X10.5でFAT-32としてフォーマットされたドライブに固有の問題のようです。 Macでドライブをバックアップし、mkfs.vfatを使用してlnuxでドライブを再フォーマットすると、使用可能になりました。私の質問に対する答えではありませんが、これを閉じたかったので、私がしたことを投稿しています。 (他に何かアイデアがあれば、この質問に答えてください。試してみます。うまくいったら、答えを受け入れます!)

2
Josh

まず、可能であればchkdsk.exeにアクセスして、ファイルシステムに問題があり、Linuxがそれをはるかに重視している場合に備えて、ドライブで実行しようとします。

Fat32にはセクター6にバックアップブートセクターがあるようです。いつでもセクター0をそのセクターに置き換えて、それが役立つかどうかを確認できますが、おそらくchkdskルートを試して、それがまったく役立つかどうかを確認します。

2
Chris Disbro

Webでのこのエラーに関する有用な情報は驚くほど少なく、ノイズが多すぎるため、ソースコードを調べて答えを探すのが速くなりました。

論理セクターサイズは、パーティションのオフセット0x0B、リトルエンド、2バイトサイズで書き込まれます。通常、物理セクターサイズの倍数(512、1024、2048など)にする必要があります。

あなたは自分でバイトを掘り下げて、それがどれほどひどく台無しにされているかを見ることができます(注意してください!最後のコマンドはディスクにデータを書き込みます):

dd if=/dev/sdb1 bs=512 count=4 > ./part_header
<use your favorite hex editor to explore and fix it>
dd if=./part_header_fixed of=/dev/sdb1 bs=512 count=4

または、「testdisk」ユーティリティを使用します。

1
ogurets

Nlsモジュールをチェックしてみましたか?

良いリソースは http://www.nslu2-linux.org/wiki/HowTo/MountFATFileSystems です。

0
jneves