03-Dec-2011 | [USBメモリデバイスのCHS値] |
---|---|
今でこそLBA(Logical Block Address)を使用するものの、かつてはHDD上のデータの位置はC(Cylinder), H(Head), S(Sector)の三つのパラメータで表現していました。これはHDDの構造に由来するものでありますが、このような構造を持たないメモリデバイス…SDカードやUSBメモリではどのようになるか、少し調べてみることにしました。 調べるために使用したプログラムは、chstest.asmというごくごく簡単なものです。BIOSのINT13Hを使用し、CHSの値を取得します。また、拡張INT13Hも使用しています。試してみたい場合はnasmでアセンブルし、ddか何かでディスクのブートセクタに仕込めば良いでしょう。 このプログラムを起動すると画面には8桁の16進数が7個表示されますが、これは次のような意味を持っています。
起動したディスクの番号は、bit7=0はFDD扱い、bit7=1はHDD扱いという意味で構いません。 INT13H, AH=08Hで取得したシリンダ数およびヘッド数は、0〜指定可能な最大数という意味があるために実際の値-1で表示されます。 手元の機材で試した結果を見る限りでは、以下のような傾向があるようです。
正直なところ、(もともとメモリデバイスにCHSという概念が無い以上)ここまで混沌とした状態とは思ってもいませんでした。HDDのようにLBAを使用してアクセスを行うのであるなら特に問題は起こらないでしょうが、CHS値を使用してアクセスを行ったり、フロッピーディスクイメージをUSBメモリに書き込んで起動するような場合は注意が必要でしょう。 ♪ なお、chstest.asmが起動しなかったThinkPad Edge 525Eの場合、FATのような情報を付加する(chstest2.asm)もしくはパーティーションテーブルを付加する(chstest3.asm)ことで起動するようになることが分かっています(それ以前に、セグメントレジスタの初期化を端折っていることの方が大きな問題ですが…)。 どうも、このマシンではブートセクタの内容を解釈して自動的にFDDかHDDかを返し、またCHS値もブートセクタの内容から決定しているような感触なのですが…どこをどのように設定するとどう変化するかまでは追いきれていません。 とりあえず、USBに接続したメモリデバイスから起動する場合、CHSの値には注意した方が良いという結論でこの記事はまとめておくことにします。 |
30-Nov-2011 | [使用機材] |
---|---|
PC
USBメモリ
USB接続のSDカードリーダ
SDカード(全てSDサイズに変換して使用)
これらの機材を、総当たり式で組み合わせて調査した。 |
26-Nov-2011 | [テスト結果(chstest.asm)] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SDカードの名称の後にあるAp, Pr, Elは、使用したSDカードリーダーのメーカーの略称(Apacer, Princeton, ELECOM)。 本来であれば8桁の16進数で記すべきであるが、見づらいのでゼロサプレスしたものを掲載している。 ・BIOSTAR P4M80-M4 (Phoenix - Award)
・FOXCONN A7GM-S (AMI)
・Intel DG41TY (Intel)
・ASRock A75 Pro4 (AMI)
・Lenovo ThinkPad Edge 525 全く起動しない。MikeOS-4.2は起動するので、おそらくテストコードに問題がある。 |