質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

Q&A

解決済

2回答

6072閲覧

FATフォーマットの違い

Hiroki_Okuda

総合スコア31

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

0グッド

0クリップ

投稿2016/12/31 02:23

編集2016/12/31 03:48

実は、特殊な機材をコントロールしているのですが・・・
不思議なことがあります。
USBメモリを入れてそこから機材がデータを読み出し、コントロールしているのですが、同じFAT12(512バイトFAT)でも、Win10でフォーマットすると読み込めないのか動作せず、Win7とかWinXPでフォーマットするとちゃんと読み込んで動作します。
(VistaやWin8系では試していません)
もちろんメモリは同じものを使用しています(これも大きいUSBメモリを区画分けしてかなり小さいパーティションで使っています)。データも当然同じです。

Win10とWin7では、NTFSの互換性で違いがあることは知っていますが、FATについてどう違うのか、調べてもわかりません。
ご存じの方がお見えになりましたらお教え願えませんでしょうか?

追記:
両方ともWindows上の「フォーマット」を使っています。
具体的に書くと、エクスプローラー画面でその該当ドライブを右クリックし、「フォーマット」を選択しています。
FATサイズはWindows既定を指定しています。
また、管理者権限で実行するフォーマットコマンドで以下のオプションをつけて試しもしましたが同様でした。
「format x: /FS:FAT /A:512」
※xは該当ドライブ

なお、蛇足ですがパーティション区切りはdiskpartコマンドで分けています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

raccy

2016/12/31 03:20

FAT12でフォーマットしたとありますが、具体的にはどのようにしたのでしょうか?同じformatコマンドを使ったのでしょうか?
guest

回答2

0

ベストアンサー

FAT12でフォーマットしたとのことですが、本当にFAT12なっているでしょうか?

DISKPART コマンドで detail partition を実行すればパーティション識別子が確認できると思いますが、その値がFAT12を示す0x01になっていますか?FAT16を示す別の値になっていたりしませんか?
File Allocation Table

下記サイトにFATに関する詳しい情報が載っていますが、FAT12とFAT16のどちらを使うかの切り分仕様は厳密に決まっていないようです。

FATファイル システムのしくみと操作法 (「FATタイプの決定」 より引用)

しかし、この境界値は明確に決まっているわけではありません。クラスタ番号の取り得る値からすると上記のようになりますが、実際に出回っている情報やFATドライバではその多くにバラツキ(1,2,8,10または16クラスタ)があります。たとえば、FAT12の最大クラスタ数一つ取っても、FAT仕様書では4084としている一方、MSDNの解説では4085、Windowsでは4085(ドライバ)や4086(ディスク ツール)などとなっています。基準となるべき仕様書やシステムでさえこのようにバラバラな状態なので、存在する全てのFATコードにおいて最大限の互換性を確保するため、クラスタ数が境界値付近となるボリュームの作成は避けることが推奨されています。FAT仕様書では境界値から16は離したクラスタ数に設定すべきとしています。

また、このルールを知らずに書かれたFATドライバは、クラスタ数ではなくBS_FilSysTypeフィールドの文字列でFATタイプを決定しているようです。そのような不正なFATドライバの救済のためにも、BS_FilSysTypeには実際のFATタイプに矛盾しない文字列の設定が推奨されています。

投稿2017/01/01 00:39

KenjiToriumi

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hiroki_Okuda

2017/01/01 02:49

一応(いくつか同様に作成したディスクがありますので)調べてみました。 オリジナル(本来使っていて今はリファレンスとして残してあり、正常動作するもの)は、select diskまではうまく行きますが、select partitionが通りませんでした(パーティションが選択されていいません、とでます)。他のディスク(同様に動作するもの)について、確認していますが、detail partitionの「種類」をみればいいのでしょうか? それならば01になっています(win7/10ともに)。
Hiroki_Okuda

2017/01/01 03:19

detail partitionができない代わりに、HxDというセクタダンプのユーティリティがありましたので、それでダンプしましたが、下側リンクで言うBS_VOLID以外に相違点は見つかりませんでした。
Hiroki_Okuda

