KHBIOS
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* KHBIOS
旧名称は「拡張汎用BIOS」(内容は変わっていないが、全角文字...
-目的
--KHBIOSの目的は単純明快で「ふつーのBIOSがサポートしてい...
-手段
--KHBIOSは本来のBIOSから見るとOSとして認識されます。しか...
-対象OS
--まずはOSASKですが、その後仕様をどんどん公開して、多くの...
-補足
--旧名称の中の「汎用」というのは何を表わしているのかとい...
-他にKHBIOSは何をしてくれるのか
--全てのストレージデバイスに対して統一されたパーティショ...
-[[K]]が結構入れ込んでいるので、そのうち間違いなくリリー...
-[[projects]]のOSが対応してくれたら感激です(でも今はOSAS...
-くわしくはこちらをどうぞ(少し古いけど)。 → http://osask....
-現在は習作版KHBIOSにて実験中。→[OSASK 5998]
--とりあえずOSASKのインストールされたコンパクトフラッシュ...
--どちらの場合も体感できる起動時間の遅延はない(これは重要...
* つまり、こんなことができるわけです
-具体的に書かないと実感が湧かないみたいなので、書くことに...
-KHBIOS対応OSは、どのデバイスに対しても共通のブートコード...
--だから、FDでブートするようになれば、全く同じバイナリイ...
-KHBIOS対応OSをたとえばCFに入れておいて、そのCFを入れてブ...
--これと同じ事ができるM/Bもありますが、KHBIOSでは対応して...
--CD-ROMブート対応じゃないM/BでCD-ROMブートするとか、SCSI...
-KHBIOS対応にもレベルがあるのですが、OSブート後にもKHBIOS...
--例えば、OSASKで「khbios freedos」とコマンドを打ち込むと...
--同様にKHBIOS対応のFreeDOSから「C>khbios osask」とやれば...
--OSASK側で全タスクをタスクセーブしてからFreeDOSに行き、O...
---もっともOSASKに限定すると、エミュレータが充実すればこ...
-KHBIOS対応OSは、KHBIOSのファンクションを使うなら、FDやHD...
--しかしほとんどすべての場合において、そのOSに合ったネイ...
* KHBIOSの共通パーティション情報の説明
-KHBIOSはパーティションを任意の位置におくことができ、それ...
-このパーティション情報には、ブートスクリプトバイトコード...
*** MBRなど
-MBRというか、そのメディアの最初の4KB以内に次のような14バ...
--[8バイトのアドレス] [ 'K', 'H', 'B', '0', 0x09, 0x00]
--アドレスは、メディアの先頭からその情報が何バイト先にあ...
---例えば0xb0と書いてあれば、0x16000からパーティション情...
--この14バイトの構造体は、必ず16バイトアラインされた位置...
---0x01b8、0x01f8
---以上が駄目なら、0x0008、0x0018、0x0028、0x0038、...、0...
-[標準] KHBIOSのツールで2GB以下のメディア全体をSF16でフォ...
-[標準] KHBIOSのツールでメディアを完全初期化すると、MBRお...
--もちろん完全初期化しなければパーティション開始位置は64K...
-MBRの例
000 31 C0 8E D0 BC 00 7C FB 8E C0 8E D8 FC 89 E6 BF
010 00 06 B9 00 01 F3 A5 EA 1C 06 00 00 BE BE 07 B1
020 04 38 2C 7C 07 83 C6 10 E2 F7 CD 18 B4 08 8A 14
030 56 CD 13 5E 72 2B 80 E1 3F 31 C0 88 F0 30 ED F6
040 E1 01 C8 89 C3 8B 44 08 8B 54 0A F7 F3 C0 E4 06
050 86 E0 89 44 02 89 D0 F6 F1 FE C4 08 64 02 88 44
060 01 B9 03 00 51 B4 41 BB AA 55 8A 14 CD 13 56 8B
070 14 72 28 81 FB 55 AA 75 22 F6 C1 01 74 1D 31 C0
080 50 50 FF 74 0A FF 74 08 50 68 00 7C 6A 01 6A 10
090 B4 42 89 E6 CD 13 BC FC 7B EB 0B 8B 4C 02 BB 00
0A0 7C B8 01 02 CD 13 5E 59 73 0F 56 51 31 C0 8A 14
0B0 CD 13 59 5E E2 AE E9 71 FF 81 3E FE 7D 55 AA 0F
0C0 85 67 FF EA 00 7C 00 00 00 00 00 00 00 00 00 00
-- 0D0-1AFまでは全部00 --
1B0 B0 00 00 00 00 00 00 00 4B 48 42 30 09 00 80 ??
1C0 ?? ?? 06 ?? ?? ?? 80 00 00 00 xx xx xx xx 00 00
1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
--多分これでもちゃんとブートする。ブートコード(000-06B)...
---ブートに失敗すると速やかにINT(0x18);して他のデバイスか...
--第一パーティションにSF16が入っている状況。
*** KHBIOSの共通パーティション情報フォーマット
-以下、典型的な8KBタイプ、パーティションが一つしかない場...
-SF16ではたいてい+6000-+7FFFにおかれる。
-2バイト以上の数値はすべてリトルエンディアンで格納(x86と...
-オフセットはすべてメディア情報領域の開始アドレスが起点に...
-全体像:
|+0000 - +005F|96B|メディア情報領域|
|+0060 - +007F|32B|パーティション情報ヘッダ領域|
|+0080 - +01FF|384B|ブート補助情報領域(とりあえずオール...
|+0200 - +024F|80B|パーティションデフォルト情報領域|
|+0250 - +03FF|432B|パーティション起動スクリプト用領域(...
|+0400 - +07FF|1KB|メディア識別子格納領域(とりあえずオー...
|+0800 - +1FFF|6KB|パーティション情報格納領域|
-メディア情報領域:
|+0000 - +0003|0x2000|KHBIOS情報のサイズ (8KB)|
|+0004 - +0007|0x2000|KHBIOS情報領域のサイズ (ユーザ領域...
|+0008 - +000F|4B 48 42 49 4F 53 30 30 (KHBIOS00)|シグネ...
|+0010 - +0013|80 00 00 09|各種フラグ|
|+0014 - +0017|0x0000|メディア識別子の長さ|
|+0018 - +001B|0x0400|メディア識別子格納領域の長さ (1KB)|
|+001C - +001F|0x0400|メディア識別子格納領域の先頭オフセ...
|+0020 - +002F||メディア全体のサイズ (MBRの容量等も含む、...
|+0030 - +0033|0x0030|パーティション情報の総エントリ数 (4...
|+0034 - +0037|0x0800|パーティション情報の格納領域の先頭...
|+0038 - +003B|0x0018|ブート補助情報の総エントリ数 (24エ...
|+003C - +003F|0x0080|ブート補助情報の格納領域の先頭オフ...
|+0040 - +005F|all-zero|リザーブ|
-パーティション情報ヘッダ領域:
|+0060 - +0063|00 00 00 09|各種フラグ|
|+0064 - +0067|0x0200|パーティションデフォルト情報の先頭...
|+0068 - +006B|0x01B0|パーティション起動スクリプト用領域...
|+006C - +006F|0x0250|パーティション起動スクリプト用領域...
|+0070 - +007F||パーティションサイズ (512バイト単位、たと...
-パーティションデフォルト情報領域:
--+0800-+084Fのコピー。
--これはパーティションのデフォルト名などを保持するもの。...
-パーティション情報格納領域:
|+0800 - +0803|0x0010|パーティションID|
|+0804 - +0807|00 09 09 09|各種フラグ|
|+0808 - +080B|0x0001|パーティション名の記述言語及びエン...
|+080C - +080F||パーティション名のバイト数 (0~32)|
|+0810 - +082F||パーティション名 (空いた部分は0x00に)|
|+0830 - +0833|0x0020|フォーマットタイプ (SF16)|
|+0834 - +0837|0x0004|フォーマットタイプ名のバイト数 (4バ...
|+0838 - +083F|53 46 31 36 00 00 00 00|フォーマットタイプ...
|+0840 - +084F|all-zero|リザーブ|
|+0850 - +085F||パーティションの利用サイズ (512バイト単位)|
|+0860 - +086F||パーティションのアロケートサイズ (512バイ...
|+0870 - +087F||パーティションの開始アドレス (512バイト単...
|+0880 - +1FFF|all-zero|第二パーティション以降用の領域|
*** KHBIOS情報の構造 (1)
-メディア=MBR部(たとえば64KB)+パーティション0+パーテ...
--FD/CD-R等の場合はMBR部はない。MBR部がなくてもKHBIOSはパ...
-それぞれのパーティションは最低でも1KB程度のKHBIOS情報を...
|+0000 - +000F|16B|ヘッダ (メディア情報領域の最初の16バイ...
|+0010 - +005F|80B|未使用|
|+0060 - +007F|32B|パーティション情報ヘッダ領域|
|+0080 - +01FF|384B|未使用|
|+0200 - +024F|80B|パーティションデフォルト情報領域|
|+0250 - +03FF|432B|パーティション起動スクリプト用領域(...
|+0400 - +1FFF|7KB|未使用(8KB指定した場合にのみこの領域...
-この情報がどこにあるかは、各パーティションの最初の4KBの...
-これらとは別にたとえば8KBのKHBIOS情報があり、そこは次の...
|+0000 - +005F|96B|メディア情報領域|
|+0060 - +007F|32B|未使用|
|+0080 - +01FF|384B|ブート補助情報領域(とりあえずオール...
|+0200 - +024F|80B|未使用|
|+0250 - +03FF|432B|未使用|
|+0400 - +07FF|1KB|メディア識別子格納領域(とりあえずオー...
|+0800 - +1FFF|6KB|パーティション情報格納領域|
-この情報がどこにあるかはMBRなどに書かれている(たとえば0...
-これでわかるように、この8KBの中に1KBのパーティション情報...
-KHBIOSはメディアを構成している全てのパーティションのKHBI...
-http://k.hideyosi.com/khbios_fig0.png
--黒い矢印は、14バイトのシグネチャ付きポインタで示されて...
--MBR部がない場合は、最初のパーティションのところが8KBで...
*** KHBIOS情報の構造 (2)
-パーティションの中に寄生パーティションを持った場合の説明。
-http://k.hideyosi.com/khbios_fig1.png
-説明としては「パーティションがファイルとしてみえる」であ...
-当然のことながら、この例でいうところのfdimage.binはクラ...
--ファイルの属性で、SYSTEMとHIDDENを立てておくと、デフラ...
-黒矢印は相対ポインタなので、#0のイメージをそのまま他のメ...
*** なんでこんな仕組みなのか?
-たとえばこの8KBの構造の位置をMBRの直後に固定することだっ...
-KHBIOS上で起動するOSは、KHBIOSが整理した情報を受け取れる...
*** バグ情報
-pcctol0cに入っているsf16isetにはバグがある。
0101F0: B0 → 30
016068: 00 → B0
016069: 00 → 01
01606C: 00 → 50
01606D: 00 → 02
--pcctol0dでは修正された。
* こめんと欄
-もうすでにKHBIOSをサポートしようというソフトもあるみたい...
#comment
終了行:
* KHBIOS
旧名称は「拡張汎用BIOS」(内容は変わっていないが、全角文字...
-目的
--KHBIOSの目的は単純明快で「ふつーのBIOSがサポートしてい...
-手段
--KHBIOSは本来のBIOSから見るとOSとして認識されます。しか...
-対象OS
--まずはOSASKですが、その後仕様をどんどん公開して、多くの...
-補足
--旧名称の中の「汎用」というのは何を表わしているのかとい...
-他にKHBIOSは何をしてくれるのか
--全てのストレージデバイスに対して統一されたパーティショ...
-[[K]]が結構入れ込んでいるので、そのうち間違いなくリリー...
-[[projects]]のOSが対応してくれたら感激です(でも今はOSAS...
-くわしくはこちらをどうぞ(少し古いけど)。 → http://osask....
-現在は習作版KHBIOSにて実験中。→[OSASK 5998]
--とりあえずOSASKのインストールされたコンパクトフラッシュ...
--どちらの場合も体感できる起動時間の遅延はない(これは重要...
* つまり、こんなことができるわけです
-具体的に書かないと実感が湧かないみたいなので、書くことに...
-KHBIOS対応OSは、どのデバイスに対しても共通のブートコード...
--だから、FDでブートするようになれば、全く同じバイナリイ...
-KHBIOS対応OSをたとえばCFに入れておいて、そのCFを入れてブ...
--これと同じ事ができるM/Bもありますが、KHBIOSでは対応して...
--CD-ROMブート対応じゃないM/BでCD-ROMブートするとか、SCSI...
-KHBIOS対応にもレベルがあるのですが、OSブート後にもKHBIOS...
--例えば、OSASKで「khbios freedos」とコマンドを打ち込むと...
--同様にKHBIOS対応のFreeDOSから「C>khbios osask」とやれば...
--OSASK側で全タスクをタスクセーブしてからFreeDOSに行き、O...
---もっともOSASKに限定すると、エミュレータが充実すればこ...
-KHBIOS対応OSは、KHBIOSのファンクションを使うなら、FDやHD...
--しかしほとんどすべての場合において、そのOSに合ったネイ...
* KHBIOSの共通パーティション情報の説明
-KHBIOSはパーティションを任意の位置におくことができ、それ...
-このパーティション情報には、ブートスクリプトバイトコード...
*** MBRなど
-MBRというか、そのメディアの最初の4KB以内に次のような14バ...
--[8バイトのアドレス] [ 'K', 'H', 'B', '0', 0x09, 0x00]
--アドレスは、メディアの先頭からその情報が何バイト先にあ...
---例えば0xb0と書いてあれば、0x16000からパーティション情...
--この14バイトの構造体は、必ず16バイトアラインされた位置...
---0x01b8、0x01f8
---以上が駄目なら、0x0008、0x0018、0x0028、0x0038、...、0...
-[標準] KHBIOSのツールで2GB以下のメディア全体をSF16でフォ...
-[標準] KHBIOSのツールでメディアを完全初期化すると、MBRお...
--もちろん完全初期化しなければパーティション開始位置は64K...
-MBRの例
000 31 C0 8E D0 BC 00 7C FB 8E C0 8E D8 FC 89 E6 BF
010 00 06 B9 00 01 F3 A5 EA 1C 06 00 00 BE BE 07 B1
020 04 38 2C 7C 07 83 C6 10 E2 F7 CD 18 B4 08 8A 14
030 56 CD 13 5E 72 2B 80 E1 3F 31 C0 88 F0 30 ED F6
040 E1 01 C8 89 C3 8B 44 08 8B 54 0A F7 F3 C0 E4 06
050 86 E0 89 44 02 89 D0 F6 F1 FE C4 08 64 02 88 44
060 01 B9 03 00 51 B4 41 BB AA 55 8A 14 CD 13 56 8B
070 14 72 28 81 FB 55 AA 75 22 F6 C1 01 74 1D 31 C0
080 50 50 FF 74 0A FF 74 08 50 68 00 7C 6A 01 6A 10
090 B4 42 89 E6 CD 13 BC FC 7B EB 0B 8B 4C 02 BB 00
0A0 7C B8 01 02 CD 13 5E 59 73 0F 56 51 31 C0 8A 14
0B0 CD 13 59 5E E2 AE E9 71 FF 81 3E FE 7D 55 AA 0F
0C0 85 67 FF EA 00 7C 00 00 00 00 00 00 00 00 00 00
-- 0D0-1AFまでは全部00 --
1B0 B0 00 00 00 00 00 00 00 4B 48 42 30 09 00 80 ??
1C0 ?? ?? 06 ?? ?? ?? 80 00 00 00 xx xx xx xx 00 00
1D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
--多分これでもちゃんとブートする。ブートコード(000-06B)...
---ブートに失敗すると速やかにINT(0x18);して他のデバイスか...
--第一パーティションにSF16が入っている状況。
*** KHBIOSの共通パーティション情報フォーマット
-以下、典型的な8KBタイプ、パーティションが一つしかない場...
-SF16ではたいてい+6000-+7FFFにおかれる。
-2バイト以上の数値はすべてリトルエンディアンで格納(x86と...
-オフセットはすべてメディア情報領域の開始アドレスが起点に...
-全体像:
|+0000 - +005F|96B|メディア情報領域|
|+0060 - +007F|32B|パーティション情報ヘッダ領域|
|+0080 - +01FF|384B|ブート補助情報領域(とりあえずオール...
|+0200 - +024F|80B|パーティションデフォルト情報領域|
|+0250 - +03FF|432B|パーティション起動スクリプト用領域(...
|+0400 - +07FF|1KB|メディア識別子格納領域(とりあえずオー...
|+0800 - +1FFF|6KB|パーティション情報格納領域|
-メディア情報領域:
|+0000 - +0003|0x2000|KHBIOS情報のサイズ (8KB)|
|+0004 - +0007|0x2000|KHBIOS情報領域のサイズ (ユーザ領域...
|+0008 - +000F|4B 48 42 49 4F 53 30 30 (KHBIOS00)|シグネ...
|+0010 - +0013|80 00 00 09|各種フラグ|
|+0014 - +0017|0x0000|メディア識別子の長さ|
|+0018 - +001B|0x0400|メディア識別子格納領域の長さ (1KB)|
|+001C - +001F|0x0400|メディア識別子格納領域の先頭オフセ...
|+0020 - +002F||メディア全体のサイズ (MBRの容量等も含む、...
|+0030 - +0033|0x0030|パーティション情報の総エントリ数 (4...
|+0034 - +0037|0x0800|パーティション情報の格納領域の先頭...
|+0038 - +003B|0x0018|ブート補助情報の総エントリ数 (24エ...
|+003C - +003F|0x0080|ブート補助情報の格納領域の先頭オフ...
|+0040 - +005F|all-zero|リザーブ|
-パーティション情報ヘッダ領域:
|+0060 - +0063|00 00 00 09|各種フラグ|
|+0064 - +0067|0x0200|パーティションデフォルト情報の先頭...
|+0068 - +006B|0x01B0|パーティション起動スクリプト用領域...
|+006C - +006F|0x0250|パーティション起動スクリプト用領域...
|+0070 - +007F||パーティションサイズ (512バイト単位、たと...
-パーティションデフォルト情報領域:
--+0800-+084Fのコピー。
--これはパーティションのデフォルト名などを保持するもの。...
-パーティション情報格納領域:
|+0800 - +0803|0x0010|パーティションID|
|+0804 - +0807|00 09 09 09|各種フラグ|
|+0808 - +080B|0x0001|パーティション名の記述言語及びエン...
|+080C - +080F||パーティション名のバイト数 (0~32)|
|+0810 - +082F||パーティション名 (空いた部分は0x00に)|
|+0830 - +0833|0x0020|フォーマットタイプ (SF16)|
|+0834 - +0837|0x0004|フォーマットタイプ名のバイト数 (4バ...
|+0838 - +083F|53 46 31 36 00 00 00 00|フォーマットタイプ...
|+0840 - +084F|all-zero|リザーブ|
|+0850 - +085F||パーティションの利用サイズ (512バイト単位)|
|+0860 - +086F||パーティションのアロケートサイズ (512バイ...
|+0870 - +087F||パーティションの開始アドレス (512バイト単...
|+0880 - +1FFF|all-zero|第二パーティション以降用の領域|
*** KHBIOS情報の構造 (1)
-メディア=MBR部(たとえば64KB)+パーティション0+パーテ...
--FD/CD-R等の場合はMBR部はない。MBR部がなくてもKHBIOSはパ...
-それぞれのパーティションは最低でも1KB程度のKHBIOS情報を...
|+0000 - +000F|16B|ヘッダ (メディア情報領域の最初の16バイ...
|+0010 - +005F|80B|未使用|
|+0060 - +007F|32B|パーティション情報ヘッダ領域|
|+0080 - +01FF|384B|未使用|
|+0200 - +024F|80B|パーティションデフォルト情報領域|
|+0250 - +03FF|432B|パーティション起動スクリプト用領域(...
|+0400 - +1FFF|7KB|未使用(8KB指定した場合にのみこの領域...
-この情報がどこにあるかは、各パーティションの最初の4KBの...
-これらとは別にたとえば8KBのKHBIOS情報があり、そこは次の...
|+0000 - +005F|96B|メディア情報領域|
|+0060 - +007F|32B|未使用|
|+0080 - +01FF|384B|ブート補助情報領域(とりあえずオール...
|+0200 - +024F|80B|未使用|
|+0250 - +03FF|432B|未使用|
|+0400 - +07FF|1KB|メディア識別子格納領域(とりあえずオー...
|+0800 - +1FFF|6KB|パーティション情報格納領域|
-この情報がどこにあるかはMBRなどに書かれている(たとえば0...
-これでわかるように、この8KBの中に1KBのパーティション情報...
-KHBIOSはメディアを構成している全てのパーティションのKHBI...
-http://k.hideyosi.com/khbios_fig0.png
--黒い矢印は、14バイトのシグネチャ付きポインタで示されて...
--MBR部がない場合は、最初のパーティションのところが8KBで...
*** KHBIOS情報の構造 (2)
-パーティションの中に寄生パーティションを持った場合の説明。
-http://k.hideyosi.com/khbios_fig1.png
-説明としては「パーティションがファイルとしてみえる」であ...
-当然のことながら、この例でいうところのfdimage.binはクラ...
--ファイルの属性で、SYSTEMとHIDDENを立てておくと、デフラ...
-黒矢印は相対ポインタなので、#0のイメージをそのまま他のメ...
*** なんでこんな仕組みなのか?
-たとえばこの8KBの構造の位置をMBRの直後に固定することだっ...
-KHBIOS上で起動するOSは、KHBIOSが整理した情報を受け取れる...
*** バグ情報
-pcctol0cに入っているsf16isetにはバグがある。
0101F0: B0 → 30
016068: 00 → B0
016069: 00 → 01
01606C: 00 → 50
01606D: 00 → 02
--pcctol0dでは修正された。
* こめんと欄
-もうすでにKHBIOSをサポートしようというソフトもあるみたい...
#comment
ページ名: