]>
QNX RTPのインストーラーは、
English Abstract: It is possible to install QNX RTP into an Extended Partition using a native qnx4 filesystem (not only as a FAT image file, which is supported by the installer).
$Id: QNXext.html,v 1.16 2003-03-22 05:16:53+09 kabe Exp $
初めての人は、いきなりちゃれんじゃーにならず、 まず 標準のインストーラで インストールして (CDROMブートのままでお茶をにごさないこと)、 動かし方や「正常な動作」について把握しておきましょう。 ブート時に [SPC] [F6] [CR] でverboseモードのメッセージも どんなもんか見ておくこと。
書いている最中にカタカナが多くなってイヤになったので、 以下の用語に統一します。
AT互換機に QNX 6.1 です。 PPCやSH3では「拡張領域ってナニ」なので (どっかにはちゃんと書いとかなあかんよな)
対応ハードウェア にはなにも書いてませんが、PCIが想定されてる関係で Pentium以前の機械はちとつらいかも。 i82433な機械では PCI BIOS の関係で動きませんでした。
なので、MBRブートローダとして OS-BS や GRUB、 拡張領域いじくりツールとして Linuxの {,c,s}fdisk などが必要です。 試してませんがブートローダは LILOやntldr, Partition Magic でも大丈夫でしょう。
QNX RTP付属のMBRブートローダは単純な一次領域ブートしか対応しておらず、 拡張領域をいじくるツールも標準添付されていません。 QNX 付属の fdisk は 一次領域いじり専用です。 だからインストーラも拡張領域へのインストールに 対応していないんだと思われます。
当ドキュメントでは GRUB と Linux cfdisk を使ってみます。 Win32環境や DOS は必要ありません。
Linux の cfdisk を起動して、type=77 (0x4D) の拡張領域をこしらえます。 容量は…まあ全部インストールするなら600MBくらいですか。
Linuxなんか使ってねーよという場合は、 Debian のレスキューディスク あたりが手軽でおすすめ。 CD-Rに2.88MBのイメージを焼いておけば 一発ブートできて 他のことにもいろいろ重宝しそうです。
Linuxを抜けて、今度は QNX RTPの CDROMでブートします。
カーネルが起動すると F1: HDDブート、 F2: CD起動、 F3: インストール の選択肢が出ますが、ここで F2: CDで起動 (Run from CD) を選択。
CDROMのインストーラは一次領域へのインストールしか対応していません。 F3: インストールを選んでもたいしたことはできず。
Photon環境の設定が始まりますが、別にPhotonがなくても以降の操作は できるので、軽いのが好きなかたはさっさと Exit でコンソールに戻ります。 んで root でログイン。 Photon環境なら端末エミュレーター (pterm) を起動。
Photonを起動すると腐る機械では、 起動時に [SPC][F1][F3] で Photon にならず すぐにコンソール login: になる。 Photon関係の余計な設定が走らないので速い。
先ほど作ったtype=77の拡張領域を確認します。
# ls -l /dev/hd0t77 brw------- 1 root root 2, 4 Aug 29 23:49 /dev/hd0t77 # _
type=77の領域が複数あると、hd0t77, hd0t77.1, hd0t77.2 ... なるデバイスが作られます
この領域に qnx4 ファイルシステムを作り込みます。
# dinit -h /dev/hd0t77 All existing files on /dev/hd0t77 will be lost! Are you sure (y or n) ? y Using loader /x86/boot/sys/ipl-diskpc2-flop Disk 'dev/hd0t77' contains 1172682 blocks (586341K). # _dinit で、 ファイルシステムの構築と PBRブートローダが書き込みが行われます。 ufsのようにsuperblockをえんえんと書くことはないのですぐに終了。
オプションの詳細は use dinit で見ることができます。 (QNXにはmanはなく、useかhelpviewerが標準ヘルプ)
# mount /dev/hd0t77 /mnt # cd /mnt # ls -l total 319 drwxrwxr-x 3 root root 4096 Aug 30 00:28 . drwxrwxr-x 3 root root 4096 Aug 30 00:28 .. -rw------- 1 root root 0 Aug 30 00:28 .altboot -r--r--r-- 1 root root 146586 Aug 30 00:28 .bitmap -rw------- 1 root root 0 Aug 30 00:28 .boot -r--r--r-- 1 root root 8192 Aug 30 00:28 .inodes # _
QNXのPBRローダや loadqnx.sys が読み込む初期イメージ (image file system) を作ります。 っても単にコピーしてくるだけですが。
# cd /mnt # cp -p /fs/cd0/boot/fs/qnxbasedma.ifs .boot # cp -p /fs/cd0/boot/fs/qnxbase.ifs .altboot # ls -l total 2979 drwxrwxr-x 3 root root 4096 Aug 30 00:28 . drwxrwxr-x 3 root root 4096 Aug 30 00:28 .. -r-xr-xr-x 1 root root 680640 Jun 28 15:44 .altboot -r--r--r-- 1 root root 146586 Aug 30 00:28 .bitmap -r-xr-xr-x 1 root root 680636 Jun 28 15:43 .boot -r--r--r-- 1 root root 8192 Aug 30 00:28 .inodes # _いままでの起動時にDMA無効でないと調子が悪かったのであれば、 qnxbasedma と qnxbase を逆にします。
初期イメージの中身は dumpifs コマンドで覗くことができます。
FAT同居インストール環境では /.boot は空のままです。 初期イメージは loadqnx.sys の引数の X:\Program files\qnx\boot\fs\qnxbasedma.ifs が DOSの ファイルシステムサービスを使って読まれるため、 /.boot は使われません。
/.boot と /.altboot は特殊ファイルなので、入れ替える前に バックアップするつもりで mv .boot .boot- とかしても弾かれます。
cf.QNX4ファイルシステム概要
実は dinit -hR とすれば .diskroot も同時に作ってくれたりするんですが、 何をやっているかわかるように手順を分けてみました。
# cd /mnt # touch .diskroot # chmod 444 .diskroot初期イメージから最後に起動される diskboot コマンドは、マウントできそうな 領域やファイル (*.qfs) を調べ、空の /.diskroot があるものを / として 使用する、ようです。 /.diskroot が全然見つからないと、ブート時に↓で停止します。
/.diskroot file for root not found on any filesystem. Starting with safe mode Unable to locate devc-con _
diskboot の詳細な動作や /.diskroot に関しては全然資料がないので 結構弱ったり。
# cd /mnt # mkdir boot # mkdir boot/fs # cp -p /fs/cd0/boot/fs/qnxbase.qfs boot/fs/qnxbase.qfs
通常ブートでもCDROM起動でも、このファイルの中身は diskbootによって /pkgs/base にマウントされます。 /bin などの実体は全部ここにあるので、このファイルがないと始まらない。
たぶん /pkgs/base/.diskroot に書いてある "mount=/pkgs/base" で 制御されてるんでしょうけど、資料がないので詳しいことが ぜんぜんわからん。
へぼい CDROMドライブ(ノート内蔵のとか…)だと けっこうコピーミスがでるようなので、 cmp で一応比較しておくのがおすすめ。
これで qnx4領域のいじくりはとりあえず終了。
作った拡張領域の PBR からブートできるように、お好みの ブートマネジャを設定します。
GRUBでは、しごく単純に
title QNX chainloader (hd0,6)+1(番号は当然、いくつ論理領域をこしらえてあるかで変動します)
誰も読みゃしないと思いますが GRUB の info にある chainloader +4 てのは おそらく QNX 4.x の話で、QNX 6.x では +1 で十分。 (大体現行のGRUB は chainloader +100 としても1セクタしか読まない)
他のOSと同じ。まず PBR を bootsect.qnx とでもして 抜き出してから、boot.iniで指定。
$ dd if=/dev/hd0t77 of=bootsect.qnx count=1 boot.ini: [operating systems] C:\bootsect.qnx="QNX Momentics 6.2"
色気出して本体を /dev/hd1t77 (2台目のHDD) に 入れたりすると、うまくいかないことがあるようです。 めんどくさいのがいやな人は素直に /dev/hd0t77 に入れること。 6.1 でdinitした PBR を使ったり、GRUB の map, LILO の map-drive で 解決する *かも* しれない。
これで終了です。 ブートすると、/ が空なのを検出して自動的に最終設定が(CDROM起動と同じように) 開始されます。
あとは、とりあえず使ってみた場合と同じように設定していってください。 FAT に間借りしていた場合よりディスク周りの動作が速くなっていることは 体感できると思います。 (CPUが速すぎるとわかんないかも〜)
もう FAT や loadqnx.sys は使ってないので、 間借りブートしていた場合は DOS関係のファイルを消去できます。 (GRUBのstage2まで消さないように注意)