2017/01/01 05:54

あくまで仮説ですが、その「種類」が01ではなかった場合、当然読めないと思いますが、修正方法はあるのでしょうか?それとも一度解放、もしくはゼロフィルして初期化し直しでしょうか?
KenjiToriumi

2017/01/02 06:42

16GBのUSBメモリを使用して私のWin10 Home ver 1607(14393.576)環境で実験した結果は以下の通りでした。 -------------------------------------------------------------------------------- 1. DISKPART で、1MBのパーティションを1つ作成。パーティションの種類は指定せず。 「CREATE PARTITION PRIMARY SIZE=1」 2. DISKPART で、パーティションの詳細を確認。 「DETAIL PARTITION」 オフセット (バイト): 1048576 種類 : 06 3. DISKPART ASSIGNでドライブレターを割り当てた後、formatコマンドでフォーマット。 「format x: /FS:FAT /A:512」 ファイル システムの種類は RAW です。 新しいファイル システムは FAT です。 フォーマットは完了しました。 1000.0 KB : 全ディスク領域 1000.0 KB : 使用可能ディスク領域 512 バイト : アロケーション ユニット サイズ 2,000 個 : 利用可能アロケーション ユニット 12 ビット : FAT エントリ 4. DISKPART で、パーティションの詳細を確認。 「DETAIL PARTITION」 種類 : 0E -------------------------------------------------------------------------------- CREATE PARTITION でID=01と指定しても、formatコマンドにより結局、0x0Eに書き換えられました。 [FATファイル システムのしくみと操作法](http://elm-chan.org/docs/fat.html) 「区画テーブルエントリのフィールド」によると、0E は FAT12/16 (LBA) なので正しいのですが、特殊な機材と言われている方が0Eに対応していない(定義を知らない)のではないでしょうか? ボリュームのPBPの違いがBS_VOLIDだけしかないのにドライブが認識ということであれば、MBR側のパーティションテーブルの情報の違いを疑うべきでしょうね。(あとは、サポートしているDISKサイズ(LBAのBit数)など) > この区画の種類(代表的なもの)。 > 0x00: 無し(空きエントリ) > 0x01: FAT12 (CHS/LBA, 65536セクタ未満) > 0x04: FAT16 (CHS/LBA, 65536セクタ未満) > 0x05: 拡張区画 (CHS/LBA) > 0x06: FAT12/16 (CHS/LBA, 65536セクタ以上) > 0x07: HPFS/NTFS/exFAT (CHS/LBA) > 0x0B: FAT32 (CHS/LBA) > 0x0C: FAT32 (LBA) > 0x0E: FAT12/16 (LBA) > 0x0F: 拡張区画 (LBA) -------------------------------------------------------------------------------- > あくまで仮説ですが、その「種類」が01ではなかった場合、当然読めないと思いますが、修正方法はあるのでしょうか? DISKPART の FORMAT でコマンドでもIDは0Eになりましたので、もっと細かなパラメータの指定できるフォーマットツール何か探すか、HxDのようなDISKのセクタを直接編集できる ツールで、パーティションテーブルを直接書き換えるかでしょうね。 -------------------------------------------------------------------------------- (追記) 新しいWindowsではFDドライブの標準サポートが削除されたりしているので、古い仕様に対するサポート(互換性)の部分も変わってきていて、その影響かもしれませんね。
Hiroki_Okuda

2017/01/02 13:42 編集

なるほどですね。詳しい解説ありがとうございました。 でも、あれから追試をしていて、私がやると、なぜか結構不定で、10側だと01になったり0Eになったりするんですよ。01の方が多いんですけどね。 7とかだと01で完全固定なので、これが原因の可能性は大いにあります。 いちおうご指摘の通り、両方ともFAT12で間違いはないんですが、0Eを機材側が認識できない可能性は否定できないので。 そこで再び質問なのですが、今ディスクダンプをしているのですけれど、BPBはオフセットゼロから見えるんですが、区画テーブルエントリがどこにあるのかいまいちわかりません。
KenjiToriumi

2017/01/02 13:03

> 私がやると、なぜか結構不定で、10側だと01になったり0Eになったりするんですよ。01の方が多いんですけどね。 もしかしたら、uSBメモリ全体容量の違いや、パーティションの開始位置の違いが影響している可能性も考えられますね。 容量が32MBとかのとても小さいUSBメモリだったり、パーティションをWin10以外で作成した物だった時は、Win10でフォーマットしても0x01になってるとかありまんか?
Hiroki_Okuda

2017/01/02 13:44

今回64MBと256MBでやってますが、これについては同様に不定ですね。 パーティションの開始位置までは意識してませんが、Toriumiさんと同様の方法でやってます。 あ、すいません、先ほどコメント編集したんででわかりにくいとは思いますが、上のところで質問をしておりますのでそちらもお手数ではありますがよろしくお願いいたします。
KenjiToriumi

2017/01/02 14:03

> 今ディスクダンプをしているのですけれど、BPBはオフセットゼロから見えるんですが、区画テーブルエントリがどこにあるのかいまいちわかりません パーティションテーブルはDISKのMBRに存在しますので、HxDだと論理ディスクではなく物理ディスクを選択して開けば、セクタ0の 0x01BE に存在します。 https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%96%E3%83%BC%E3%83%88%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89
Hiroki_Okuda

2017/01/02 14:54

1)どちらにしても、FDDのサポートが終わってるわけですから、FAT12については不定になるのはある程度想像がつきます。見えないわけではないようですが、条件がつくと思われます。 2)物理ディスク選択してセクタ0の0x01BEをみたんですが・・・ http://www.teambluewing.com/data/2017a.png
KenjiToriumi

