[OSASK 5761] Re: 拡張汎用BIOS構想.

  こんにちは、川合です。


Hidemi KAWAI は 2003/02/24 12:24:39 の「[OSASK 5756] Re: 拡張汎
用BIOS構想.」で書きました:

>  あれ?CX/UXからは64MBまでOKということになっている・・・ええと
>つまり、データバス16bit x アドレスバス25bitということなのかな?

  すみません、この辺が全然違いました。

  PCMCIA/JEIDAのメモリカード :
    アドレスラインは26本  データラインは16本
    アクセス可能なのはアドレスラインによって規定されて、64MB

  CF :
    アドレスラインは11本  データラインは16本
    アクセス可能なのはアドレスラインによって規定されて、2KB

>  そしてTOWNSでは確かメモリカードからのブートもできるんでしたよ
>ね?裏技がいるのかもしれませんが。たぶんこの4KB以内に何とかブー
>トコードを書いて、それでこいつがCFの残りの部分をリードすれば、も
>うたぶんいけちゃいます。ということで、TOWNSの場合、拡張汎用BIOS
>をメモリカードスロットのCFに入れておくということが可能になるので
>はないでしょうか。ついでにOSASKを入れてしまってもいいです、もち
>ろん。

  このアイデアについては、目下混乱中です。

  とりあえずCFの規格では「Common Memory」なる2KBのメモリ空間があ
るようですが、これに果たしてそれなりのメモリがちゃんと実装されて
いるのかはかなり怪しい気がしてます。省略されているかも・・・。

  仮にメモリがちゃんとあれば、ブートはできます。

  また、このメモリ空間だけを使ってCFの全領域にアクセスできそうな
ことも分かりました。そういうモードがあります。もし、CFがリセット
時にこのモードにデフォルトでなってくれるのなら、初代TOWNSでもCF
の全空間にアクセスできます。しかし、このモードではCommon Memory
がなくなるので、今度はブートができません。

  絶対にそんな都合のいいカードはないだろうと思っていますが、ベス
トは、「Common Memory」がちゃんと積んであって、しかもこの「Commo
n Memory」の真ん中のあたりの16バイトがATAアクセス用I/Oに開放され
ていることです。そうしたら、古い規格のPCMCIA/JEIDAスロットでも、
ブートもアクセスもできて文句無しの気がしますが・・・。

  まあPCカードでブートできるなんていうのはTOWNSぐらいなものなの
で、きっとこんな都合の良いカードのまともな需要はありません。きっ
と存在しないでしょう。ということで現実的に行きましょう。

[1](おそらくまっとうな)CFメディア
  ・2KBの「Common Memory」があり、JEIDA ver.4以降の手順でのみATA
    アクセスができる。
  → TOWNS CX/UX以降でブートと読み書きの両方に完全対応可能
  → TOWNS 初代などでは、ブート用のキーくらいにしか使えない
       (2KBしかないのでOSは入りません)

[2](規格を守らないで手抜きをして作った)CFメディア
  ・「Common Memory」は実装されておらず、そのうえI/Oアクセスなの
    か、メモリアクセスなのかすら判定していない。つまり全部I/Oア
    クセスだと判断してしまう、手抜きデバイス
  → TOWNS CX/UX以降で読み書きに対応可能
  → TOWNS 初代でも読み書き可能

  ええとここでいう「ブート」は拡張汎用BIOSそのものをインストール
できるかどうかという意味であって、他のデバイスに拡張汎用BIOSをイ
ンストールしておいてそこからブートするなら、読み書き可能なデバイ
スからは拡張汎用BIOSを経由して確実にブートできます。

  前のメールにバンクアクセスで2KBを切り替えて・・・みたいなこと
をちょっと書きましたが、これはうそっぱちでした。CFは原則としてメ
モリカードとしての機能を有してはいないので、もっぱらATAインター
フェース経由でアクセスします。メモリカードとして機能する(かもし
れない)のは、お情けでくっついている(かもしれない)「Common Mem
ory」の部分だけです。

---

  ついでにちょこっと書いておきます。

  拡張汎用BIOSでは、現存する多様かつ複雑なパーティションテーブル
をまじめに解読するだけのコードが用意できそうにありません。そこで
以下のようなアルゴリズムを採用することになりそうです。

1.規定の場所(許された場所のうち、どこか一個所にのみ書けばよい
  )に「OSASKP」というシグネチャーとOSASKパーティションテーブル
  へのポインタを書いておく。これはわずか14バイトの構造体で、HDD
  やCFの場合、MBRの空きに書くことができる。MBRがいっぱいなら他の
  ところに書いてもいい。
2.このシグネチャが見付かれば、拡張汎用BIOSは規格の揃った理解し
  やすいパーテションテーブルを読み、パーティションを把握する。
3.見付からなければメディア全体を単一のパーティションとみなす。
4.もちろんOSASKPを生成してくれるパーティションツールなど一つも
  無く、この仕様だけではまったく使い物になりません。実は、拡張汎
  用BIOSのメニューには一般的かつ複雑なパーティションテーブルを解
  釈してOSASKPを自動生成する機能があり、これを一度やってしまえば
  もうOKというわけです。OSASKPはそれまでの一般的なパーティション
  テーブルと共存するので、今までのOSもそのまま使えます。

  OSASKPの構造は非常に拡張性に富んでいるわりには単純になっており
まして、128bitのパーティション開始LBA、128bitのパーテション長、
最大パーティション数1万以上、20バイト(もしくはそれ以上の)パー
ティションラベル、メディアIDやパーティションIDをすぐに導入可能な
予約領域あり、という仕様になっています。細切れになったパーティシ
ョンを集めて1つのパーティションに見せる機能も規定されています。

  OSASKPでは寄生型パーティションというのものもサポートしています
。これは任意のOSの任意のパーティションの中に任意のサイズのディス
クイメージファイルを置いておき、拡張汎用BIOSからはそれがパーティ
ションとして見えてブートも一般アクセスも可能であり、また拡張汎用
BIOSが無い環境では、ただのディスクイメージファイルとして読み書き
ができるというものです。これはFDISKなどをせずに仮想的にパーティ
ションを作ったり削除したりできるわけで、僕のようなOSプログラマで
ディスクイメージの管理にてこずっているユーザには便利な機能です。

  たとえばあるCD-ROMがあって、このCD-ROMには歴代のOSASKのディス
クイメージが全部入っていて、これはWindowsなどからはただのISOフォ
ーマットのCD-ROMで、1440KBのファイルがたくさんあるだけにみえます
。しかし、このCD-ROMを拡張汎用BIOSがインストールされた環境でブー
トするとデフォルトでこのCD-ROMの中での最新版のOSASKが起動し(し
かもATでもTOWNSでも98でも自動で機種判別して起動する)、拡張汎用
BIOSのメニューを経由すれば、収録された全てのバージョンから好きな
ものを起動できるというわけです。わざわざ他のメディアにコピーする
必要はないわけです。

  僕はこれができたら、拡張汎用BIOSに対応させたフリーのOSのディス
クイメージを集めて片っ端からCD-Rに納めて、このCD-R自身には拡張汎
用BIOSを仕込んでおいて、この一枚でいろんなOSで簡単に遊べるし、拡
張汎用BIOSがまだ使えない環境でもディスクイメージからFDやHDDにコ
ピーすればOK、みたいなことをやりたいです(ISOのCD-ROMには多分パ
ーティションの概念が無いと思うので(もしくはあっても誰も使ってい
ないのでサポートを期待できないので)、寄生型パーティションは非常
に有効でしょう)。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/



ML番号でジャンプ
ML単語検索