2013年11月22日金曜日

USBメモリはローカルディスク?リムーバブルメディア?

USBメモリをWindowsマシンに挿したとき、ローカルディスクになってしまう問題があります。または、無理やりローカルディスクとして認識させたい場合もあるでしょう(今回調べたのは、後者の理由です)。

少し調べたところ、USBメモリがリムーバブルメディアとして認識されるのはATAのIDENTIFY DEVICEコマンドの戻り値のRemovable Media Bitが1だからだそうです。

リムーバブル メディア デバイス設定は、SCSI Inquiry コマンドへの SCSI Inquiry Data 応答内に含まれたフラグです。バイト 1 のビット 7 (インデックスは 0 から開始) は、Removable Media Bit (RMB) です。ゼロに設定された RMB は、デバイスがリムーバブル メディア デバイスではないことを示します。1 に設定された RMB は、デバイスがリムーバブル メディア デバイスであることを示します。

flip removable media bit とググると、んもうたくさんの質問や記事が出てきます。皆さんUSBメモリにパーティションを作りたくてうずうずしているのでしょう。

漁ってみた中で一番確実そうな方法は "Lexar BootIt utility" を使う方法でした(まだ試していませんが)。LexarはUSBメモリのメーカーで、恐らく自社製品用にツールを作ったのだと思います。ということで、お店でLexarのTwistTurnなるUSBメモリを買ってきました。(Lexarのツールを使ってみたらここに追記予定)


Tips for USB pen drives によれば、「Removable」は本来、フロッピーやZIPドライブ、フラッシュカードリーダーなど、取り外し可能メディアを持つ機器を表すそうです。USBメモリがRMB=1になっているのは厳密には正しくないけれども、ほとんどすべてのUSBメモリがそうなってしまっているのだそうです(反対にUSBハードドライブはRMB=0になっています)。

なぜUSBハードディスクはリムーバブルでないのにUSBメモリはリムーバブルなのかは理解できませんが、現実的に市場の製品がそうなってしまっているのだから仕方がない。注意して製品選びするしかなさそうです。

Lexar BootIt utilityを試したらこの記事を修正するつもりです。