2017/01/02 23:56

http://www.teambluewing.com/data/2017a.png を見ると"MSDOS5.0"や"FAT12"などのキーワードが見えますので、これはMBRではなくPBPですね。 USBメモリ(USBマスストレージクラス)やSDカードなどは、HDDと同様MBR(パーティション情報)があり、そのパーティション(論理ドライブ)をFATなどでフォーマットして使用することになります。 物理ディスクのセクタ0がPBPということは、パーティションの仕組みがなく「物理ドライブ=論理ドライブ」であるFDと同じ構造になっているといえます。 DISPART で select partition が出来ないと言われていたのは、これが原因ですね。 普通のWindows標準機能を用いていていれば、USBメモリがこのような状態になることは考えづらいのですか、何らかのツールを使用してFDのディスクイメージを、USBの物理ドライブを指定して書き込みを行ったとかされていませんか? FATフォーマットの問題という事でご質問が始まりましたが、FATの問題ではなくMBRなどのUSBメモリ全体のデータ構造の問題のような気がしますね。 ちなみに下記は、私が実験したUSBメモリの物理ドライブのセクタ0(MBR)と論理ドライブのセクタ0(PBP)の内容です。(選択分はパーティションテーブルの第1パーティション) https://photos.google.com/share/AF1QipPaLJ0JPIIdF_TmHM0Om-hY1WfOvEOK7k6ri3WNQLPuHOwLrLcDHruKhNB_xGY3Yg/photo/AF1QipPrbJ5RT-Sy5vbAhbOmjNGSMqzLosPz3zWvQDwY?key=OW9zSlRUZjJET3ZNNGxTSEtSNTBwZk1PRGJJYlF3
Hiroki_Okuda

2017/01/03 00:56

いえ、そんなことは全くやっていません。 基本的に標準のツールでやってます。逆にいうなら別の回答の通り他のツールが使えませんので。。。 とはいえ、このままでは議論が進みませんので、少し見方をかえてみましょう。 もしFDのイメージだったとして、メモリ内のデータ構造だとしたら、どこで差異がでるのでしょう?(ある意味核心に近づいている気がします) 実際、本来繋がるべきUSBメモリは旧式のかなり容量の小さいタイプをターゲットにしているはずで、それがなく、容量がでかいままだと認識しないので、小さくしてある意味無理やり認識させているようなものなので。。。) ある意味、前述の「FAT12が見えない?」に挑むような話なのですけれど・・・
KenjiToriumi

2017/01/03 02:37

