Firmwareを採用した最近のMacでのみ有効です。注意:このページの内容については、何ら動作を保証するものではありません。使用するときは個人の責任でお願いします。簡単システム切替ハードディスクを2台以上繋いでいたり、ハードディスクのパーティションを複数切ったりして、(バックアップのためなどで)複数のシステムを入れている人も多いと思います。場合はシステム環境設定の起動ディスク)を使います。Xを立ち上げ時の気分で決めたいとか、いちいち起動ディスクコントロールパネルを使うのは面倒(^_^;)だとか...立ち上げ時に"c"キーを押したままにしておくと、CD-ROMから立ち上がることを知っている人も多いと思いますが、それと同じような方法(特定のキーを起動時に押しておく)でいろいろなシステムを切り替えて立ち上がるようにしてしまおうということです。Firmwareについて、ちょっと知っておく必要があります。Firmwareというのは(私も詳しいわけではありませんが^_^;)、システムブートの方法やデバイスツリー(入出力機器の構成)の管理などをプラットフォームに依存せず実現しようというものです。CHRPということばを聞いたことがある人もいるかと思いますが、まぁ、そういう話が盛んだった時代の遺産ともいえます。FirmwareによってMacOSの起動を行っています。FirmwareにはToolBoxは含まれていません。ROM"ファイルの中にあるようです。Macが起きる時Mac起動時には以下の処理が行われています。上記シーケンスの中で特に重要なのは3.のところです。"bootinfo"ファイルとは?でも、「MacOS関係のファイル中に"bootinfo"などという名前のファイルはないぞ!」と思われるかも知れません。ROM"ファイルの中に入っているのでした。ROMファイルのデータフォークの中をバイナリエディタ等で覗いてみると、"<CHRP-BOOT>..."で始まるテキストが並んでいるのがわかると思います。これがbootinfoの正体です。Firmwareの話に戻ります。Firmwareが動いているわけですが、通常この部分は瞬間的に通り抜けるので、ほとんど気付くこともありません。Firmwareのコマンド入力ライン上で停止します。_この状態でキーボードからprintenvと入力し、returnキーを押してみて下さい。すると、次のように表示されると思います。[<space>,<cr>,q]?Webブラウザによっては、上記の表示の中で円サイン(¥)に見えるところがあると思いますが、実際にはバックスラッシュ(\)です。>)の表示状態になります。この中で重要なのはboot-deviceのところです。上の例では"hd:,\\:tbxi"となっていますが、起動ディスクコントロールパネルを使って起動するOSを切り替えたことがある人なら、"/pci.../@0:7,\\:tbxi"のような長ったらしい名前になっているかも知れません。いずれにしても最後は"\\:tbxi"で終っていると思います。ROMを起動することになります。この設定をしっかり覚えておいて下さい。ROMのファイル情報を見てみるとTypeがtbxiになっているのがわかると思います。ROM:tbxi"の短縮型と考えれば良いと思います。ROMのあるデバイス名ということになります。"hd:"というのは、"/pci.../@0"といった名前の省略形で、devaliasと入力してreturnキーを押すと、どのような省略形が使えるかがわかります。_普通、hdというのがデフォールトのシステムディスク、cdというのがCD-ROMに割り当てられていると思います。それ以外はハードによって違うと思いますので、自分で確かめるようにして下さい。(rev.1)の場合です。OSを起動するため、mac-boot(あるいはbootまたはbye)と入力してreturnキーを押します。mac-bootbootinfo.txtファイルを作ろうさて、いよいよ核心に迫ってきました。ROMの代わりを勤めるbootinfo.txtファイルを作成します。作成には適当なエディタを使って普通のテキストファイルとして作ってもらって構いません。内容は次のようなものです。$bootthendevice-end</BOOT-SCRIPT></CHRP-BOOT>少し解説します。<CHRP-BOOT>と</CHRP-BOOT>ですが、お約束のようなものですから、この通り入力して下さい。Firmwareに入った時に表示される機種名を追加しておけば良いでしょう。<DESCRIPTION>と</DESCRIPTION>で囲まれた部分はこのコマンドファイルの説明ですから、まぁ、適当に入力して下さい。Firmwareに与えるコマンドスクリプトを書くことになります。最初の9行はコメントで、ダブルクォート(")で囲まれた部分がモニタに表示されます。keyboard)はキーボードデバイスを使用することを表し、その3行先のget-key-mapで、キーマップテーブルのアドレス(仮にKeyAdrとします)をスタックにセットします。+)し、コピーして(dup)スタックに積んでいます。えー...、何を言っているのかさっぱりわからない人もいるかも知れませんが、そのような時はこの行はそのままコピーしてもらって構いません(^_^;。)が存在しなければならないということです。Firmwareに与えるコマンドスクリプトはFORTHという言語が使われるのですが、FORTHにとってダブルクオート(")というのはこれだけで一つのコマンドで、"文字列をスタックに積む"という意味を持っています。コマンドとパラメータの間は空白で区切ることになっています。ダブルクォートのあとに空白がないとダブルクォートがコマンドだと認識できず、エラーになってしまうわけです。このあたりの詳しいことは「お世話になったページたち」を参照して下さい。&lt;)が成立するまで、繰り返します。+"によってスタックの先頭内容に2が足され(つまりKeyAdr+2となる)、"c@"によってスタック先頭の内容を(バイト)アドレスとして、そのアドレスの内容(つまりKeyAdr+2の内容)で置き換えます。スタックの先頭に入る。="でスタックの先頭内容が0x80と等しいかどうか判定し、その結果をスタックに置いて、"if"でスタック先頭がが真であれば、直後の命令を実行し、偽なら"else"以下の命令を実行し、スタック先頭の値は取り除かれます。KeyAdrの内容ですが、調べた限りでは、キーを押した状態がbit単位で設定され以下のようになっています。....アルファベットのところは対応するキーが押されていると、"1"が立ちます。"*"のところはなんのキーに対応しているか調べていません。これで気がついた人もいると思いますが、2つ以上のキーコンピネーションも判定することが出来ます。$boot)ですが、(これまでの下手な解説が理解できた人にはわかると思いますが^_^;)この行が実行されるのは"m"キーが押されていた時だけです。ROMファイルを読み込んで起動する」というコマンドです。hdというのは通常、プライマリIDEドライブのようです。パーティション番号はHDに1つしかシステムがない場合は指定しなくても良いようですが、2つ以上のシステムが存在する時は必ず指定する必要があります。Firmwareに入ってprintenvでboot-deviceの設定を見ればわかります。",\\tbxi"となっている直前の数値がパーティション番号です。-p"と打ち込むとOpenFirmware上の環境変数をすべて表示してくれますので、それで確認することもできます。長くなりましたので、以下の行の解説は省略します。Xを起動する」ということです。Firmwareへ以上のようにして作ったbootinfo.txtファイルをHDのルートフォルダ(システムフォルダが置いてある場所と同レベル、要するにデスクトップに現れるHDアイコンの中(直下))に置いておきます。Firmwareに入り、以下のコマンドを入力します。Firmware内ではASCIIキーボードのキー配列しかサポートしていないため、JISキーボードを使っている場合":"キーを押しても":"が入力されません。JISキーボードで":"を入力するには"shift-;"キーを押して下さい。"hd:7"の部分はbootinfo.txtを入れたHDのデバイス名とパーティション番号をよく確認して入力して下さい。Firmwareに入らなくてもTerminal上から以下のコマンドを入力することでも設定できる。boot-command=boot%もちろんPasswordは正しいものを入力して下さい。次回立ち上げからは、"m"キーや"x"キー等を押しておくことによって、いろいろなシステムを切り替えることができるようになります。OSが立ち上がるようになります。そこで、徐に設定をやり直せば良いでしょう。Firmwareに入り、boot-deviceを設定し直すことによってキー入力による切り換えが復活します。Firmwareのホームページです。Firmware関係サイトへのリンクが豊富です。Firmwareについてもかなり書かれています。Firmwareのコマンドリファレンス等としても使えます。Firmwareを使ったLinux直接起動の話が載っています。FirmwareのコマンドはFORTHと呼ばれる言語で書くことになっています。そのFORTH関係のドキュメントへのリンク等があります。