私はUSBメモリはパーティション情報がある物だと思いこんでいたのですが、Win10でも以下の手順で FD同様MBRが無く、「物理ドライブ=論理ドライブ」で物理ドライブのセクタ0がPBPのUSBメモリになりました。 1. 物理ドライブのセクタ0を、HxDなどを使用して0クリアし、MBR情報が無い状態にする。 2. その状態でUSBメモリをformatコマンドでフォーマット。 (実験に使えるUSBメモリが16GBなで、FAT32を指定) この状態だと、DISPART list partition でプライマリパーティションが1つあると表示されますが、select partition も detail partition も失敗するという状況になりました。 (エクスプローラからはファイルの作成など可能な状態です) 特殊な機材がパーティションテーブルの0xEという種類をサポートしていないのではと言いましたが、実はそれ以前の問題で、MBRのあるディスク構造自体をサポートしていないのでは?(「物理ドライブ=論理ドライブ」で物理ドライブのセクタ0がPBPのUSBメモリしかサポートしていない)
Hiroki_Okuda

2017/01/03 06:57 編集

どうもそうではなさそうです。 というのも、区画分けして容量を小さくしたドライブでも、Win7で初期化したものについては読み込めています。Win8はないため確認してませんが、Win10にて初期化したものだけダメなんです。 区画分けについてもWin7/10双方で試しましたが、Win7でフォーマットすれば問題ないという結果に。 で、複数区画を作ると、最初の区画しか認識しません(というかもともと1ドライブしか認識しないのでその機材としては当たり前といえば当たり前ですが)。 で、調べていくうちに少し疑問がでてきました。 パーティション情報がない限り、FATの判断はそれを示す情報がない以上、クラスタ数から算出するしかないのでは?と。 とすると、BPBの比較情報が重要になりますが、Win7とWin10ではほとんど変化がないので、ここも問題ではない気がしてきました。 とはいえ、Win10でFAT12がサポート外(という情報あり)となると、少し考えなければなりません。当面はまだWin7は延長サポートで2020年まではOKなので、この機材については当面はこれでしのごうと思います。(FAT12フォーマッターを作らなければならないかもしれませんね・・・)
Hiroki_Okuda

2017/01/04 10:56 編集

原因が判明しました! Win10でフォーマットすると、隠しシステムファイルで「System Volume Information」が作られてしまい、それがどうも邪魔しているようです。 (これは盲点でした・・・・Win7で初期化するとそれが作られません) 。
guest

0

明けましておめでとうございます。

FAT32なので少し違いますが、良く似た話がありました。
Windows 10 (8以上?)でUSBメモリをFAT32フォーマットすると…
Windows 10のFATフォーマットはWindows 7とは微妙に相違があるようで、Windows 10でフォーマットするとある装置が認識してくれないそうです。

投稿2016/12/31 15:28

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hiroki_Okuda

2017/01/01 00:31

そうなんですね? 私が知りたいのは、その「相違点」はどこなのか、というところなのです。
Chironian

2017/01/01 04:15

解決策には興味なかったのですね。てっきり解決方法を求めていると勘違いして解決策の記載があるリンク先を紹介させて頂きました。 外してしまったようです。すいません。
Hiroki_Okuda

2017/01/01 05:43

解決策は必要ですが、どちらかというと構造的問題の根本がどこにあるのかを知らないと、ほかに説明できないのです。「どっちもWindowsでフォーマットしているから同じのはずだ」と反論されて終わりですから。
Hiroki_Okuda

2017/01/01 06:32 編集

また、機材の関係上私だけが使うわけではありません。ですから最終的には専用のツールを作ることになると思います。ツール自体は私も持っていますが、間違って使ってしまうと問題ですからね。 もちろんそれに対応した(余計なことができない)ツールがあればベストですが、そういうものはそうそうあるものではないので、それにつながる(=作るための参考になる)ヒントもあればと思ったわけです。 あと、なぜかこのツールだと、初期化ができません(NTFSしか選択肢がない)。 ですからどっちにしろ解決策にすらならないと言うことですかね・・・(苦笑)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問