]> Memos and Tips on QNX RTP ▼資料 ・nntp://inn.qnx.com/ はexpireをしていないようだ。 ・ソースやフリー物は ftp://ftp.qnx.com/usr/ にある。 ・http://cvs.qnx.com/ てのもある。 一部だけ公開のようだが、libcは全公開ぽい ・「きゅにっくす」と読むのは"Qunix"がもとの名前だから、 なのかも。 ftp://ftp.qnx.com/usr/free/Tech_Support_FAQ/os/QNX.txt ・なんかnews.inn.qnx.com を覗いていると公式サイトからはたどれないところに いろいろ(開発者謹製の)ツール類が転がってるようだ… ・リンク ** 6.2 の出荷前後に *.qnx.com は大幅変更されている http://commercial.qnx.com/ Commercial-Class (downloadable) softwares http://developers.qnx.com/ アップデートいくつか (New Stuff, Fixes) http://developers.qnx.com/Ports/ QSSLのPorts. よく使うものはたいていある。 diffutils,openssh,openssl,patch,rcs,wget http://www.qnx.com/developer/download/contrib/ 3rd party repositoryとISOへのリンク。 ISOは古いこともある。 http://download.qnx.com/contrib/repository621a/repository.qrm 6.2.1のオンライン版3rd party repository. qnxinstall で指定する。 http://qnx.iaware.org/ QDNの検索 (ほんの一部のみ) http://www.me.iitb.ac.in/~mritun/qnx.php3 (リンク集) http://qnx.wox.org/ http://qnx.wox.org/qnx/ cdm(#)qnx.com phMAD, qPaq, bitchx, mad, openssh glib, gimp, gtk, libtiff, png, wget, bash uptime (http://qnx.wox.org/qnx/sources/load-src.tar.gz) who,uptime (http://qnx.wox.org/qnx/binaries/who-and-uptime.tar.gz) http://qnx.wox.org/qnxpub621/ 6.2.1 pakages preview http://www.parse.com/free/ramdisk.html mallocなramdisk news:aklr0r$k9a$1@inn.qnx.com nntp://inn.qnx.com/qdn.cafe/497 http://www.parse.com/free/tarfs.html tar(.gz)をマウントする http://members.home.com/kovalenko/software/ SPIN (topみたいなもの。qdn.public.qnxrtp.applicationsで紹介) http://members.home.com/kovalenko/software/maestro http://members.home.com/kovalenko/software/ess/ http://home.attbi.com/~kovalenko/qnx/es ESSのドライバアップデート (Canyon3D, ES1978, ES1968, Maestro-1) #http://domo.qnx.org.ru/downloads/fs-nt.tgz http://domo.qnx.org.ru/indexe.htm NTFSマウンタ (未チェック) #http://members.home.net/xtang/repository/ http://www.qnxzone.com/~xtang/repository/ devc-clone,fs-ac,BPF, IPFilter, tcpdump, lsof http://developers.cogentrts.com/repository/ Cogentのソフトウェアリポジトリ ftp://freebsd.sinica.edu.tw/pub/phantomcat/QNX/Apache2/ Apache2.0.18 (なぜ18?) http://sourceforge.net/projects/openqnx/ XFree86, tcsh http://sourceforge.net/projects/pyqnx/ Python http://www.hpcf.cam.ac.uk/export/ (MSNTP) NTPクライアント。 adjtime()を自作する必要あり? #http://tcup70.tripod.co.jp/7002/qnx.html http://members.tripod.co.jp/qnx/ http://tcup7002.tripod.co.jp/qnx/bbs 日本語の掲示板。別に技術的に高度なわけでもないが… http://www.joher.com/phirc Photon版IRCクライアント IRC://irc.joher.com:6667/#qnx http://www.astranetwork.com/~jeremy/qnxdc/ Dreamcast で 6.2 (素人お断り) でもCD-Rブートは旧形機でないと不可だったような http://www.me.iitb.ernet.in/~mritun/qnx.php3 http://www.me.iitb.ernet.in/~mritun/Joy-1.02.tar.gz Joystick (untested) http://hostwork.com/matt/qnx/ cdrtools-2.01a15 移植 http://projects.qnxzone.com/projects/phan/ ACPI実験実装 http://www.qnxzone.com/ 2001/12/31より営業開始。 これといった内容はまだないが… news:Voyager.020103164613.20392B@wooga.wooga.passageway.com nntp://inn.qnx.com/qdn.public.news/281 http://www.openqnx.com/ また別のポータルサイト。 openqnx.sourceforge.net とは別らしい。 nntp://inn.qnx.com/qdn.public.qnxrtp.porting/430 news:3C84B87F.9040802@icbt.com tcl8.3.2 (configure) staff.qnx.comは都合によりおとりつぶしになった。 news://inn.qnx.com/9pkh7k$j2h$2@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/2169 http://staff.qnx.com/~cburgess/freestuff/ (ldd,nasm,ndisasm,rcs,rdate) http://staff.qnx.com/~cburgess/freestuff/ldd (ldd. ksh,objdump,getconf使用なので他のOSでも使えるのでは) http://staff.qnx.com/%7Ejfehr/repository/index (ゲーム系) http://staff.qnx.com/~thomasf/nto.html (通信まわり、mountのコード例) cdmとxtangはよそへ引っ越しているが… kovalenkoも引越し? QNXStartはなくなってしまった。 http://www.qnxstart.com/forum.php QNXStartの掲示板。あまし役に立たない。 スタッフはnewsの方をよく見ているようだ。 http://www.qnxstart.com/links.php?op=viewslink&sid=19 device driver (Joystick, FM801) フランス・ドイツ・ロシアでは結構人気があって、そっち方面のほうが いい資料があるかも。 http://www.qnxfaq.org/ (仏) FAQ。いい。(そのまま訳してもいいくらい) http://www.freestation.co.jp/product.htm http://www.freestation.co.jp/catalog/usb_mass_catalog.pdf Momentics用USBストレージドライバ。売り物。 http://www.dolphin.de/repository/index.html demo driver for the USB WebCam family 8115 (Philips,Logitech) inn.qnx.com/qdn.cafe/1047 ▼リポジトリ ** 6.2 の出荷前後に *.qnx.com は大幅変更されている http://packages.qnx.com/repository/ 公式リポジトリ http://betas.qnx.com/ddk/repository/ β版。ddkbeta/ddkbeta http://betas.qnx.com/phinx/ PhinX (Photon in X) #http://staff.qnx.com/%7Ecdm/repository/ (スタッフによるツール,ports) OpenSSH,Vim,bash #http://staff.qnx.com/%7Ejfehr/repository/index (ゲーム系) http://developers.cogentrts.com/repository/ Cogentのソフトウェアリポジトリ http://members.home.net/xtang/repository/ BPF, IPFilter, tcpdump, lsof http://www.nexwarecorp.com/repository/ gtk,indent,libIDL,makedepend VNC http://nexwarecorp.com/support/qnx.htm http://www.programmationworld.com/repository/ ? ▼FAQらしきもの (inn.qnx.com) ・XXXはサポートされてますか?→(http://qdn.qnx.com/support/hardware/) ・拡張パーティションにはインストールできないの? ・2台目のHDDにはインストール(ブート)できないの? (reg DL) ・CDROMからブートしません (*.iso焼き,異デバイス) ・[6.1]コンパイラはどこ? ・[6.1]C++はどこ? ・[6.1]PhABはどこ? ・[6.1]GeForceでVoyagerが腐る ・82559が遅い ・共有ライブラリを使うとコアダンプ(-sharedでコンパイルせよ,CoW tips参照) ・IDEを認識しない(マスターなしはダメ,DMA) ・Photonを無効にしたい ・[6.2]mkifsがありません ・[6.2]nfsdがありません ・インストールできません(USB CDROM/floppyは不可) ・インストールできません(一次領域なし) ・NC,SE,PEの違いは (http://licensing.qnx.com/published/eula/QDSLG1_00A.html) (http://www.obrasil.com/Hobbies/qnx/qnx_howto_eng.htm がヒント) ・フロッピーのフォーマット (dinit,mkdosfs) ・ramdisk (devb-ram, ramdisk) ・画面キャプチャ ・QNETはWANで使えるの? (tcpバインド nntp://inn.qnx.com/qdn.public.qnxrtp.os/6863) ・日本語が出ない ・(mo,zip) ▼インストール ・[install]プライマリパーティションにしかインストールできない。 http://qdn.qnx.com/support/bok/solution.qnx?10227 ので、拡張パーティションに入れるには、DOSブートで*.qfsをFATに 入れるしかない。(インストールはWin32がないとできない?) →工夫すればできた。 ・古いQNX(4.X)は8GB以上のHDDを認識しない http://qdn.qnx.com/support/bok/solution.qnx?1281 PCIがないとブートできない版もあった ・[dev]試してないが、 CDROMとHDDが違うコントローラにあるとインストールできないらしい (SCSI CDROM + IDE HDDとか) <news://inn.qnx.com/9mcdss$njg$1@inn.qnx.com> nntp://inn.qnx.com/qdn.public.qnxrtp.installation/3040 ・[pkg]パッケージインストーラは、216番ポートを接続に使うらしく、http proxyしかない 環境では使えない? news:3BAED11D.B9E6F22D@icbt.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/5182 ・[dev] PromiseやHighpointコントローラは対応していない。 (が devb-eideにオプションを渡して無理やり動かせる? http://www.qnxstart.com/viewtopic.php?topic=362&forum=7) 6.2では対応。 ・[mem]最低32MB Photonなしで11MBくらい、Photon起動すると20MBはいく。 swapがまともに使えないので、実メモリが必要。 ▼日本語環境 ・[jp]CDROMで起動しても、ディスクが足りないのか日本語環境はインストールできない。 いったんHDDにインストールしてから日本語環境を入れる必要がある。 ・[jp]全部ではないにしろ、日本語のマニュアルが実は <URL:http://www.qnx.co.jp/products/manuals/index.html> にある。 ・[jp][photon]日本語入力は vpim を起動する。 Shelfに入れておくと便利。(phABで作られているらしくアイコンがつく) ・[jp][photon]ptermでは日本語は出ない。8859-1のみ。 現状ではkterm+Xphotonとかを使う。 ・[jp][dev][kbd]生コンソールでは日本語106キーマップにならない。 devc-conの改造が必要。 ▼システム (順番は項目別?すぐに気づく・ハマる順?) ・[install]Photon環境に入るとまずlocale設定のダイアログが開くが、 hostname を設定してからlocaleを設定すること。 #hostname.XXX(どこだっけ)で登録されるため。 キーボードの設定が /etc/config/trap/.KEYBOARD.`hostname`になるため。 ・[sys] コアダンプはpwdではなく /var/dumps/ にたまる。 ほったらかすと大きくなるので注意。(rc.localで掃除してもいいかも) コアダンプの管理は rc.sysinitで起動されている dumperが行っている。 (limit core 0 相当は dumper非起動?dumper -m?) ・[fs]ファイルシステムとしてはブロックデバイスのほかに、ごく自然に 通常ファイルやパッケージ(!)が扱える。 パッケージとして配られているものはパッケージファイルを/pkgs/に 展開し、それを改めてunion mountしているので、実はバックアップが めんどう。(つーかどうやってやるの?) Message-ID: <96bu4r$f42$1@nntp.qnx.com> Xref: inn.qnx.com qdn.public.qnxrtp.os:2108 Message-ID: <96c8fm$l13$1@nntp.qnx.com> Xref: inn.qnx.com qdn.public.qnxrtp.os:2112 ・[fs]tar filesystemとか http://www.emyr.net/Sam/ ・[fs][pkg]ファイルがfs-pkg管理下にあるかどうかは pkgctl -i <file> で表示できる。 ・[net]NISはサポートされてない、らしい。(FAQより。今は違う?) gethostbyname()のソースなんかを見ると#ifdef内にフックはある。 ・[boot]*.ifs(Image File System, .boot,.altboot)はカーネルのほかに 必要なデバイスドライバやスクリプトも含まれる。 mkifsコマンドで生成。ちょっと詳しい話が http://qdn.qnx.com/articles/jan1901/boot.html (QDN article一覧:http://qdn.qnx.com/articles/index.html) /proc/boot/ 以下に見えるのはこの*.ifsに含まれているファイル。 mkifsは 6.2 NC には含まれていない。かなり痛い ・[kern]??各pathにくっついているresource managerの一覧て見れるのか? 見てみたいんだが…mount -vの出力くらいでは全然足らない。 http://qdn.qnx.com/articles/nov2000/pathname.html には「/proc/mountを見ればわかる」て書いてあるが… (node_id,pid,chid,handle,filetype) news:bkf54o$foc$1@nntp.qnx.com, nntp://inn.qnx.com/qdn.public.qnxrtp.os/11825 →pidはpidin -p <pid>で展開する これ見てもオーバレイの順番は分からんような 要するにresmgr_attach()でメンテされるカーネル側(procnto)のテーブル が見たい ・[dev][fs]dfするとなぜかFDDのランプが点く。 →df は、ファイルシステムだけではなくデバイスについても情報を 取ろうとするので、devb-fdcが管理している /dev/fd0 の情報も出る。 このため df するとFDDアクセスも生じるので遅い。 mount (オプション無し) も情報は出ないが同様らしい。 ・再起動時もdevb-fdcが渋いので、あらかじめ slay devb-fdc しておくと shutdown が速くなる。 ・[net]DHCPをやり直すには、 1)「普通の」設定環境(Photon/phlipで設定している): netmanager<CR> 2) dhcp.clientを手動で起動した: dhcp.clientを(殺してから)起動。デーモンとして残る。 (82557はちょっと相性が悪いのか、ブート時にLINKがつきっぱなしになってこける。 ケーブルを挿し直してdhcp.clientを起動すると使えるようになるが…) (82558は/etc/system/enum/devices/netに載ってない?) ・[boot]ブート時はいろいろ行われるが、 ・*.ifsの[+script]の最後のdiskbootが起動 (diskbootを使わない*.ifsもある) ・diskbootはデバイス関係、mountを行ってから /etc/system/sysinit を実行。 (diskbootの詳細についてはよく分からん。diskbootなしのbuildファイル(/boot/build/*)を参照?) ・sysinitは…現状では slogger,pipe,mqueue,rc.devicesの後 /etc/rc.d/rc.sysinitを実行。 ・rc.sysinitは rc.local の後、tinit を exec する。 最終的にtinit がloginなどを起動するので、psinではいくつかのサービスがtinitに ぶら下がっているように見える。 (なんでdevb-eideやdevc-conがtinit以下にあるんだ?→diskbootが起動するため。) たぶんUNIXに似せるためにこういう手順を踏んでいるんだと思う。 QNX的には全部[+script]内で片づけてもかまわないはず。 ・[boot]diskbootがどこを / としてマウントするのか良く分からんのだが、 diskbootをバイナリダンプした感じでは いったん/fs/に全部マウントした後、/.diskroot のあるところを / とする?(複数あればダイアログを出して選ばせる?) →そのようだ。 なので、以下のようにすれば拡張パーティション自体がqnx4なシステム (FAT同居ではない)が作れる。 ・[install][boot] 拡張パーティションにインストールする ・拡張パーティションにtype=79のものを作る (Debianのレスキューディスクを使用) ・これで QNXを(CDROMなどから)ブートすると /dev/hd0t79 ができる (ファイルシステムが作られてないので/fs/にはマウントされない) ・dinit -h /dev/hd0t79 で qnx4ファイルシステムを作成。 ・どっかにマウント。 ・touch .diskroot でルートであることを示す。(これがポイント) ・再起動。ブートの最中に(diskbootが)「どこからブートする?」と聞くので、 新しい /dev/hd0t79 を選ぶ。 新規ファイルシステムを検出するとインストールが始まる。 →/pkgs/base/.diskrootには mount=/pkgs/base options=ro なんてのがあるのだが、これってdiskbootが読むのか? (diskbootバイナリに含まれてるようだが) ドキュメントがないのでまいってしまう これでも、/pkgs/baseは まだFAT同居なので、ちょっと考える必要がある。 qnx4ファイルシステムの中に/boot/fs を作ればいいんかな? →そのようだ。 ・qnxbase.qfsを qnx4ファイルシステムに引っ越す。 # cp /fs/hd0-dos/P*/qnx/boot/qnxbase.qfs /boot/fs/qnxbase.qfs これを行うと、diskbootが上の/dev/hd0t79について聞いた後、 どっちのqnxbase.qfsを使うか聞いてくる。(/.diskrootがあるつーこったな) 残る問題は、*.ifsを読み込むまでのブートストラップをどうやってFAT(DOS)から 追い出すか、だ。(これは不可能じゃないかな〜)→できる dinitで2次ローダはパーティション先頭に入ってるので、 grub から chainloader (hd0,6)+1 をやってみたが、..... がたくさん出てそれっきり。 (プライマリパーティションしか探してないんだと思うが…) ***→/.boot に *.ifs をコピーしたらうまくいった。*** ちゃんと拡張パーティションも探せるようだ。 書いてなかったが、dinit -b -h -8 -B /boot/sys/ipl-diskpc2 で 8GB IPL,non-floppy な2次ローダにした。 →単に dinit -h -b でもちゃんとブートした。(4GB HDD なので、8GB overではどうなるか要実験) どっちにしても、chkfsysでは「/.bootが1024シリンダにないからブートできないかも」 と言われるが、ブートできてるからいいか… つまり、拡張パーティションのPBRを読み込めるMBRブートローダ(grubやos-bs) があればいいということだな。 やっぱりFAT同居よりqnx4ネイティブのほうが速い。 ・[boot] diskbootが使う.diskroot の「解説」がファイルシステム担当から出たので、 .diskrootの挙動は秘密ではなくなった Re: booting and many points (........) news://inn.qnx.com/aplgdd$n6u$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.installation/5462 が公式解説がない状態には変わりない <BLOCKQUOTE> From: John Garvey <jgarvey(#)qnx.com> Date: 29 Oct 2002 08:21:01 GMT Newsgroups: qdn.public.qnxrtp.installation Well, I don't use diskboot, but from looking at the source ... It can contain lines of the format "mountpt=XXX" or "options=XXX", which can be used to control the pathname to mount at or any per-fsys options. An empty file is equivalent to a file containing the line "mountpt=/". Any filesystems that have specific requirements are unmounted following the initial probe and remounted at their final place (note that this can upset the default mount naming scheme). So presumably you could edit a .diskroot file on all your partitions and have them mount at non-standard ("/fs/hdN-XXX-N") locations ... </BLOCKQUOTE> ・[boot]/.diskrootも/boot/fs/qnxbase.qfsもない状態でむりやりブートすると (フロッピーだけでブートした状態に相当) /.diskroot file for root not found on any filesystem. Starting with safe mode Unable to locate devc-con で止まる。 ・[boot]/.diskroot はあるが /boot/fs/qnxbase.qfsがないと Mounting a qnx filesystem as /fs/cd0-qnxbase.qfs on /fs/cd0/boot/fs/qnxbase.qfs Unmount /fs/cd0-qnxbase.qfs Remounting /dev/hd0t77 as / Unable to locate devc-con diskbootは、/ な /.diskrootが見つかるととりあえず全部マウントを 外すようになっている? CDを挿していても /fs/cd0/.. を拾ってはくれない。 ・[mount] / に対するマウントオプションの指定 / に対し、たとえば noatime オプションを指定したかったら、 mountpt=/ options=noatime と両方書かないといけない。 options= だけでは mountpt=/ にならない。 diskbootに組み込まれている解釈変換は、 「完全に空の/.diskroot は "mountpt=/" とみなす」というものだけ。 ・[boot]IPLローダー(/boot/sys/にあるもの)の簡単な説明は ipl-diskpc1など #http://qdn.qnx.com/support/bok/solution.qnx?10389 http://www.qnx.com/support/sd_bok/solution.qnx?10389 pc{1,2}{,-flop} #http://qdn.qnx.com/support/bok/solution.qnx?10366 http://www.qnx.com/support/sd_bok/solution.qnx?10366 * ipl-diskpc1* は primari loader である (MBR用)。fdiskで入れる * ipl-diskpc2* は secondary loaderである (PBR用)。 dinitで入れる。 フロッピーにはipl-diskpc2*しかない。 * *-flop は旧INT 13 (CHS?) を使う。ipl-diskpc2 は拡張INT13を使う。 ・[boot][install] 2台目の HDD (/dev/hd1) にインストールする: Igor曰く "PBRの0x11 を 0x81 に書き換えよ" nntp://inn.qnx.com/01c242d3$5825cc40$106fa8c0@ED1K 実際はブートローダーに依るのかも。 GRUBでは rootnoverify (hd1,x) chainloader +1 でうまく行くようだ。 LILOではBIOSドライブ交換技が必要? http://www.qnx.com/support/sd_bok/solution.qnx?10049 PBRの0x11 は 0x04 に変わったらしい? →変わってない (jgarvey(#)qnx.com) news://inn.qnx.com/ak1aqa$8lf$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/9272 6.2 のPBRは、DLレジスタが 0x80 以外だとその値をBIOSドライブとして 使うようなので、 ブートローダによっては特に細工をしなくても2台目から起動する。 →ntldrなんかで、2台目のPBRをC:\bootsect.qnx として置くと、 DL=0x80 になる(の?)で、PBRに書かれている値を使う(未チェック) ・[boot] ブートローダの1文字エラー "Hit Esc for .altboot...." のあとにつく文字。 ロクなドキュメントがないが、 http://www.qnx.com/support/sd_bok/solution.qnx?10357 ...D 拡張int13エラー (BIOSが非対応?) ...S 読み込んだ /.boot にシグネチャ "EB 7E (FF 00)" がない (<sys/startup.h> STARTUP_HDR_SIGNATURE) .....................(6行くらいで停止) /.boot用のextentテーブルが腐っている。 /.bootが存在しない(0バイト)か、 qnx4パーティションでないところを読んでいる? '.' は16kB毎に表示。 ・[install][mem]swapを消す: リアルタイムOSだからswapは普通は使わないとどっかにあったような気がするが (from FAQ) デフォルトのインストーラー(/etc/rc.d/rc.setup-once)が問答無用で 128MBの/.swapfile を作る。 これがあると /etc/system/sysinit が swapctlで有効にしてしまう。 ブート後に明示的にrm /.swapfileで消して再起動 してchkfsysすればswapなしにできる。 起動も swapfile なしのほうが速い。 ・[6.1][fs][net]mountの出力に /net/<hostname>がつく理由は不明。qnet関係?→yes. qnetを解除 (umount /dev/io-net/qnet0) すると出なくなる。 6.2ではデフォルトではqnetは起動しないので「普通」に見える。 ・[net]デフォルトではNFSクライアントは起動しないので、使うなら # fs-nfs2 # mount -t nfs <host>:/<path> <mountpoint> 結構メモリを食うので注意。 ・[fs]手動マウントではマウントポイントをmkdirする必要はない。 ファイル名前空間はresource manager管理下のため。reasonableだ。 いきなり mount -t nfs host:/path /nfs/host/path とかもできる。 ・[net]/etc/net.cfg は、/bin/netmanager が読む。 dhcp.clientもこいつが起動してるんだろう。 →/etc/system/enum/devices/net の最後で netmanager を起動している。 ・[net](hostname)ホスト名(ノード名)の設定方法 組み込みにも対応できるよう、いろいろな方法がある。 1) *.ifs に組み込む startup-bios -N <hostname> 2) /etc/HOSTNAME に書く /etc/system/sysinit で読まれるので、diskboot環境での方法。 *** diskboot 自身も /etc/HOSTNAMEを読むらしい。 3) dhcp.client -h <hostname> 手動(や*.ifs)で DHCPを起動する場合? ふつうは使わない。 4) /etc/net.cfg: [global] hostname <hostname> phlipで設定するとここにも書かれる。 netmanager を起動すると設定される。1)や2)の設定は無効になる。 5) phlip (要Photon)で設定する。 1),2) は、ネットワーク(IP)がなくても有効。 1) はファイルシステムを要求しないので組み込み向け。 RTP的なのは 4)。 ネットワークとPhotonが使えるならこれで設定しよう。 TCP/IP / DNSがすべてではないので、hostnameに DNS依存のFQDNなんかを入れようとしない方がいいような気がする。 (QNXはBSDぢゃないぞ!) ・[boot][net](hostname) diskbootも /etc/HOSTNAME を読む /etc/system/sysinit で /etc/HOSTNAME から hostnameを設定 しているが、diskboot 内部でも同じことをやっているらしい。 char buf[200]; if (0 != confstr(_CS_HOSTNAME, buf, sizeof(buf))) { strncpy(buf,"localhost",10); } else { FILE *fd; if (0<=(fd=open("/etc/HOSTNAME", O_RDONLY))) { char *p; memzero(buf, sizeof(buf)); read(fd, buf, sizeof(buf)-1); p = strrchr(buf, '\n'); if (p) *p = '\0'; if (buf[0]) { confstr(_CS_SET_HOSTNAME, buf, 0); } close(fd); } } ・[net](net.cfg)Photonを使わず、コンソールからネットワークを設定するには? *) 手動設定: 固定アドレス: 普通にifconfigやroute addを使う。 他のUNIXのように、/etc/hostname.en0とかに IPアドレスを書いておくと設定されるみたいな ギミックは(デフォルトでは)用意されていない。 DHCP: dhcp.client を起動する。 # dhcp.client -i en0 -u -t 2 *) RTP的な方法: /etc/net.cfgをいじってから netmanagerを起動する。 固定: /etc/net.cfgに [global] domain <DNSドメイン> nameserver <DNSサーバーIPA> route <default router IPA> [en0] type ethernet mode manual manual_ip 172.16.XXX.XXX manual_netmask 255.255.XXX.XXX DHCP: /etc/net.cfgに [en0] type ethernet mode dhcp いずれも、その後に netmanager を起動。引数は普通はなし。 通常は、ブート時にenumuratorがNICを検出すると netmanagerが起動される。 [en0]\ndisabled と書くと、ifconfig down になる。 ・[net]devn-speedoの設定が変? full-duplex対応のスイッチングハブに替えたらなんか動かない。 full-duplexが気にくわないようなんだが、devn-speedo.soのオプションに duplex=0とかしてもハブのランプ表示がhalf duplexにならない。 →82557から82558にしたらとりあえず直った。… developers.qnx.com にある修正版(2001/08)でもfull-duplexはうまくいかないと わかっているようだ(修正はmulticastを切っただけだったか) news:a1jstd$o93$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.installation/4150 ・[net]NICの設定確認はifconfigの他にnicinfoがある。 ・[dev]コンソールでのキーボードマップは変更できるんだろうか?[FAQ] →たぶんdevc-conが対応してくれないとできない。 なんとかするとは言っているが、(2001/03) <nntp://inn.qnx.com/qdn.public.qnxrtp.os/2703><news:99oe4v$p56$1@nntp.qnx.com> 6.1.0でも何も行われていない。6.1.1ではなんとかするとは言っているようだが… <nntp://inn.qnx.com/qdn.public.qnxrtp.os/3665><news:9gtgb8$7jv$1@nntp.qnx.com> (update:6.2でもそのまんま) 将来的にはもっと役割分担して devc-8042みたいなのを間にかませて設定しやすく するようだ。 <news:8sff89$d4s$2@nntp.qnx.com> <nntp://inn.qnx.com/qdn.public.qnxrtp.applications/210> 日本語106のドライバを投稿 //news:a1e0gf$fep$1@inn.qnx.com //nntp://inn.qnx.com/qdn.public.qnxrtp.x86/8 news:au6srh$ngg$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.x86/177 ・[cc]コンパイラ(qcc)とリンカ(ld)は中身はGCC,GNU-ld ・[cc]ldd の代わりにDL_DEBUG=1 ? Xref: inn.qnx.com qdn.public.qnxrtp.os:4009 Message-ID: <9in2nc$rai$1@inn.qnx.com> (RTPでは使えない?) →読み込み失敗時にメッセージが出る (でも普通にやっても出るから役に立たない) あるいは objdump -p ・[cc]http://staff.qnx.com/~cburgess/freestuff/ldd シェルスクリプトな ldd (アクセス不能?) ・[cc]CVSにはlddがあるみたいだが… http://cvs.qnx.com/cgi-bin/cvsweb.cgi/nto/libc/ldd/ (ELFを直接読んで探しまくり) →dlopen()の一部らしい?でもmain()とかあるけど… →#define TESTでしかmain()は使われない。 ・[cc][ldd] lddを投稿した #nntp://inn.qnx.com/qdn.public.qnxrtp.os/7004> #<a3pn15$cuh$1@inn.qnx.com> #news:ajjoip$qhl$2@inn.qnx.com #nntp://inn.qnx.com/qdn.public.qnxrtp.os/9234 news:boqcmg$o3i$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/12111 ・[cc](6.1)なぜかa.outのRPATHを設定しても見てくれない。 *.soを絶対パスで埋め込むか LD_LIBRARY_PATHを使う必要がある。マニュアル(System Architecture->Dynamic Linking)では DT_RPATHを見ると書かれているんだが… →(6.1)バグ。新版では直っている、はず nres:a3n6r9$1ci$2@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/6985 (6.2では直っている) ・[cc]ファイル名(basename)が同じ2つの*.soをdlopen()すると腐れる。 相対パスなら平気らしいが news://inn.qnx.com/<9ra30e$b3j$1@inn.qnx.com> qdn.public.qnxrtp.os:5713 ・[fs]デフォルトでRAMDISKが /dev/shmem に用意されている。 procntoが用意するので設定は不要。容量は搭載RAM量に依存する。 ただしsymlinkやディレクトリは作れない。 よって/tmp代わりに使うのはあまりうまくない。 (組み込み用途ではRAMが少ないので無茶はできない) /dev/shmem/tmp.qfs を作ってマウントしようとしても失敗する。 マウントにはshmemシステムで削られている機能が必要らしい。 ・[fs]マニュアルがない(6.1)が、RAMディスクとして devb-ramがある。 use devb-ram でとりあえず使い方の予想はつく。 devb-ram ram capacity=4096 で 4096ブロック(2MB)の疑似HDDが /dev/hd1、/dev/hd1t77 に作られる。 普通は /dev/hd1t77 をマウントして使うが、直接 /dev/hd1 を dinit して使うことも可能。 (10kBくらいしか違わないが) ハードディスク関係のツールの試験に重宝しそう。 (ただheads=1,secs/trk=1なんだな…AT用のツールは腐れる) 大きさ固定という点が /dev/shmem と違う。 devb-ram disk name=ram とすると /dev/ram0t77 になるようだ。 (cam-disk.soのオプション。CDROM起動がこうなっている。translation=は 効かないようだ…) メモリ使用量はio-blkのキャッシュもあるので、10MBを超える。 ramdiskではキャッシュは意味ないのでキャッシュは切るべし。 (blk cache=0,vcache=0) メモリ使用量は pidin -P devb-ram mem で確認。 news://inn.qnx.com/<9q1nd3$nok$1@nntp.qnx.com> qdn.public.qnxrtp.os:5458 news://inn.qnx.com/<9q1nee$htq$1@inn.qnx.com> qdn.public.qnxrtp.os:5459 ・[fs] mallocなramdisk: http://www.parse.com/free/ramdisk.html news:aklr0r$k9a$1@inn.qnx.com nntp://inn.qnx.com/qdn.cafe/497 devb-ramと違い、大きさが固定されていない。 /dev/shmemよりはまともぽい。 ・[fs] /dev/shmem はホンモノのファイルシステムではないので、 アプリケーションによってはここの中にあるファイルが開けない。 これの対策用に vi -f てのが追加されているらしい news://inn.qnx.com/a6al8c$c32$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/7297 6.2の/dev/shmemは多少本物に近づいている (chmodが使える、とか) ・[fs] cdrom は、ディスクを替える度に毎回mount/umountしなくても mountしっぱなしでよい。FDも同様のようだ ・[fs] /fs/cd0/.info. は何? 隠しファイルではない。 ボリューム名などが格納してある仮想ディレクトリ。 気に入らなければマウント時に -o info= で抑制できる。 オーディオCDをマウントすると再生動作が制御できる。 (任意トラックの再生みたいな機能はない模様。TOCを読まねばならんからね) echo play >/fs/cd0/.info./audio (再生) cat /fs/cd0/.info./audio (現在位置表示) news://inn.qnx.com/<9qd4fn$gnb$1@inn.qnx.com> Xref: inn.qnx.com qdn.public.qnxrtp.os:5498 ・[6.1][dev]IDE がUDMAで動く条件: news://inn.qnx.com/<3B9FE47B.296AC5BA@motorola.com> Xref: inn.qnx.com qdn.public.qnxrtp.os:5063 1) devb-eide がサポートしているチップセットで、 UDMAオプションがちゃんと渡る 2) BIOS で UDMA が有効になっている 3) BIOS と HDD 間の交渉が、devb-eide が対応している速度*以下*になる 現在の devb-eide は DMA-2 まで。 (DMA-4がUDMA33,DMA-5がUDMA66だったかな?) 最近の機械では3)が難しいらしい。 現行設定の確認方法は…ベンチマークだけ? 一応大本営発表もあるようだ。 <URL:http://qdn.qnx.com/news/releases/installation_issues.html> ・[6.1][dev]USB鼠を動かす: デフォルトでは対応していない(enumされない) /etc/config/trap/input.$HOSTNAME に仕込む。 devu-ohci; devu-mouse; kbd fd -d/dev/kbd msoft -i -R fd -d/dev/usbmouse0 news://inn.qnx.com/<Voyager.011115110819.4707s@node341.ott.qnx.com> Xref: inn.qnx.com comp.os.qnx:10744 news://inn.qnx.com/<9tbrh0$k0u$1@nntp.qnx.com> inn.qnx.com qdn.public.qnxrtp.installation:3828 news://inn.qnx.com/<3BF9BA7C.9050903@dedica.com> inn.qnx.com qdn.public.qnxrtp.installation:3829 cd /etc/config/trap mv input.HOSTNAME input.<your_hostname> kbd fd -d /dev/kbd ps2 mousedev kbd -R fd -d /dev/usbkbd0 msoft fd -d /dev/usbmouse0 ・[cc]use <command> で表示されるテキストは、バイナリのusage recordとかresource recordと いうのに格納されていて、usemsgでいじる。usemsg <commandfile> で表示。 通常はメモリに展開されないということで、ELFのセクションかなんか? →"QNX_usage"セクション (.QNX_usageではない)らしい。 objdump -s -j QNX_usage <commandfile> でも抽出できる。 ・[cc]spatchというバイナリエディタがある。 ・[fs]qnx4ファイルシステムの /.inode は縮むことがない。16文字を超えるファイル名やハードリンクを作ると 太っていく。縮めたいなら、新しいディスクにコピるしかない。 news://inn.qnx.com/<9q4g2i$gje$2@nntp.qnx.com> qdn.public.qnx4:5796 ・[kern]リソースマネジャまわりのpowerpoint <URL:http://staff.qnx.com/~thomasf/Docs/thomasfpk.ppt>を HTMLにしてimux3188:/ftp/pub/qnx/thomasfop に置いた。 ・[dev]古い SB16 PnP (CT2940) が認識しない… enum-pnpisa の出力が腐れているのが原因なのだが、enum-pnpisaが悪いのか 板が腐れているのかがわからん。とりあえず手動で mount -Tio-audio -oioport=... とかやると使える。 根本的治療ではないが、/etc/system/enum/devices/audio に手を入れると 自動認識するようにはなるが… --- /pkgs/base/qnx/os/core-2.1.2/etc/system/enum/devices/audio Fri Jun 1 19:43:58 2001 +++ /etc/system/enum/devices/audio Tue Oct 2 19:03:11 2001 @@ -88,6 +88,7 @@ device(isapnp, devid=CTL2011) # Sound Blaster AWE 32 PnP (Model CT3600) device(isapnp, devid=CTL7002) # Sound Blaster AWE 64 PnP (Model CT4520) device(isapnp, devid=YHM0022) # Yamaha OPL3-SA PnP +device(isapnp, devid=PNPFFFF, dma1=5) # kabe: SB16PnP with oddball enum append(legacy, ",noaudio") requires($(IOAUDIO_CMD),) mount("-Tio-audio -oioport=$(ioport),ioport1=$(ioport1),ioport2=$(ioport2),irq=$(irq),dma=$(dma),dma1=$(dma1) /lib/dll/deva-ctrl-sb",) ・[fs][jp]FATでのロングファイルネームは日本語未対応 (たぶんASCII以外は全滅) FAT上で tar cf → tar xf してもロングファイルネームが元に戻らない。 ロングファイルネームのエントリ自体は正常に格納されているのだが、 ショート名にめちゃくちゃなもの(生UTF-8)が入っていて、 Win95ではうまく認識しない。 (WinNT,mtools,Linux VFATなどでは認識するのでWin95固有と思われる) Win95は、 - 8.3末尾が "~1" などのmangleな名前になっている - 8.3がシステムコードページ下で「まとも」である (chev usしても変化なし) でないと LFNを読もうとしないようだ。 報告:news://inn.qnx.com/9uph15$psi$1@inn.qnx.com //inn.qnx.com/qdn.public.qnxrtp.os:6312 ・[6.1][install][net][dev] Latitude XPi CD で IO-DATA PCLA/TE (PCMCIA 10baseT)の認識: そのままでもデバイス自体はne2000として認識するのだが、受信ができない。 知っておきたいツール: pin PCMCIAコントローラの状態を表示。要devp-pccard nicinfo 起動しているネットワークカードの状態表示。要devn-ne2000など <URL:http://qdn.qnx.com/support/bok/solution.qnx?10330>を参考にして、まず手動で 設定してみる。 # slay devp-pccard # slay io-net # devp-pccard -w8,8 #8ビットモード強制 # pin #確認 Sock Func Type Flags PID Base Size IRQ 1 0 Network C---I-+--------- None 0x200 32 10 1 0 Empty ----MF---------- None 2 0 Empty ----MF---------- None 2 0 Empty ----MF---------- None I/OポートbaseとIRQを確認。 # io-net -d ne2000 -p tcpip #tcpip起動。これがないとifconfigが使えない # nicinfo #-d ne2000の効果を確認。 nicinfoの出力でPhysical Node IDなどが正常で、 Total Packets Rxd OK が0以外の値(起動直後からブロードキャスト等を拾っているはず) になっていればok。 (ここで動いた) ダメそうならslay io-netで止めて # io-net -d ne2000 ioport=0x200,irq=10 -p tcpip などとして明示してみる。 動きそうならifconfig -a で -p tcpip の効果を確認。lo0とen0が出てくるはず。 nicinfo を見て、MACアドレスが正常か、 Packets Rxd が ゼロでないか(ブロードキャストなんかを拾っているはず) を見る。 Rxd がゼロのままなら割り込み(IRQ)まわりがうまく行ってない。 まずは固定アドレスを振ってみて、うまく通信できたら dhcp.clientを走らせてDHCPを拾ってみる。 # dhcp.client -i en0 -u -t 2 さて、なぜ普通に駆動するとうまくいかんのかな… →enum-pccardを手動で起動すると帰ってこない。…実際、 プロセステーブルにも起動時の enum-pccardが刺さったままになっている。 あとは devp-pccard に -w8,8 がついていないことか http://developers.qnx.com/Fixes/ で関係ありそうなのはpci-bios位しかないが… →pci-biosを入れ替えてみたが特に効果なし。 devp-pccard -w8,8 かね… /etc/system/enum/devices/bridge をいじればいいようだが requires(devp-pccard, "-w8,8") これを修正しても enum-pccardが固まるのは直っていない (全部enumはして Fxxxxxx 行まで出てるんだが終了しない…) →18:48 2001/12/20 もしかしたら終了しないのが正常なのかも。 明示的にenum-pccardを起動して挿す→抜くをやると、ちゃんと 挿す・抜くの記録が出力される。 →enum-devicesのマニュアルのF<pid>項に書いてある。走ったままであるべし。 本来ならブート時に挿さってなくても後から挿せばne2000ドライバが 立ち上がるはずなのでは (pccard-launchで自動化する?) pci-bios入替え、devp-pccard -w8,8にしたらdhcpも動くようになった? enum-device -c /etc/system/enum/devices/net -e pccard -n -v でログを出すと 挿入時に "Unable to find definition for device:" とか言われてるけど… どうやってne2000として認識してんのかな →06:12 2001/12/21 /etc/rc.d/rc.devices末尾のlegacy neednet句がキモのようだ。 PCLA/TEを挿してから手動で enum-legacy neednet とやると、 bus=isa type=02 subtype=00 progif=00 ioport=200 てのが出てきて、これで認識される。…いいのか? 再挿入時にはenum-legacyは起動しないので認識されない。 …マニュアルがないのでつらい このneednetがないとlo0インタフェースも作られなくなってしまう 18:19 2001/12/24 今度は挿しっぱなしにするとデバイス初期化が間に合わないらしくnetmanagerが エラーを出してDHCPが起動しない。手動でnetmanager<CR>とすれば動くが (waitfor /dev/io-net/en0 をどっかに追加する?…lo0のためにもnetmanagerは必要?) 18:21 2001/12/24 mount出力が今度は /net/corvus.soft.mydomain.ac.jp/になっている。 shutdownのときにio-netで固まるのはなんとかならんのだろうか (BIOSのディスク周りのsuspendを切ると改善する?) ・[install][dev] Latitude XPi CD で CDROMドライバが固まる CDROMを突っ込んどかないとcdアクセス(mountとかls /fs/cd0で)固まるのは何とかならんか →.altbootでは起きていない。ううむ? →DMAを切ったら直った。??? →直ってない。mount<CR>とすると固まる。 devb-eide のオプションをいろいろ追加してみたが効果ないようだ。 devb-eide eide cmd640,pio,slave,timeout=2 simq_timer: building abort ccb ata_start_ccb: func10 これは IRQ衝突によるものらしい。どうやって直せちゅーんじゃ news://inn.qnx.com/9j1qtl$rh9$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/4063 DMAを切ると直るという説もある。 Wed Apr 10 00:10:21 JST 2002 (not corvus, but lacerta) 電池駆動していると不安定になるようだ。 (確かに電池だとCDROM駆動時に画面の明るさが変ったりする) ・[net][dev][pccard]ブート時に挿していなかったPCカードのネットワークはどうやって認識させる? (本来ならenum-devices/enum-pccardが自動的にやってくれそうなんだが…) まず pin で PCカード的に認識されているか確認。 pinでそれらしく認識されていたら、 # mount -T io-net /lib/dll/devn-ne2000.so (よって挿したカードのドライバ名がわかってないとダメ…) (/etc/enum/devices/netを見ると、わからんネットワークPCカードは 全部ne2000とするようになってるようだが…) →.type=てのは普通のenum-pccardでは出てこないから使われていない。 はて、どうやってPCLA/TE(ven=0x1bf dev=0x2216)認識してるのだろ (ven/devは NetBSDのusr/src/sys/dev/pcmcia/pcmciadevs あたりを参考に。 NetBSDでは ne2000ドライバに含まれている) nicinfo でパケット送受がされているか確認。 よさげなら IPアドレスを設定する。DHCPなら # dhcp.client -i en0 -u -t 2 ・[net][dev][pccard]んじゃ抜くときは? # umount /dev/io-net/en0 ifconfigのエントリとnicinfoが消える。(pinはそのまま) ちゃんと設定されていれば抜いたときに自動的にumount /dev/io-net/en0が実行される (F6 F6のverboseモードで確認。enumのmount_clauseの第3引数) 実際は手動でumountしたほうがデバイスドライバにやさしいはずだが ・[dev]enum-devicesで不明とされたものは /etc/system/trap/unknown にエントリが書かれる。 ・[dev]追加デバイスのenumデータは /etc/system/enum/devices/* に直接書くのではなくて、 /etc/system/enum/oem/* か /etc/system/enum/overrides に書く? (cf. /etc/rc.d/rc.devices) ***→overridesに書いたら再挿入で認識するようになった。(DHCPもやってくれる)*** たぶん oem/IODATAとかでもいいのでは。→OK. ・[dev]/etc/system/enum/devices/* を直接いじらなくても /etc/system/enum/oem/* か enum/overrides に書けば そっちが優先される。特定デバイスのenumurator停止も可能。 devp-pccardのオプション設定はこっちでやるべし。 (b1s1u4$6qm$1参照) Subject: Re: [Q] Where to put manual enet config commands? news:b1s1u4$6qm$1@nntp.qnx.com nntp://inn.qnx.com/comp.os.qnx/13149 (自分のまとめ) Subject: How do I disable certain device enumurators (/etc/system/enum/devices/) news:b9b77j$394$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.sysadmin/94 Subject: How do I add an enumurator for a new device? news:b9b7qd$394$2@inn.qnx.com nntp://inn.qnx.com/qdn.public.sysadmin/95 ・[dev][net][6.1] I-O DATA PCLA/TE の「正しい」認識のさせかた: 以下を /etc/system/enum/oem/IODATA として追加。 (0x01bf/0x2216てのは OEMらしく、PCLA/TE以外にもあるらしい) <URL:http://www.kaynet.or.jp/~kay/ml/netbsd-pcmcia/msg/msg00393.html> ########### # # Definitions for OEM devices # device(pcmcia, ven=01bf, dev=2216) #I-O DATA PCLA/TE tag(devn) append(legacy, ",nonet") requires($(IONET_CMD),) uniq(netnum, devn-en, 0) # assume pcmcia only have one ethernet card for now so en0 is always used # mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq)" /lib/dll/devn-ne2000.so, "/dev/io-net/en$(netnum)") mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq)" /lib/dll/devn-ne2000.so, "/dev/io-net/en0") use(symbolic=netmgr) # do we need this? yes, on cold boot device(symbolic=netmgr) # requires(@devn) waitfor(/dev/socket) waitfor(/dev/io-net/ip0, 5) start(netmanager) ########## これだとブート時に挿していなくても再挿入で認識される。 抜いたときの/dev/io-net/en0の切り離しもやってくれる! (やっと本来の形になったというか) 切り離しはどこでやってるんだ? dhcp.clientは走りっぱなしだが、再挿入時に再起動されるようだ 末尾のnetmanager起動部がないと、挿しっぱなしで起動したときに うまくnetmanagerが走らず、dhcp.clientが起動しない。 なんでだろ。 ・[dev] PCカードのdevice/vendorの得方 いったん slay enum-pccard で稼働中のenumeratorを止めてから、 再度 enum-pccard を起動すると d749577 bus=pcmcia removal_id=1 ven=1234 dev=5678 class=0600 ioport=0200 irq=10 index=0 と出てくる。ここの値を拾って、新しく /etc/system/enum/oem/* を書く。 enum設定ファイルには device(ocncia, ven=1234, dev=5678, .class=0600) と .class (classではない…) も書けるので、えーかげんな ven/dev では書いといた方がいいかも。 ・[dev][net] Latitude XPi CD 166ST で Planex FNW-3602-TXを使う? 中身は AboCom FE2500 (AN985)なのだが、pci vendor id が 書き替っていてそのままでは認識しない。 [強引に認識させる] 本来なら devn-tulip に vid=0x14ea,did=0xab08,chipset=2500 で認識させられるはずなのだが、ベンダIDなどがハードコードされていて 全然機能しない。 従って、/lib/dll/devn-tulip.so をバイナリパッチして、 ・0x14ea,0xab08 をスキャンするようにする ・チップセットがわからなければ default: chipset=2500 これを /lib/dll/devn-tulip-2500.so としておく。 (バイナリパッチは spatch が使える) cmp -l /lib/dll/devn-tulip.so /lib/dll/devn-tulip-2500.so 11704 333 277 11722 311 255 66229 321 352 66230 23 24 66231 2 10 0002DB0 0f 84 5e 01 00 00 e9 db 01 00 00 90 81 fa 86 80 ..^............. bf 01 0002DC0 00 00 0f 84 f4 00 00 00 e9 c9 01 00 00 8d 76 00 ..............v. ad 01 00102B0 5d 11 03 00 d1 13 02 ab 00 00 00 00 e1 f1 30 b0 ].............0. ea 14 08 ab チェック: slay io-net io-net -d tulip-2500 verbose=10 -p tcpip これでそれっぽく認識されていれば成功。 普通のノート機ならこの段階で使えるようになるはず。 (nicinfo の Rxd が非ゼロになっていれば正常) ・Latitudeに認識させる? LatitudeのCardBusブリッジ(PCI1131)が変なのか、 BIOSのPCI割り当てが変なのか、Latitudeではこのままでは 割り込みを拾えないのか、 Rxd がゼロのまま。 デフォルトではPCI1131とFNW-3602には両方 irq=9が割り当てられる。 いろいろやってみた結果、 (古い、デフォルトの)pci-bios -dbios irqlist=3,5,7{,9} #devp-pccard -l3,3 -w8,8 devp-pccard -l3,10 -w8,8 io-net -d tulip-2500 verbose=10 -p tcpip で使えるようになった? あれ、使えない。 上をやった後、挿し直すと使える?(使えないがRxd=240になる) PCLA/TEと供挿ししたり抜いたりすると使えるようになる? pccard -l3,10 -w8,8; PCLA/TEと供挿しし、irqが違うことを確認してから PCLAにあったスロットに挿し直し、io-net(再)起動? (みたい…pci-biosはFixesオプションなしで可) slay enum-pccard; slay devp-pccard; slay io-net devp-pccard -l3,10 -w8,8 PCLA/TEとFNW-3602を*両方*挿す (本来はPCMCIAとCardBus混在はPCI1131はサポートしてないはず) pin で irq が違うことを確認 両方抜いて、FNW-3602 をPCLAがあったスロットへ挿す io-net -d tulip-2500 verbose=10 -p tcpip エラーは出るが、 nicinfo のRxdが漸増していけば使える。 (tulip-2500は非動作時と同じくLink Downと出るがRxdが 非ゼロになり使えるようになる) さらに省手順: slay enum-pccard; slay devp-pccard; slay io-net devp-pccard -w8,8 PCLA/TE を挿して pin に認識させ、 (この段階ではenum-pciでは1131の片側にはirqがついていない) FNW-3602に入れ替える io-net -d tulip-2500 verbose=10 -p tcpip (あれ、ダメか) いったんは両方挿しておく必要があるようだ。 PCI1131の割り込み初期化まわりのコードに問題がある? (PCMCIAにあってCardBusにないコード経路?) いっぺん認識されれば、devp-pccard をオプションなしで 再起動しても使える。 動いても ftp で 24MBit/secしか出てないのであまし嬉しくないかも。 (…PCMCIA速度?) これらの実験は新しい方のXPiでやった。 古いほうのXPiでも認識手順は同様なんだが、使ってる最中に Win95と同じ固まりかた(大パケット?)をする。 CardBusブリッジのリビジョンが違うのかしらん ・[fs][dev][pccard] PCカード(PCMCIA)のメモリカードを認識させる memory pccard [6.2] デフォルトでは自動enumuratorが設定されていないので、 まずは手動で認識・マウントする。 普通のPCMCIAメモリカードは IDEデバイスとして動作するので、 devb-eide で認識させる。 (devf-ram, devb-ramはメモリに直接見えるタイプ用) 注意:IDEデバイスは16ビットI/Oが基本なので、 腐ったPCMCIAコントローラ・NE2000互換カード対策で devp-pccard -w8,8 で8ビットモードを強制している場合は メモリカードに使うスロットを16ビットに指定し直すこと。 8ビットのままだと xx 00 xx 00 ... のようなデータが読み出される。 *) まず挿して、pinでアドレスとIRQを確認。 # pin Sock Func Type Flags PID Base Size IRQ 1 0 Disk C---I-+--------- None 0x200 16 7 1 Disk ----MF---------- None ... *) 表示されたアドレスとIRQを使って、devb-eideを起動。 # devb-eide eide ioport=0x200:0x20c,irq=7,noslave ** 上のオプション列はQNX6.2用。 0x200:0x20c と、0x0c だけ離れたアドレスを指定するのは PCMCIAメモリカードのお約束。6.2のdevb-eideのマニュアルに記述あり。 ** devb-eide eide の xfer= 転送幅オプションにはあんま効果はないようだ。 *) うまくいけば /dev/hd1と、すでにフォーマットされていれば /dev/hd0t6 などが現われるはず。 /dev/hd1 すら出てこないなら、ioportやirqの値を確認。 eide verbose オプションもあるが問題解決の役にはあまり立たない。 PCMCIAブリッジの動作がおかしい可能性もあるので、 動作するPCMCIAカードが動作するかもチェック。 /dev/hd1 しか現われない場合は、 spatch -b /dev/hd1 でバイナリダンプを見てみる。 データが xx 00 xx 00 になっている場合はデータ幅 (8,16)が 合ってない。16ビットにそろえる。 何度もdevb-eideを停止・再起動する際は、ハードディスク用の devb-eideを止めないよう注意。 slay -q devb-eide で毎回yes/noを答えるようにしておく。 *) ファイルシステムのマウントは mount -t dos /dev/hd1t6 /fs/t6 などとして行う。 ・[fs][dev][pccard] PCカード(PCMCIA)のメモリカードを自動認識させる memory pccard 上の手動認識が出来るようになったら、今度は enumeratorを書いて認識できるようにする。 enum/oem/* を書換えた後は特に enum-deviceを再起動しなくても そのときファイルに書かれているenumurator設定が使われるようだ。 (/etc/rc.d/rc.devices -vv で起動して見るとmtimeをチェックしているようだ) ============================= { # # /etc/system/enum/oem/memcard # # PCMCIA "Fixed Disk" (IDE type memory card) device(pcmcia, .class=0400) driver(devb-eide, "eide ioport=0x$(ioport):0x$(ioport)+12,irq=$(irq),noslave disk name=pcmem") ## does unmount, but not kill devb-eide?? #waitfor(/dev/pcmem0, 50) #mount("-t dos /dev/pcmem0t1 /fs/pcmem0","-f /fs/pcmem0") ============================= } 解説: ・device() の一致表現は、.class=0400 だけでよさげ。 この値は /etc/system/enum/include/* では 定義されていないようなので直書き。 ・driver() でのdevb-eideのioportには必ず 0x を前置すること。 つけないと 0200 が8進数だと思われてしまう。 +0x0c するのは "+12" と書けるようだ… (マニュアルなし) ・"disk name=pcmem" で、ブロックデバイスが /dev/pcmem0 に現われる。 ・マウントはとりあえずあきらめ。 一応mount/umount句はコメントアウトで書いてある。 パーティションIDは"1" に決め打ちしてある(OLYMPUSカメラ用) コメント外してマウントを有効にすると、 マウントはちゃんとうまく行くが 抜いたときにdevb-eideが死なない。(umountはされる) まあいきなり物理的に抜けばおかしくなるの当然なんだが なんか「取り外し」みたいな手順ないんかな… (enum-devicesへの信号になるはず) マウントしてなければdevb-eideは抜去時に停止する。 もともとmount()句はio-netやio-audio用なので ファイルシステムに使うには無理なのかもしれんが… ・[mem]swapon でswapを設定していても使えない? メモリが足りないとmkifsがコア吐いてこけたりする。 swapctl -c -m -a /.swapfile で signature を追加すると ある程度は使われる? →gccが細工されていて多少は使うらしい。 <URL:http://qdn.qnx.com/support/bok/solution.qnx?9390> によると、munlockall() を使えばswapするようになるらしい。 マニュアルでは「使えない、errno=-1」とあるが実際にはerrno=0になる。 →確かにswapが使われるようになるみたいだが(swapctl -s)、 gcc(fork())なんかはやっぱりこける。 malloc()のくりかえしは耐えるようだが 結論:swapは使えません。 ・[mem]なんでもないツール類が異常終了したりコア吐いたりする メモリ不足の可能性があります。(32MB以下の機械で起こりやすい) 端末なら pidin info、 Photonなら右下のSystem Monitorの緑の棒グラフがメモリ使用量。 右に振りきれていればメモリ不足。 swapは公式サポートされていないし、ちゃんと動かないようなので無駄。 ・[mem][fs] /.swapfile のディスク領域が解放されない? /.swapfile を消しても、procmgrが手放すのはシャットダウン時。 シャットダウン時はdevb-eideなどはすでに動いていない!ので リンクカウントが 0 にならず領域が解放されない。 消したら chkfsys で掃除する。 news:a3cad5$2j0$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/6954 (実際に実験してみると確かにそう。128MBがデフォルト/.swapfile なので効果は大きい。) ・[mem][cc] gccはswapを使うように改造してある。 news:a3gadi$29l$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/6970 でもあまり役に立たない。 ・[fs]devb-eide blk cache=3mとかしても使用メモリ量が減らない? 5.7MBくらいは常にdevb-eideに確保されてしまう… ・[net][fs]NFS越しのイメージ(*.qfs,*.iso)はマウントできない。 ・[net][fs]mount の出力に /net/<hostname>.<domain>/ がつくのは qnetらしい。qnetを解除 (umount /dev/io-net/qnet0) すると出なくなる。 ・[dev][kbd] devc-conを入れ替える。 たいていのドライバ類は*.ifsかfs-pkgのspillに入れれば入れ替わるが、 diskbootを使っていると devc-conとfs-pkgだけは入れ替えることができない。 それを強引に入れ替える方法。11:50 2001/12/26 diskbootは、devc-conとfs-pkgだけは *.qfs マウント直後に直接/pkgs/から起動している。 どうやって検索しているんだ? (devc-conだけ入れ替えてブートでのが困難) … /etc/system/package/packagesの中を "qnx/os/"と"/x86<"でマッチさせてるのかも てことは、/etc/system/package/packagesを細工すればdevc-conも入れ替えられる? →失敗。safe-config側のpackagesを読んでたとしたらお手上げだ… #→qnabase.qfsをもう一つ用意して実験すると、確かにブート時にはsafe-config側の # packages(/pkgs/base/safe-config/etc/system/package/packages)が # 読まれている。(変なエントリがあるとエラーを出す) このエラーはfs-pkgのもの。 直接qnxbase.qfsを書き換えるしかないのか〜? 入れ替えたらpidin -f nの表示がコンパイル時の位置 /root/cvs_ddk/... とかになってる。バイナリに埋まってる値だが何故でる? 荒業として、 ・念のためqnxbase.qfsをもう一つ用意し、 ・その(/pkgs/base)/qnx/os/drivers-2.1.2/x86/sbin/devc-con -> /proc/boot/x86/devc-con としてむりやり*.ifsに突っ込めるようにした。 これだと入れ替えられる。 *.ifs には x86/devc-con=<コンパイル済のバイナリ>を書いておくこと。 jp106なdevc-conを作ってみた。06:13 2001/12/26 無理にln -sしなくても、qnx/os/drivers-2.1.2/x86/sbin/devc-conを消してしまえば /proc/boot/のが使われるようだ。diskbootのstrings -aを見ると、 /pkgs/base/%s/%s /pkgs/base/safe-config/x86/sbin /bin /sbin /proc/boot ("Unable to locate %s") の逆順で devc-con や fs-pkg を探す?(文字列が末尾にあるのでたぶんサブルーチン) ここまでやったこと: ・jp106対応のdevc-conを作る。 ・/proc/boot/devc-conとして*.ifsに組み込む ・qnxbase.qfsを書き換えでマウントしてqnx/os/drivers-2.1.2/x86/sbin/devc-conを消す。 逆コンパイルすると、 "sbin/devc-con" を /etc/system/package/packages のパスから探す "qnx/os/" && "/x86<" && !":ignore" このパスに /pkgs/repository/と/pkgs/base/をくっつけてチェック *最初に /pkgs/repository/qnx/os/drivers-2.1.2/x86/sbin/devc-con が *チェックされるから、これが使える?* これで存在しなければ, devc-conを /proc/boot /sbin /bin /pkgs/base/safe-config/x86/bin: /fs/cd*-qnxbase.qfs/safe-config/x86/sbin から探す。 (fs-pkgはまだ動いてないので、/sbinやらを探すのはfs-pkgを使わない設定用) * /proc/boot x86/ sbin/devc-con とすればよい。 ・手順: ・jp106対応devc-conを用意する。 ・*.ifs に、 /proc/boot/x86/sbin/devc-con として含める packagesごまかしに必要~~~ ~~~~~~~~~~~~~~ diskboot埋め込み ・/etc/system/package/packages に、ダミーの行を追加する。 どこでもいいので <QPF:dummy>qnx/os/../../../../proc/boot/x86</QPF:dummy> ・新しい*.ifsでブート。起動時にverboseにすると /pkgs/repository/qnx/os/../../../../proc/boot/x86/sbin/devc-con として現れる。(美しくない…) ただこの方法はやっぱし相当汚いし、diskbootのpackagesスキャン方法が変わると 使えなくなるので、美しくするなら*.qfsからdevc-conを消したほうがいいかも。 ただし消すと、デフォルトの*.ifs (devc-conが入ってない)でブートできない。ううむ 一番正しいのはdiskbootにオプションを追加することだろうけど 判明している方法 (criterion: デフォルトの*.ifsでブートできるか、外せるか) ・qnxbase.qfsからdevc-conを消し、 *.ifs に/proc/boot/devc-conとして持たせる pros: pidinの出力がきれい、変更したものの入替えが簡単 cons: qfsをいじらねばならん デフォルトの*.ifsでブート不能(devc-conがない) ・/etc/system/package/packages にダミー行を書き、 *.ifsに /proc/boot/x86/sbin/devc-con として持たせる pros: デフォルト*.ifsでもブート可能 (改造devc-conは外れる) ダミー行の書き方次第なので*.ifsに入れなくてもいい (x86/sbin/devc-conで終わることが条件) 自由度は最も高い cons: pidin表示がきたない diskbootのpackagesスキャン方法が変わると使えない ・/pkgs/repository/qnx/os/drivers-2.1.2/x86/sbin/devc-conとして置く pros: 置くだけ。最も簡単。デフォルト*.ifsブートも可能だが cons: デフォルト*.ifsでも常に改造後のものでブートする diskbootロジック変更に弱い? ディレクトリ名がそれっぽくて公式モノと間違えやすい pidin -f n の表示がコンパイル時パスになる? diskbootの[space]検出時はどこのconドライバ使ってるんだろ?(*.qfsマウント前…) →逆コンパイルしたところ、要所要所でポーリングして直接in8(0x60)している。 ・[dev][jp] devc-con-jp106 のパッケージ化 姑息だが、/pkgs/repository/qnx/os/*/x86/sbin/devc-con に入れられれば パッケージ化できる。 一応 Character DDK には テンプレートの package.qpg がついてるのだが、 本来はもっと大きなパッケージの一部なのであまり使えない。 (QPG:Addの使い方の参考にはなるが…) 結局 *.qpg を大幅追加し、さらに qnx/os/core-1.0 ではなく qnx/os/jp106-1.0 にするために sed で *.qpm と MANIFEST を 改造するようにする。 Thu Dec 19 08:58:57 JST 2002 ・[net] /etc/resolv.conf より /etc/net.cfg ? nameserverの設定は /etc/net.cfg のものが使われるらしい。 DHCPでは /etc/resolv.conf がアップデートされないみたい? なので、nslookupが使えない。(pingとかは通る) ソースを見ると http://cvs.qnx.com/cgi-bin/cvsweb.cgi/lib/socket/gethostnamadr.c?rev=1.1.1.1&content-type=text/x-cvsweb-markup gethostbyname()はres_search()を呼び出す。 (ソース的にはYPにも対応しているようだ) res_search(2): 「設定は構造体 _res に入っている」 組み込み用途ではファイルシステムを太らせたくないから 妥当な処理だと思う。res_init()で設定するらしい。 だから現在のresolverまわりの設定は /etc/resolv.conf を 見てもわからない。phlip では見えるが、Photonが欲しくないときは (自分でプログラムを作る?) →nsaddr_list[*]は全部0.0.0.0?? →res_init()したら埋まった。 リゾルバの設定は 1) RESCONF環境変数の値 2) getconf RESOLVE の値 3) /etc/resolv.conf の順で検索される。この辺の初期化はres_init() http://cvs.qnx.com/cgi-bin/cvsweb.cgi/lib/socket/nto/ res_init.c でやっているらしい。 netmanagerが setconf RESOLV を設定するらしく?、 後から /etc/resolv.conf をいじくっても設定は反映されない。 組み込み用途では /etc/resolv.conf の中身を RESCONF 環境変数 に突っ込むことができる。 ソースを見ると、_res.lookups[]は空だと "bf" (bind,file) にデフォルトするらしい。 resolv.confとRESCONFに設定がないと getconf RESOLVE の 値が使われるようだ…"nameserver_172.16.164.2\n" になってる。 "_" -> " " は res_init()でやっている。 DNS domainは resolv.conf/RESCONF/LOCALDOMAINにないと getconf DOMAINが使われる。 netmanagert -w all -f <file> でこれらの情報を引き出せるようだが、 <file>にstdoutが指定できないみたいなので P=/tmp/n$$; netmanager -w all -f $P; cat $P; rm $P とかになる。 ・[sys] load averageのとりかた? ClockID()のマニュアルに例がある。 UNIX のload averageに相当するデータはカーネル(procnto)では 保持していない、ようだ。 news:abbuqu$kp$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/7912 コマンドでは spin や load-src で採れる。 ・[cc] adjtime()はない。 従って、ClockAdjust(),ClockTime() (neutrinoシステムコール)を使って 自作する必要がある。 時刻関係は xntpd を突っ込んだほうが簡単かもしれん。 →rdate 移植時に自作した。 news:akod83$hpn$2@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.porting/785 ・[sys] ntp-4.1.72 news:aj4le1$l96$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.porting/764 ・[boot][fs] シングルユーザーモードってどうすんの シングルユーザーが欲しいんでなくて、 最小限の状態でchkfsysしたいんでそ。 ブート中のくるくるで [space] [F5] ("Start a debug shell...") を押してブートすると、 fs-pkg起動前 と fs-pkg起動後、sysinit起動前 の2回、非常用シェル (fesh) が起動する。 fs-pkgを起動していないと /bin/ls なんかは使えないが、 万全を期すなら最初のシェルで始末すべし。 (qnxbase.qfsや /pkgs/ が壊れていないのが確実なら2回目のシェルでも良い) fs-pkg未起動なので直接 /pkgs/ に入り込んでコマンドを探す。 # cd /pkgs/base/qnx/os/core*/x86 # sbin/chkfsys /dev/hd0t77 などとしてチェックすべし。 exitで非常シェルを抜ければ通常の起動を続行する。 /bin/ls が使えなくても feshにはいくつか組み込みコマンドがあり、 最小限のファイル操作が可能になっている。 els, eecho, ecp, erm, emkdir など。 さすがにエディタはない。 条件分岐系のコマンドもないので、スクリプトを書くためのシェルではない。 ・[fs] rc.local とかでは chkfsysはできない chkfsys は全ファイルクローズのioctlを発行するため、 rc.local や rc.sysinit から実行するとスクリプトが止まってしまう。 (未チェック) ブート時にchkfsysしたいなら*.ifsに仕込む必要がある。 "Re: [Q] Where to place a 'chkfsys'?" news:ar0foe$emc$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.neutrino/32 → /dev/shmem にsysinitを無理やり移してchkfsysさせる方法 Subject: Re: Error when sh start after chkfsys news:brttfl$h8h$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.neutrino/206 ・[fs][pkg] fs-pkg管理下のディレクトリは消せない fs-pkg管理下のファイルに関しては変更や消去が可能だが、 ディレクトリを消すことはできない。 "Operation not permitted" でつっぱねられる。 ・[fs] qnx4 fsではファイル名は最大48文字 longfilenames ただし、16文字を越えるファイル名は /.inode を 消費した上で別のinodeブロックにファイル名が格納されるので、 スピードやディスク消費・フラグメントを押さえたいなら 16文字以下にしよう。 6.2.1以降では、/.longfilenames を作ると48文字を越えられるらしい。 (6.2.1以降のdinit -N 参照) ・[dev][6.2] devb-eideをむりやり再起動 restart devb-eide 6.2 NC以降では mkifs がないので diskboot経由で渡す devb-eideのオプションが変えられない。 ので、むりやり再起動させる方法。 ramdiskに必要なものをいったんコピーしてから devb-eideを殺して新しいオプションで起動する。 Re: shell programming question (2002/08/30-からのスレッド) news:01c25363$e9f7e400$106fa8c0@ED1K nntp://inn.qnx.com/qdn.public.qnxrtp.os/9371 hot-restart devb-eide (Re: shell programming question) news:al31fr$bjb$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/9374 news:01c25410$2b7fc940$106fa8c0@ED1K nntp://inn.qnx.com/qdn.public.qnxrtp.os/9384 ▼Photon ・[kbd]Photonの日本語キーボード環境では\と¥は区別される。 プログラミングでは注意 ・Photonを自動起動しないようにするには、touch /etc/system/config/nophoton 判別は /etc/rc.d/rc.sysinitで行われている。 ・グラフィックデバイス再認識をさせるには crttrap clear ? ・Photon環境の下端と左端のバーは"Shelf"という。形は違うが下も左も同じ物。 設定は右のConfigure→Shelfかshelf -cで行う。 ・[kbd]Photon環境でのキーマップはConfigure→Localization(phlocale)で行える。 /etc/config/trap/.KEYBOARD.<nodename>を変更し、これを devi-hirunが読むらしい。 (変更の際に入力がいったん固まるのは devi-hirun を再起動しているため?) これに加え、新しい devi-hirun(6.1 patch) では ln -s ../../config/trap/.KEYBOARD.`hostname` /etc/system/trap/.KEYBOARD.`hostname`も必要 ・[kbd]キーマップ新規作成は mkkbd ユーティリティで行うようだが、 6.1.0 には含まれていない。(バグ) news://inn.qnx.com/<9nloga$797$1@nntp.qnx.com> qdn.public.qnxrtp.photon:1894 あっても大したことはできないような気がするけど ・[dev]Xphoton(XF86?)はシリアルマウスしか使えない?(未確認) news://inn.qnx.com/<Pine.LNX.4.33.0109031604420.7667-100000@mama.indstate.edu> qdn.public.porting:531 →XphotonはPhoton上でXだし、ちゃんと使えているようだが… ・shockwaveが動かないときは VPI_PLUGIN_PATH=/usr/photon/bin をやってみる news:<3af14f87.782625@inn.qnx.com> qdn.public.qnxrtp.applications:781 ・ctrl-alt-shift-BSでPhoton強制終了? (マニュアルのどっかにあったような気もするが…) news://inn.qnx.com/9qt5hr$pv5$1@nntp.qnx.com qdn.public.ddk.network:529 ・[install][photon][dev] Latitude XPi CD で トラックボールが使えない 外部マウスは使える。 →devi-hirunを入れ替えたら直った。(6.1) ・[photon]Xphotonをインストールするとph起動時に勝手にXphotonも起動する? ようになっている。けっこうメモリ食いなのでいらないときはいらないかも。 ph -x で let xphoton=0 として Xphoton を起動しないようになるはずなのだが 肝心の Xphoton 起動時に /usr/bin/ph (シェルスクリプト)が この値をチェックしてないのでいつも Xphoton は起動する。 ############### --- /usr/bin/ph Tue Jun 26 07:00:31 2001 +++ ph Thu Jan 17 03:12:55 2002 @@ -341,9 +341,11 @@ fi fi + if [ "$xphoton" != 0 ]; then if test -x $X11_PATH/bin/Xphoton -a -d $X11_PATH/lib/X11/fonts ; then Xphoton -once & gtwm >/dev/null 2>&1 & + fi fi fi fi ############### Xphoton は XをPhotonに変換するもの。 Xのddx部分がPhotonになったものと考えよう。dixはXFree86。 ・[install][photon][net][kbd]Photonを起動するたびにキーボードが英語にもどってしまう? ph 起動時にhostnameがlocalhostのままのためと思われる。 phlipで設定するホスト名は /etc/net.cfg にしか書かれず、ネットワークが まだ設定されていない (dhcp待ちなど) 状態ではhostnameはlocalhostのまま。 まじめに /etc/HOSTNAME にノード名を放り込んでおくのが正解。 (インストーラーではやってくれない(と思う)ので各自でやること。ハマリ度大) 従って、新規インストール時の設定順番としては *) テキストモードで /etc/HOSTNAME を設定する *) (再起動 or hostnameを設定) *) Photonを起動(ph)。 /etc/HOSTNAMEを設定せずに phlocale の設定を行うと、 ホスト名localhost に対して各種設定が行われるので、後で phlipでホスト名を設定したときに食い違ってくる。 …でも /etc/config/trap/.KEYBOARD.localhost をja_JP_106.kbdにしておいても 英語のままだな…なんでだ →…/etc/HOSTNAMEを設定しても英語キーボードのままだー hostnameはちゃんと設定されてるんだが (QNETホスト名がcorvus.net.intraになってるせいかな…) ・[photon][kbd]なんでPhotonを起動すると毎回英語キーボードになってしまうのだろう Localizationで再設定すればちゃんとjp106になるし/etc/config/trap/.KEYBOARD.corvus も~/.ph/uc_local_tも設定されてるのだが… →ネットワーク設定(dhcp)が終わっていないとhostnameはlocalhostのまま。 phlipで設定するホスト名は /etc/net.cfg にしか入らず、ネットワークが 設定されていないと【hostnameに書き移されることもない?】 よって、ホスト名(ノード名)は真面目に/etc/HOSTNAMEに書き込んでおくべし。 →***バグ phlocale は /etc/config/trap/.KEYBOARD.<hostname>を書き換えるのだが、 *新しい* devi-hirun は /etc/system/trap/.KEYBOARD.<hostname>を読む。 (6.1.0標準バンドルの devi-hirunは /etc/config/trap/.KEYBOARDを読むので問題が起きない) よって、シンボリックリンクを張っておけば起動直後からキーマップをjp106にできる。 news:a1heih$bd$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.photon/2379 ・[photon][kbd]Ctrl-Alt-Shift-BS てどこに載ってたっけ ・[photon]phfontFAのオプションは /usr/photon/font_repository/fontopt に書かれている。 メモリが少ない機械では キャッシュ容量の -s300k を減らしてもいいかも。 ・[jp][photon][ped]どうもShift-JISの解釈が変で、まっとうなファイルでも エラー文字変換させられることがある。毎回同じ場所なので ロジックがおかしい? (同じ文字、てわけではない。) PxTranslateSet()のマニュアルにあるコンバータでUTF-8に変換して 再度pedに読ませると違うところで化けるので、pedの問題かもしれない。 (PxTranslateSet()系では ~ がおかしくなる?) ・[dev]ラップトップ機のディスプレイの省電力機能はoffに 今のRTPはAPMやACPIに対応していない。 (6.2でも対応されないだろう) APMの省電力機能が働くと、生コンソールではともかく Photonは固まってしまう。Photonで使うときはoffにしておくこと。 HDDスピンダウンはそれほど問題ないようだ。 ・[shelf] Launch Menu を元に戻す cp /etc/photon/shelf/launch_menu.xml ~/.ph/launch_menu.xml news:3DCFE375.8090008@qnx.com nntp://inn.qnx.com/qdn.public.newuser/86 ・.xsessionみたいなの Photon(shelf?) 起動後に ~/.ph/phapps が実行される。 シェルスクリプト。 http://www.qnx.com/support/sd_bok/solution.qnx?6165 ・[photon] "crttrap trap" で "graphics: no such file or directory." と言われる /etc/system/config/graphics-traplist が存在していない。 nntp://inn.qnx.com/qdn.public.qnxrtp.photon/3918 news://inn.qnx.com/blrp73$gbk$1@nntp.qnx.com ▼コマンド対応▼ UNIX QNX ps pidin, psin (psもあるが、pidinがnativeでしかも詳しい) uptime pidin info (load averageは ない) man helpviewer(photon) voyager file:///usr/help/product/neutrino/booksets.html use <command> helpviewerがネイティブなヘルプ。慣れるべし。 コマンド組み込みの簡易マニュアルは use <command> ps -ef|grep <command> pgrep <command> slay -p <command>, sin -P <command> pkill <command> slay <command> dmesg sloginfo /var/log/messages sloginfo reboot shutdown [-S reboot] 再起動 shutdown shutdown -S system 「電源が切れます」 newfs dinit fsck chkfsys fdformat,mformat mkdosfs limit core 0 (未確認; dumperを殺す? dumper -m) whoami id -nu (POSIX系はこっちを使え?) /etc/resolv.conf /etc/net.cfg, netmanager (getconf RESOLVER) /etc/resolv.confを書き換えても設定が変わるわけではない。 top spin (3rd party CD) 知っておきたいコマンド (UNIXにないものとか) use pidin sin slay nicinfo netmanager dinit chkfsys sloginfo pin (PCMCIA) ▼random tips プロセスIDはLSB12ビット再利用、その上はカウンタ news://inn.qnx.com/9tnf1b$t1m$3@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.applications/1518 [fs] パーティションをfdiskでいじった後、/dev/hdxtxxを再認識 mount -e inn.qnx.com/<9uisuv$3un$1@nntp.qnx.com> qdn.public.qnxrtp.applications:1555 [cc] GNUなものではconfig.guessとconfig.subを新しいものに http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ inn.qnx.com/<9tu5k7$531$1@nntp.qnx.com> qdn.public.qnxrtp.devtools:2426 (2000/02/29版にQNX RTPが追加されている) Easter egg tsk tsk sin toomuch pidin {english,toomuch,pie,sin} inn.qnx.com/<9q82ke$j49$1@inn.qnx.com> qdn.public.qnxrtp.newuser:3111 [boot][sys] 新旧pci-biosの違い I/Oポートの割り当てかたが違う。古いほうはbottom upに割り当てていた。 (他にも違いはあるはずだが…) inn.qnx.com/<Voyager.011129085000.14834B@node90.ott.qnx.com> qdn.public.qnxrtp.os:6268 [boot] diskboot風オートマウンタ? 何か汚ない。新しく書いた方がいいかも。 news:01c17e3c$b1fd7580$106fa8c0@ED1K nntp://inn.qnx.com/qdn.public.qnxrtp.os/6291 [cc][bug] stdlib.hを使うと abort abs exit がすでに定義されていると怒られる? gccインストレーションのバグ。 /usr/lib/gcc-lib/ntox86/2.95.2/specs を書き換える。 *cc1plus: -fhonor-std -> %(cc1plus_spec) -fhonor-std -fno-builtin inn.qnx.com/<9uti9s$l24$1@inn.qnx.com> qdn.public.qnxrtp.os:6342 (-fno-builtinは変じゃないか?stdlib.hの方を変えるべきだったような) [cc][bug] ディスク上のファイルはselect()で待てない バグ。6.1.1では直る。 inn.qnx.com/<9vob35$20t$1@nntp.qnx.com> qdn.public.qnxrtp.os:6510 [bug]crontab行は125文字以内で 変なの。直るのか? cron.h:#define TAB_BUFFER_SIZE 127 のせいらしい。 news:aqvfm4$9dv$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/9791 [cc] 境界にそろえるmalloc: posix_memalign() ドキュメントは6.2.0から。とりあえずのマニュアルは inn.qnx.com/<9vsq5j$atd$1@nntp.qnx.com> qdn.public.qnxrtp.os:6537 [dev][kbd][devc-con] CapsLockをCtrlに kbtable[]の0x3A(CapsLock)エントリは、unmodifiedだけでなく、 Ctrl,Alt-Ctrlも0x0202(ctl)に書き換えておかないと元に戻せなくなる。 (KeyReleaseはCtlマップで行われるため) (Ctrl-Alt-[1234]のVT切り替えはCapsLockでは使えない?→Altマップ書き忘れ) [photon] Photonでコンソール出力を見る (不可能) phditto ? ph -c ? Xのxconsole相当? →phdittoは他のノードのPhotonをミラーするもの。 シリアル端末にもなるらしいが →ph -c で、`tty`(=/dev/con1)をミラーする、はずらしい のだが、/usr/bin/ph でpterm ... ditto を起動しているのだが RTPには ditto がないのでうまくいかない。 (phdittoに変えてもうまくいかない) RTPでは devc-con を大幅書き換えしないと Photonでのコンソール横取りはむずかしいらしい。 news:a1nami$bo9$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/6731 [cc] patchがコンパイルできない patch自体は http://developers.qnx.com/Ports/ に コンパイル済のものがある。 まず config.guess, config.sub を新調する。 getconf LFS_CFLAGS などが未定義値で "" でなく "undefined" を返すので チェック用コンパイルが通らない。 ./getconf をこしらえて中身を "getconf $1 | sed -e 's/undefined//'"とし、 env GETCONF=`pwd`/getconf ./configure で設定する。 (これだけでコンパイルできた) (一応/usr/include/を眺めていると LFS_CFLAGSとしては 標準的な -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 が 使えるようだが…) [sys] pidin でプロセス名でのプロセス選択は pidin -P <procname> sin には sin -P<procname> がある。 news:a26g3t$bue$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.ddk.network/763 (ただしsinはQNX4用&&psin専用だったような) [Photon] 新しいPHFフォントの入れ方 nntp://inn.qnx.com/qdn.public.qnxrtp.photon/2407 [cc][package] 開発用 -devパッケージを作らせない方法 packager -D を使う。 news:ar0vo3$bsi$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2244 なぜQNXがあまり有名でないのか(宣伝してないのか)の考察: 数少ない米・加の文化の違いによる? nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1403 このスレッドは読んどいた方がいい。 営業副部長(副社長? Vice President Marketing)のリプライ。必読。 ここ半年ほど宣伝がなかったのは、市場調査や方向性を定めるのに 時間をかけていたから。QSSL内部的にも大きく様変わりしている、らしい。 nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1434 (RTPの位置づけ) RTPは開発用にユーザーコミュニティに提供(enable)するもの。 どっちみちQNXを使って製品を作るなら以前からライセンスを 買ってもらう必要がある。 nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1455 なぜSMP? nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1474 nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1479 電話交換機市場に食い込むつもりであるので、SMPは絶対必要。 サポートを落とす気はない。 日本の交換機はCTRONの独占状態なので、日本ではきついかも。 日本では極小組み込みではITRONが好まれているので、 QNXが入り込めるのは中規模組み込み…プラント制御とか キャッシュレジスター (WinCEが使われるような分野)に なるんだろうか? [net] 実は標準で SOCKSが入っている。SOCKSinit()のマニュアル参照。 nntp://inn.qnx.com/qdn.public.qnxrtp.newuser/3901 ただしバージョン4.2 。 [net] PPPoEの質問が2002/01から増えてきているが、なぜだろう? まとめようにも自分とこに環境がないから確認ができない QNX6のええところ vs QNX4 nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1479 ・完全プリエンプタブル割り込みハンドラ (preemtiveの意味が判ってない) ・優先度継承 ・SMP ・POSIX threads ・DLL ・とりあえず使えるC++ ・サポート (QNX4はサポートが切られる) [cc][dev] InterruptAttach() の簡単な例 タイマ割り込みでスピーカを駆動する。割り込みジッタの観測にも使える。 (未確認) news://inn.qnx.com/a7119b$6ct$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/7415 <PRE> #include <sys/neutrino.h> #include <stdio.h> #include <hw/inout.h> const struct sigevent * tick(void *arg, int id) { static bit; out8(0x61, (in8(0x61) & ~3) | bit); bit = bit ? 0 : 2; return NULL; } main() { ThreadCtl(_NTO_TCTL_IO, 0); InterruptAttach(_NTO_INTR_CLASS_EXTERNAL, tick, NULL, 0, _NTO_INTR_FLAGS_END); sleep(1000); } </PRE> [photon] なんでVoyagerをPageDownでスクロールさせると激遅なのか? 垂直同期割り込みを待ってbitbltするように作られてないから、 らしい。 news:3C98C219.2E739CDD@daimi.au.dk nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/1730 [photon] XFree86-4.2ではマウス用devi-hirunをあらかじめ走らせる! news:a7ksml$fbg$2@inn.qnx.com nntp://inn.qnx.com/comp.os.qnx/11373 file:/ftp/pub/qnx/How-To-XFree86-4.2 [boot]ブート時の2秒待ちを却下する ぬあんとブートローダをバイナリパッチ http://qdn.qnx.com/support/bok/solution.qnx?9534 [cc] -shared(-fPIC)でないとコアダンプ QNX6は Copy-on-Write をサポートしていないので、 共通メモリ領域に書こうとすると速攻で SIGSEGV になる。 news:a8g3ag$cuc$1@nntp.qnx.com nntp://inn.qnx.com/gqdn.public.qnxrtp.devtools/3061 (CoWのあるOSでは実行時ペナルティがあるだけで-fPICでなくても 動くには動く) メモリ不足だとfork()でこけるのも似たような事情だろう。 [boot] qnxbase.qfsの入れ替え /boot/fs/qnxbase.qfs を入れ替えようと mv でどかそうとしても resource busy ではねられる。ので、 /boot/fs/qnxbase.qf0 を置いておけば、ブート時に そっちをqnxbase.qfsにする機能が diskboot についている。 古いほうは qnxbase.qf1にリネームされる。 (まあめったにやらないが。qnxbase.qfsのコピーをしくじっている 時くらいか) [dev] センサ・ファン回りをいじるツール・resmgr(未チェック) news:abpml4$34p$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.installation/4946 (/ftp/pub/qnx/ed1k-fan.c.article) ed1kのfan.c(回転数制御)と温度計測。LM系チップ用か? news:3CE0E1CC.7000309@csical.com nntp://inn.qnx.com/qdn.public.qnxrtp.installation/4950 rallenの ISAにあるW83781D用resmgrとPhoton App (/ftp/pub/qnx/rallen-healthmonitor.article) [dev] CMI 8338/8738ドライバ (未チェック) http://mike.qnx.org.ru/cmi/ /ftp/pub/qnx/cmpci-src-20020501.tar.gz [dev] VT8233 オーディオドライバ (未チェック) news:ajv9i9$3tm$1@inn.qnx.com nntp://inn.qnx.com/comp.os.qnx/12278 http://mike.qnx.org.ru/vt8233/ [dev][usb] USBコントローラが複数あるときは devu-uhci -p1 (未チェック) news:apru5p$47v$1@nntp.qnx.com nntp:inn.qnx.com/qdn.public.qnxrtp.os/9727 [dev][photon] svgaドライバのリフレッシュレート変更 (未チェック) Graphics DDKに手を入れる。 news:3CECBA60.7040407@netscape.net nntp://inn.qnx.com/qdn.public.qnxrtp.installation/5000 1:Get hold of the SVGA driver code from QNX (It's on the CD) 2:Remove the entry that prevents super than super modes 3:Find the change mode routine ( this just calls a vesa mode) (mode.c) 4:Before the change mode ( I put it after the DISP_ASSERT();) Write the following: out8(0x3d4,0x33); Sets access to REG33 out8(0x3d5,0x04); Sets refresh rate (4 gives 75Hz) [license] QCLとOCLの違い <URL:http://licensing.qnx.com/published/source/qcl1_00.html> <URL:http://licensing.qnx.com/published/source/ocl1_00.html> (きっちり比較したわけではないが…) QCL (QNX Community License) は、派生物の利用を (正規ライセンスを取得している)QNX RTOSに限定しているが、 OCL (Open Community License) にはその制限はない。 [sys] uptime uptimeはないが、ブート時刻は pidin info で出る。 procntoの起動時に RTC が指している時刻が _SYSPAGE_ENTRY(sysinfo,qtime)->boot_time にそのまま放り込まれるが、この値は RTCがローカル時刻 を指しているとローカルになる。表示時にさらに localtime()で補正がかかるので、 http://cvs.qnx.com/cgi-bin/cvsweb.cgi/utils/p/pidin/pidin.c 表示は実際よりさらに9時間進む。(JST-9場合) (UNIX一般と同じく)RTCをGMTにしておけばこの問題は起こらない。 [cc][resmgr] _IO_CONNECT_RET_LINK の使い方 ハードリンクみたいなresmgrを作る時に使うらしい。 例:/dev/redirect 任意のパスに丸投げする Re: Example of returning _IO_CONNECT_RET_LINK? news:as3m43$qqo$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/9925 [installer] *.qpr を開いても空 qnxinstall ・qnxinstallでは、既にインストールされているパッケージは 開いても何も出てこない。 ・そうでない場合は、 /etc/system/package/sources/* を消すとまともになる ことがある。 Re: Install of .qpr-files news:b0s47e$2oc$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.installation/295 [core] 動作中のcoreをとる dumper -p {pid} プロセスを殺さずにコアダンプが採れる。 [packager] *.qpg の内容を拾ってくれない Launch Menu や install script の設定をしているような 高度な *.qpg を使うときは packager -m *.qpg ではなく、 直接 packager *.qpg とする。 DESTDIRの指定がなくなるので、必要なファイルは <QPG:Add> で宣言しておく必要あり。 (ファイルが追加されたら毎回 *.qpg を書き換えないといけない− 他のOSのパッケージでも似たようなもんだが) [packager] /usr/bin から /x86/opt/bin への unionがない (/x86/opt/bin にモノはあるのだが /usr/bin から見えてない) 凝った設定の *.qpg を書いていて、さらに /usr/bin -> /x86/opt/bin の Unionをしている他のパッケージが 入っていないとこうなることはある。 *.qpm を点検して、 <QPM:Union> がなければUnion自体張られていない。 対策は*.qpg中に手で <QPM:Union>を書く。 /usr/bin -> /x86/opt/bin /opt/bin -> /x86/opt/bin ------------------------------ <QPG:PackageFilter proc="none" target="none"> .... <QPM:FileManifest xmlmultiple="true"> <QPM:Listing> <QPM:Dir name=""> <QPM:Dir name="usr"> <QPM:Union link="../$(PROCESSOR)/opt/bin">bin</QPM:Union> </QPM:Dir> <QPM:Dir name="opt"> <QPM:Union link="../$(PROCESSOR)/opt/bin">bin</QPM:Union> </QPM:Dir> </QPM:Dir> </QPM:Listing> </QPM:FileManifest> </QPG:PackageFilter> ------------------------------ ただこの加工をやらなきゃいけないのは 他に腐っている個所がある可能性がある (↓の<QPG:Add type="tree" filetype="dir">とか…) [packager] CVS/ を却下する 最初は QPG:Rule で <QPG:Add file="doc/*" install="/opt/share/jvim2/doc/" > <QPG:Rule search="path" argument="*/CVS" match="exclude" /> </QPG:Add> なんてのをやっていたが、 CVS/ ディレクトリ自体が パッケージから消えない。 色々やってみた結果、 <QPG:Add file="*/CVS/*" handling="exclude" /> <QPG:Add type="tree" file="doc" install="/opt/share/jvim2/doc" /> (file=のワイルドカードではなく、type="tree" で全部拾う) でなんかうまく除かれるようになった。 [packager] 一度 QPG:Add されたファイルは再度パッケージされない 同じファイルを2個所にパッケージングする際は、2回目以降に <QPG:Add file="uganda.txt" install="LicenseUrl/" handling="repdata" /> <QPG:Add file="uganda.*" install="/opt/share/jvim2/doc/" handling="copy" /> と、handling="copy" 属性をつける必要がある。 (上では、file="*" の方に copy 属性をつけると うまくいかなかったような気が) [fs-pkg] fs-pkg経由だとファイルサイズは正しいが中身がない? (spatch -bで見ると最初のバイトしかない、 cpると56バイト…ディレクトリノード?) 原因不明。Unionがなくても起こる。 -> qpm でファイルが <QPM:File>ではなく <QPM:Dir> として 指定されてる?? (qpgで <QPG:Add type="tree" filetype="dir" file="./DEST/opt/" install="/opt/"> で吸い出したもの… ^^^^^^^^^^^^^^が悪い?) ->** 当たり ** filetype="dir"を消したら正しくなった。 環境・マシンによっては変にならない場合もあるんだ、 よくわからん…他のパッケージのUnionで矯正されることがある? [install] cd0/boot/fs/*.qfs は常にコピー 標準のインストーラー(finstallだっけ)を使うと、 cd0/boot/fs/*.qfs は全部 /boot/fs/ にコピーされる。 ∴ CDに cd0/boot/fs/qnxpub100.qfs を用意しておくと そいつもコピーされる… 実際 cd/boot/fs/qnxpub100.qfs があっても 自動マウントされるのは CDROMブート時だけだし、 作っといても実はあまり便利でないかも。 repository-pub100/ とかのほうがいいか? [boot][ifs] MultiBootブートローダ? 6.2ではMultiBoot(GRUB)用の elf.boot が用意される 予定だったようだが Subject: Re: Multiboot support? news:anlj7d$75t$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.installation/169 実際にはたぶん忘れ去られている。 6.1には *.ifs をむりやり ELF に変換する mkifsf_elf フィルタ が用意されているが、実験的な半端ものなので あまり使えない(メモリ16MB固定になる) [qnet] qnetが通らない? まずqnetが起動していること。/net/<localhost>はあるか? 何度か ls /net/<相手> するとつながることがある。 それでもだめなら双方で qnet だけ再起動してみる。 umount /dev/io-net/qnet* mount -Tio-net npm-qnet.so qnetのパケットは"IP"だけどsource/destが all zero (0.0.0.0) のパケットに見えるので、かしこいスイッチングハブは 混乱するかもしれない。 [dev][kbd][devc-con] バイナリを表示させたあと、グラフィック文字ばかり表示される shift_in (echo '\017') で直る。 [QDN] qdn.public.* と qdn.public.qnxrtp.* 、どっちを使うべき? 公式には qdn.public.* 直下の各グループが Momentics用。 <URL:http://www.qnx.com/support/sd_newsgroups.html> しかし実際には 実質Momenticsの前バージョンであるQNXRTP用の qdn.public.qnxrtp.* もよく使われている。 QSSLはqnxrtp.*はなくす予定だったらしいが、よく使われているので 結局残してある。 <URL:nntp://inn.qnx.com/qdn.public.installation/450> <URL:news://inn.qnx.com/bcat5h$j91$2@nntp.qnx.com> 従って qdn.public.installation とqdn.public.qnxrtp.installation のように似通ったグループが残っている。 初心者にはわかりづらい。 実際は qdn.public.qnxrtp.* はセルフ環境、 qdn.public.* 直下はクロス環境といった感じで 微妙に使い分けられている? [net] telnet telnetはポートに関わらず TELNET交渉を 行おうとするので、 telnet www 80 などとして httpdのデバッグなんかができない。 (set netdataしてみるとよくわかる。mode lineでもダメ) [log] syslogをslogへ syslogをslogへリダイレクトするには、 /etc/syslog.conf に *.* /dev/console としてからsyslogd を起動する。 syslogd -t 2 あたりか。 /dev/consoleに対するsyslog出力はslogに入るよう 細工されているらしい。(sloggerのマニュアル参照) slog (sloggerで出るもの)は、ディスクに出力しないので 組み込みでは重宝される。 syslog(syslogd)はデフォルトでは /var/log/syslog に 出すように /etc/syslog.conf が設定されているが、 syslogd自体は起動していない。 恒久設定は /etc/rc.d/rc.local か? test -f /etc/syslog.conf && /usr/sbin/syslogd -t 2 [term][devc] tipやcuはない ので、シリアル端末として使いたいのであれば pterm か qtalk を使う。 pterm: Photonを起動して pterm -d /dev/ser1 ボーレート設定などは、他の端末から stty 9600 </dev/ser1 などとする。 tipやcuは持ってきてコンパイルしてもたいしたことなさそうだが… [term][devc] シリアル端末はqtalk tip や cuはないが、似たようなものにqtalkがある。 /dev/ser1 を単に端末として使うなら qtalk -m /dev/ser1 -b 9600,8,n,1 バナーがうるさいなら -q をつける。 ^A で qtalkのメニューになることだけ注意。 [util] on コマンドとは何か qnet でつながっている他のノードでプログラムを実行する。 rsh と似ているが、ファイルシステムも /net でつながっている 所が違う。 こっち側をlnode, 向こう側を remote とする。 lnode% on -n remote command ... とすると、 ・lnodeの command 自体が remote へ転送され、 ・remote は /net/lnode/ に chroot() し、 ・さらに lnode側のカレントディレクトリにchdir()し、 ・command を実行する リモートで実行しているのに、 バイナリやカレントディレクトリはローカル側のものであるのがミソ。 -n ではなく、on -f remote command だと、 リモート側は自分の / に chroot() する(要するに普通の状態)。 rsh に慣れていると on -f のほうがわかりやすいかも。 command はローカルのものが転送されるので、 リモート側には command のバイナリはなくてもいい利点があるが、 リモート側にもあるようなコマンド (lsとか)は 転送するだけ無駄なので、もっと小さいコマンドでやりたい。 ので、on, op, env といったものを咬ますこともある。 (libc.so.2も転送されるのかな…) lnode% on -f remote env ls / (転送されるのはenvだけ、lsはremoteのものが使われる) ここで on -n remote env ls とすると、remote は /net/lnode に chroot() しているので、使われる ls は 結局lnode側のもの (/net/lnode/bin/ls) であることに注意。 (要確認。本当か?) 逆にremote側にしかないようなコマンドは on -f でないと起動できない。 (on -n remote /net/remote/<cmd> で起動できそうだがなんかうまくいかない) [util] on -f と on -n Xiaodan Tang によるミニ解説。 on -n だとソケットもローカル側のものを使う! news:bqg1df$1i5$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/12196 このスレッドでは、リモートspawnではゾンビが回収されない 問題が扱われている。spawn()の隠しオプションで回避 [cc][bug][net] socketタイムアウトが使えない setsockopt( ,SOL_SOCKET,SO_RCVTIMEO, ,,) は 6.2.1以降で直るらしい。 Re: Socket rx timeout news:bsp936$oq$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.ddk.network/1969 ▼6.2関係 ・[boot][6.2] NCでは「組み込み」関係のツールがないので、 mkifs,dumpifs がない /boot/build/ がない /boot/sys/{bios.boot,procnto,startup-bios} がない よって /.boot の再生成はできない。 SE (Standard Edition) 以上には用意されている。 むりやり 6.1のbios.bootなんかでも動くようだが相当気持悪いのは確か。 6.1のprocntoだと uname -r が 6.1.0 になるので setconf かなんかで 加工してやる必要がある。 ・[install][6.2] インストール コア部分をインストールして起動すると、Photon設定後に インストーラー(qnxinstall)が起動して再度 CDROM を要求される。 6.1では開発環境などは個別にインストールしたが、 6.2 (Momentics)では問答無用で全部ぶちこまれるようだ。 (Mozillaなんかいらんのだが…) (ふつーの人はDDKなんか使わんだろ…) まぁ「PhABどこだー」と騒ぐ初心者がたくさんいたからでしょうかね… 本当に CDROM からやっていると遅くて死ぬので、*.isoをコピーして しばらくは直接 /fs/cd0 にマウントしてしまったほうがよろしいようだ。 (初心者向け手順ではナイ。初心者は素直にCD-Rを焼くべし) ・[install][6.2] "3rd Party Software" http://www.qnx.com/developer/download/contrib/ 440MBもあるが、半分はソースを納めた src.zip が占めている。 bash/patch/lynx/spinくらいは使うだろうが、他はあまり使わない? ・[6.2][pkg][install]コンポーネント毎のinstall/uninstallはできんのか? 旧pkg-installerで見ても何も出てこないし… →*** /etc/system/package/packages中の <QPF:item>qnx/bundles/os-6.2.0/x86</QPF:item> の所を消すなりタグ変更なり(<QPF:ignore>?)して無効にすると 全部のパッケージが qnxinstall でも出てくるようになる。 ・[6.2][pkg][install] cl-installer マニュアルなどがないが、コマンドライン用のインストーラーとして cl-installer てのが新たに用意されているようだ。 (/etc/system/package/session.log の他に ./history.qrs てのを残す) ・[6.2][jp][Photon][dev][kbd] Photonのキーボードが日本語にならない? →Photon再起動 (リリースノートにもWorkaround記述) ・[6.2][Photon] Flashプラグインが動かない、MPEGが再生できない /lib/libcpp.so.2 がない。 Shelfからでなくコマンドラインから voyagerを起動するとエラーが見える。 解決法: ・6.1.0 CPP Compatibility Libs (cpp_compat-slib-1.0) を入れる。 隠しパッケージなので普通は見れない。 pkg-installerでAll Packagesを選ぶとなら見える場合もある。 QNX Realtime Platform/System/Shared Libraries/にある。 普通にインストールしていれば入っているはずなのだが… ・libcpp.so.2a を持ってきて手動で/lib/に放り込む。 //qnx.wox.org/qnx/libcpp.so.2a.gz ・[6.2][dev][pccard][net]Latitude XPi CD 166STでは 6.1 のdevp-pccard -w8,8でないと IO-DATA PCLA/TE を認識しない。 結論: ・devp-pccard -w8,8 -l7,10 ・devn-ne2000 ...width=8,mac=HHHHHHHHHHHH … /etc/system/enum/devices/bridgeを書き換えて6.1のdevp-pccard -w8,8を 起動するようにしてもなぜかちゃんと認識しない。 slay devp-pccard; 6.1/sbin/devp-pccard -w8,8; mount -Tio-net ... とやると認識する…なんかの順番?enum-pccard周辺?環境? … devp-pccardを再起動するとIRQが7になるからこれのせい? devn-ne2000.so に、 width=8 オプションが追加されている。 PCLA/TEではこれを使えばよい。 →devp-pccardを6.2にもどして再起動するとやっぱだめ… なんかIRQの気がしてきた。起動直後だと IRQ=5 が割り当てられている (pnpbiosのサウンドと衝突している?) でも devp-pccard -l7,10 とかするとpinで認識しなくなる?ことがある? (-lで割り当てた後slayするとその番号は使えなくなる…ようだ) (このCardBusブリッジのバージョン自体が腐れてるのかもしれんけど…前科あるし) ***とりあえず、6.2の devp-pccard -w8,8 -l7,10 で ブート時認識するようになったようだ。特定の環境に依存しすぎ。 **MACアドレスが変。-w8,8 , width=8は外した方がよさそう… なんだが、width=8を外すと受信ができなくなる(なえー) ** devn-ne2000 に mac=HHHHHHHHHHHH を渡せばとりあえずなんとかなる。 汚ない。 ・[6.2][dev][pccard][net]Panasonic AL-N2 (Let's note) + PCLA/TE これも 6.2 でも、 devp-pccard -w8,8 (-lN,N) devn-ne2000 ...width=8,mac=HHHHHHHHHHHH が必要。CardBusブリッジはRicoh. devp-pccardの-wはなくなったんじゃないのか? ・[dev][pccard][net] corega Ether PCC-TD (10baseT) の認識 I/O DATA PCLA/TE と全く同じ。チップセットも同じ(TM3299A)なのか? vid,did が 1234,5678 みたいなえーかげんな値なのだがこれでいいのか? Linuxなんかは CIS の文字列でマッチさせてるようなので 問題ないようだが… ============== # # Definitions for OEM devices # # put this as /etc/system/enum/oem/COREGA # # for Momentics 6.2 # all ##### set this to YOUR card's MAC address ##### set(COREGA_MAC, 009099nnnnnn) # COREGA Ether PCC-TD (Tamarack TM3299A) device(pcmcia, ven=1234, dev=5678) tag(devn) append(legacy, ",nonet") requires($(IONET_CMD),) uniq(netnum, devn-en, 0) # assume pcmcia only have one ethernet card for now so en0 is always used # mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8" /lib/dll/devn-ne2000.so, "/dev/io-net/en$(netnum)") # # Issues exactly same as I/O-Data PCLA/TE: # This card seems to need 8bit-width access; # for RTP 6.1, "devp-pccard -w8" was needed but for 6.2, devn-ne2000 # has an option "width=8" for this, which is needed for this card for # proper receive operation # mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8" /lib/dll/devn-ne2000.so, "/dev/io-net/en0") # But makes MAC-addr weird (00A0B0...... read as 0000A0A0B0B0). # Workaround: hardcode the MAC (argh) mount(-Tio-net "-oioport=0x$(ioport),irq=$(irq),width=8,mac=$(COREGA_MAC)" /lib/dll/devn-ne2000.so, "/dev/io-net/en0") use(symbolic=netmgr) # do we need this? # seems yes, as without this, netmanager fails to find en0 # when card is already inserted from boot time # (hot insertion works without this entry) device(symbolic=netmgr) # requires(@devn) waitfor(/dev/socket) waitfor(/dev/io-net/ip0, 5) start(netmanager) ============== ・[6.2][dev][cc][ddk] Character DDK には devc-con のソースがない。 6.1の改造devc-conはそのまま6.2でも動くようだが、 ifs再生成ができないので /pkgs/repository/ 以下に置く 姑息な手段しか使えない。 ・[6.2]ログイン時になんかディスクをガリガリやる?何? → /etc/profile から /etc/profile.d/* を探して実行するためらしい。 ・[6.2][photon] PhotonのPointer Camがなくなった。… モジュール自体は /usr/photon/dll/shelf/ptrcam.so として残っているので、手動で追加することはできる。 負荷が高いから外されたんじゃないかな… ・[6.2][net]デフォルトでは qnet は使われなくなっている。 (のでmountコマンドの出力は /net/<hostname>/ にならない) 使う場合は touch /etc/system/config/useqnet する。 分岐は /etc/system/sysinit もしくは手動で mount -Tio-net npm-qnet.so ・[6.2][dev][kbd][boot]diskbootのdevc-con/fs-pkg検索方法が若干改造されている。 6.2 では "qnx/os/" しか見ないようで、/x86/ は自動で追加される。 よって /proc/boot/x86/sbin/devc-con を読ませるには /etc/system/package/packages に追加するエントリは <QPF:dummy>qnx/os/../../../../proc/boot</QPF:dummy> ・[6.2][pkg][install]CDROMのrepositoryを * qnxinstallで見ると、"QNX Momentics NC for Neutrino" だけで 個別のパッケージが見えない * pkg-installer (旧インストーラ)では何も見えない のを何とかする方法: ・まず repository/b-os-6.2.0-* なファイルを消す。これらが全てをまとめてしまう bundle を司っている。 ・repository/content.tgz を消す、もしくは固め直す。 これには qpm,repository.qrm,index,*repdata/ (要するに qpk以外?) が入っているが、このcontent.tgzがあると生の *.qpm を持っていかずに content.tgzを持っていって /tmp に展開する。 (HTTPやCDROMではこのほうが速いからだろう) ・[6.2][pkg][install]ローカルにインストールされているものを 全部まとめて Momenticsではなく各パッケージに分離させて見るには、 b-os-*, bundles の痕跡を全部消す。 ・/etc/system/package/packages qnx/bundles/.... の部分を消す。 これだけでも qnxinstall から余計なパッケージの uninstallはできるようになる。 (/etc/system/package/installed/* は いじらなくてよい?) このままでは pkg-installer 側ではインストール済みパッケージが なぜか見えないので、 ・/pkgs/repository/qnx/bundles/ を全部消す。 ここには実ファイルは置かれておらず bundle を示す MANIFESTだけなので、fs-pkgの再スタート(pkgctl -l)は要らない。 新インストーラ(qnxinstall)は x86 かarmかの表示フィルタが効かないので、 個別のパッケージの管理には旧インストーラ(pkg-installer)のほうが使いやすい。 [6.2.1]では、さらに /etc/system/package/packages から 該当エントリ行を消しておく必要ありかも。 ・[jp][6.2][bug] 日本時間が JST09 になっている。 正しくは JST-09. ・/etc/timezone/uc_tz_t を修正、 ・phlocaleで再設定 (いったん別のtimezoneを選んでからJapanにする) コンソールだけの時は /etc/TIMEZONE に直接 JST-09 と書けばよい。 [6.2.1]では直っている。 ・[6.1][6.2][bug] strftime(),date の %z が +NNNN ではなく単なる 秒数になっている。 % date +%z 32400 (POSIX的には+0900) 6.2.1では直っている。 /proc/boot/libc の修正なので、*.ifsだけ6.2.1のに入れ替えれば直る。 ・[sys] rdate news:akod83$hpn$2@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.porting/785 ・[sys] eject (v 1.0) news:b9rjp7$rrn$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2655 (なんでapplicationsなんだ?) (手持ち品はもっと新しい) ・*.qnx.comの雰囲気 は6.2出荷前後にだいぶ入れ替わっているが、 developers.qnx.com は 6.1時代のままのようだ。 6.1用 Fixes もまだ入手できる。(2002/07/13) ・[6.2][net][dev] FNW-3602-TX (FE-2500) devn-tulipは、 vid/did は効くようになったようだが chipsetを見ない。 (vid=0x14ea,did=0xab08,chipset=2500) chipset=2500の他にchipset=8035(Abocom SMB8035)が追加されている。 vid/didからchipsetが不明な場合は21143になるが、 これを無理やり2500にバイナリパッチすると、認識はする (IRQ ok, Rxd ok, ifconfig ok) が、メディア検出ができない?、送信ができない しばらくすると固まる(キー入力なし) 抜くと復活する… ブート直後に mount -Tio-net -overbose=10,vid=0x14ea,did=0xab08,chipset=2500 <改造devn-tulip> とすると /dev/io-net/en[0-13] ができてしまう(なんだこりゃ) →singleオプションでen0だけにはできるが… ・[dev] 特定のデバイスのenumuratorを動作させない ふつーは /etc/system/enum/devices/* をいじるという 手段を思いつくが、実は overrides や oem/ でも設定できる。 news:b1s1u4$6qm$1@nntp.qnx.com nntp:///comp.os.qnx/ ================================ { From: Brian Stecher <bstecher(#)qnx.com> Newsgroups: comp.os.qnx Subject: Re: [Q] Where to put manual enet config commands? Date: 5 Feb 2003 22:07:00 GMT Message-ID: <b1s1u4$6qm$1@nntp.qnx.com> References: <b1rls4$lmq$1@inn.qnx.com> <b1rrd4$rd7$1@inn.qnx.com> <b1ruej$4v2$1@nntp.qnx.com> <b1rvjr$1v5$1@inn.qnx.com> > Well mods for new devices can be avoided by /etc/system/enum/oem/, but > is there any clean way to DISABLE particular device's enumuration? > Mucking with rc.local afterwards isn't neat. Sure. Create a new entry in an /etc/system/enum/oem/ file (or in /etc/system/enum/overrides) that has the device that you want to disable and have no actions associated with it. E.g.: =================================================== device(pci, ven=10b8, dev=0005) # do nothing =================================================== That'll override the definition in base system configuration and make nothing happen for that device. -- Brian Stecher (bstecher(#)qnx.com) QNX Software Systems, Ltd. phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr. +1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8 ================================ } (動作させない、ならoverridesに書くのが「正し」そうだ) ・[cc] 実は生ファイルはmmap()できない 共有メモリやメモリマップデバイス(物理メモリ)はmmapできる。 リアルタイムカーネルの性質からすると、 どっちにしてもヒープに明示的に読み込まなきゃならんので 対応してなくても問題ないのかもしれんが(ではMAP_LAZYは何) 一応バグ報告は出ているらしい。 news:av4uvs$mca$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/3832 ・[cc][6.2] でも6.2なら生ファイルもmmapできる MAP_NOSYNCFILE フラグをつければmmapできるらしい。確認済 6.1ではできない。(MAP_ELFを追加するとできる?) POSIX的には MAP_PRIVATE,SHARED,FIXED以外は未定義なので 実装依存。Solaris では似てそうなものに MAP_NORESERVE なんてのがある。 Subject: Re: mmap possible?! news:b2tdl3$6m5$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.porting/891 た・だ・し、メモリに書いてもファイルには反映されない。 読み込みのみ。書くときは手動で書く。(NOSYNCFILEてそーゆー意味か…) Subject: Re: mmap() of files news:b5vvkh$lcg$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/10893 ・[6.2][fs-pkg][patch] 6.2.0A patchA-nc.qpr をあてても fs-pkgが入れ替わらない /sbin/fs-pkg は入れ替わるのだが、 diskboot が /etc/system/package/packages から qnx/os/ を スキャンするため、 qnx/os-update/ に入っている patch A のfs-pkgは 使われない。 とりあえず直すなら…うーむ…こんなのか? ln ../os-update/core-2.1.3A /pkgs/repository/qnx/os/core-2.1.3 「正しい」解決法はパッケージつくり直し。 新しいfs-pkg動かねぇ… (旧fs-pkgでブート後、slay, /pkgs/.../fs-pkgで再起動すれば動くが) [6.2.1]では/pkgs/repository /qnx/os/ core-2.1.4/... なので ちゃんと起動時に入れ替わる。 ・[sys] shutdown で電源も切る APM電源も切れるshutdown(shutdownx)を投稿 news:bm45iq$m42$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.x86/287 ・[app] tcpdump が起動しない 3rd Party CDROMにある tcpdump は、起動前に # mount -Tio-net nfm-bpf.so する必要がある。6.2.1あたりのtcpdumpでは自動的に行うらしい。 ・[app] Mozillaが "snd_pcm_open failed: No such file or directory" と文句を言う サウンドデバイスを使うアプリケーションを裏で起動しているため。 flashplayer か /opt/Mozilla/mozilla/wave /opt/Mozilla/mozilla/plugins/vpi.so を消すか /usr/photon/plugins/config をいじる。 news:bmkii7$gb4$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.applications/2833 ・[sys][net] ノード間spawnで親が死ぬとゾンビが残る spawn()に SPAWN_NOZOMBIE フラグをつける。 (マニュアルなし、spawn.hのみ?) news:bmjdl0$e7c$1@tiger.openqnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/4617 ・[boot] loadifsを投稿 GRUBから使える。 multiboot カーネルとして使い、*.ifs をモジュールとして 読み込んでから起動する。 root (hd0,x) kernel /loadifs module /progra~1/qnx/boot/fs/qnxbase.ifs DOS用のLOADQNX.SYSを使わなくても3つ以上の*.ifsが使える。 (Momemtics NCではあまり意味はないが…) メモリ容量の検出は*.ifs組み込みの bios.boot より GRUBのほうが若干頑張るので、普通に起動すると メモリ16M状態で動いてしまう場合にも有効、かも。 (v1.0) news:b4q5k5$7vl$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.x86/185 v1.1以降なら GRUB のuppermemで 任意のメモリ容量をエミュレート可能予定。 (v1.1) news:<bqm7mq$35$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.x86/310 qnx4fsを解すように改造したGRUBを使えば FATも要らなくなる。 逆にFATのみの環境でDOSのloadqnx.sysが使えない状態だと、 GRUB+loadifs でないとどうしようもない。 [dev] VMWare用Photonドライバ http://www.openqnx.com/Article218.html (バイナリのみ) [cc] printf() が動作しない? デフォルトでは printf()系列の文字列は UTF-8 として 扱われている。フォーマット文字列 ("%d")にEUCなんかを食わせると エラーと思われて途中で止まる(%dが展開されない)。 とりあえずlocaleを "C-TRADITIONAL" にすれば、無変換モード になるので動くようにはなる。 #include <locale.h> setlocale(LC_CTYPE, "C-TRADITIONAL"); [fs] io-blk の commit= の違い マニュアル見ても low と medium の違いがわからんが、 ファイルシステムのメタデータ (stat()で採るもの)の 扱いが違う。 From: John Garvey <jgarvey(#)qnx.com> Subject: Re: io-blk commit levels news:brfdc1$ob8$1@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.os/12230 commit= none low medium high data delayed ? ? sync read() write() meta delayed async sync sync stat() fsys delayed ? ? sync bitmap,extent など sync: すぐに開始して完了を待つ async: すぐに開始して完了を待たない delayed: タイムアウトまで開始しない [cc][pkg] qnxinstallから再起動を要求できる? (未確認) Subject: Setting REBOOT flag for qnxinstall news:brpgov$ach$1@inn.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.devtools/4764 ============= { From: "Sergey Chernov" <schernovi(#)volgasoft.net> Newsgroups: qdn.public.qnxrtp.devtools Subject: Setting REBOOT flag for qnxinstall Date: Wed, 17 Dec 2003 15:26:07 +0300 Message-ID: <brpgov$ach$1(#)inn.qnx.com> NNTP-Posting-Host: dl-tech11.saronline.ru Xref: inn.qnx.com qdn.public.qnxrtp.devtools:4764 Hello All. I have found the possibility that allows to set reboot flag for qnxinstall using the QPM:Script tag. If reboot flag is set then qnxinstall will initiate the system reboot after the package installation. This can be useful when the system reboot is needed after the package installation. For this purpose the following QPM tags should be specified: <QPM:Script xmlmultiple="true"> <QPM:ScriptName>set:$REBOOT</QPM:ScriptName> <QPM:ScriptTiming>Post</QPM:ScriptTiming> <QPM:ScriptType>Use</QPM:ScriptType> <QPM:ScriptPlatform>qnx6</QPM:ScriptPlatform> </QPM:Script> I have looked through the documentation about the QPM and QPG tags on qnx.com, but have not found any mentioning about this possibility. So, I have the following question: This possibility is not documented. Can I use it at all? If I can use it then the next question arises: Whether there is way to set (or clear) reboot flag for qnxinstall from my own scripts, which are executed on a different installation stages? Or it is only possible through the QPM tags? Thanks in advance. Best regards, Sergey Chernov ============= } ・古い QNX News (1987) http://www.astranetwork.com/~rick/QNX%20News/QNX%20News.html [cc] automake-1.7.2 の make check が通らない (6.2.0) 通すためにやったこと: ・lib/am/distdir.am の am__remove_distdir = の定義で find の次の && を ; に変更 ・/bin/test を準備、中身は `basename $0` "$@" (shell builtin) = 以上の修正で通るようになったもの: condd.test, distname.test, dollar.test, extra6.test, extra7.test, include2.test, pr9.test, pr87.test, subdircond2.test, subdircond3.test, subobj5.test, subpkg.test, yacc7.test, yaccvpath.test 失敗: lex3.test ===== (condd.test) ・find はエラーがなければ 0 (success)を返すが、 全く何もマッチしなかった場合、SolarisとGNU findは 0, QNX findは 1 を返す。ので、am__remove_distdir 中の find .... && rm -fr ... がうまく実行されない。 (inn.qnx.com/qnx.rtos/108 で質問中) とりあえず automake*/lib/am/distdir.am の am__remove_distdir の 定義を書換えて (&& → ;) しのぐ ・Makefile にて、 all: test が動かない。make: test: Command not found と言われる。 これは、 GNU make(3.79.1) は POSIXが規定するように system() を使っている わけではなく、直接 fork()--exec()するよう最適化されているため。 test は sh 組み込みなので直接 exec() できない。 シェル文字、 "test;" とか "test #" とかすれば sh -c で 起動される。 Solarisなんかは /bin/test が用意されているのでうまくいく。 (中身は`basename` "$@" するシェルスクリプト) Fri Feb 6 22:43:47 JST 2004 === 失敗: lex3.test QNXにはlibfl.aがない。 %option noyywrapしろとflexのQNXマニュアルにある。 testSubDir/foo.l の頭にこれ追加してやればとりあえず通る。 (make check 全部通ったことになる) Sat Feb 7 00:19:51 JST 2004 [net][qnet] QNETで自分の存在を再放送 rmdir /net/`hostname` From: Peter Martin <peterm(#)qnx.com> news:c2sph6$8nm$1@inn.qnx.com nntp://inn.qnx.com/comp.os.qnx/14337 [net] 複数の io-net を使い分ける ネットワークドライバのデバッグに重宝。 SOCK環境変数は 6.3から文書化らしい。 # io-net -p tcpip prefix=/alt # SOCK=/alt ping 127.1 # export SOCK=/alt # netstat -in From: Sean Boudreau <seanb(#)qnx.com> news:c2lamb$i1i$1@inn.qnx.com nntp://inn.qnx.com/qnx.ddk/104 ▼略語・用語集 QSSL QNX Software Systems Limited. OSではなく会社としてのQNXを指すときは "QSSL" が使われる。 もともとの社名は "Quantum ..." だったが、 Quantumなんちゃらな会社が多くなってきたので変えた、 てことらしい。 ftp://ftp.qnx.com/usr/free/Tech_Support_FAQ/os/QNX.txt 笑い話: お客様 :ハードディスクが読めないんですが サポート:Fsysは動かしてますか? お客様 :えふなに? サポート:Fsys。ファイルシステムマネージャ お客様 :ほえ? news://inn.qnx.com/9iijcn$87s$2@nntp.qnx.com nntp://inn.qnx.com/qdn.public.qnxrtp.advocacy/758 sin UNIX の psみたいなコマンド。なんの略だろ。(system infoかな…) RTPでは pidin が推奨されているが sin にしかない機能もある… ditto コンソール出力を複製するコマンド。 QNX4にはあるが、RTPでは使えない。(devc-conの大改造が必要) Voyager Photon用のWebブラウザ。 slinger Webサーバ。 Xphoton Photon上でXを動かすためのサーバ。 要するに XFree86 の dix が Photon になったもの。 標準添付。 PhinX Photon in X Xサーバ上でPhotonを動かすサーバ。Xphotonの逆。 http://betas.qnx.com/phinx/ ただ 6.0.0 patch C 用に作られたままでほったらかし。 Phindows Win32上でPhotonを動かすサーバ。売り物。 Win32のクロス開発環境で使う。 phditto Photon上でPhotonを動かすサーバ。 Xnestみたいなもの。他のQNXノードのGUIを持ってこれたりする。 使い方が良くわからん。 RTP (QNX) RealTime Platform. カーネル+Photon+開発環境のセット。 裸のSunOSに対する Solaris みたいなもの。x86にしかない。 Momentics 6.2 で "RTP" に代わってつけられた名前。 "Platform"とゆー名称が紛らわしいから、てことらしい。 <URL:http://groups.google.com/groups?th=f397fd27c40f0c52&seekm=aeirir$ghf$1@inn.qnx.com#link2> <news:aeirir$ghf$1@inn.qnx.com> 6.3以降はどうすんだろ。 DDK Device-driver Development Kit. RTPのCD-ROMにも一通りは入っている。 (売りもんのDDKはもっと充実しているらしい) 6.2のCD-ROMのDDKはかなり削られているので 6.1のDDKもまだ必要。 PhAB Photon Application Builder. ボタンを並べてアプリケーション一丁上がりな Photon用 統合開発環境。 「どこに入ってるん?」はFAQだがCD-ROMの開発ツール群に入っている。 ただ QSSL は <A href="http://www.eclipse.org/">Eclipse</A> に手を挙げてしまったみたいなので、今後どうなるかわからん。 QDN QNX Developers Network. 狭義には http://qdn.qnx.com/ を指すのだろうが、 qdn.* ニュースグループを含んでいることもある。 それほど範囲が厳密に決まっているわけではないような。 QUICS QNX Update Information Conferencing System. QDNの前身。 ftp://ftp.qnx.com/usr/free/QUICS/ に当時のドキュメント らしきものが残っている。 FAQによればパソコン通信BBSのようなものだったらしい。 QNX "Quick UNIX" -> "Qunix" -> "QNX" ftp://ftp.qnx.com/usr/free/Tech_Support_FAQ/os/QNX.txt Photon QNX ネイティブのGUI環境。軽量なのが特徴。(ホントか?) ISR Interrupt Service Routine. InterruptAttach() などを参照。 組み込み系の応用が多いので割り込みハンドラを書く人も多い。 pulse 一番単純なプロセス・スレッド間イベント通知。 qnet QNX 独自のノード間通信プロトコル。 同一セグメントにQNXが稼働していると /net/<ノード名> で参照できる。 IPではないのでルーターは超えられない。 (IPバインドにすれば可能) resource manager UNIXのデーモンとデバイスドライバの中間のような存在。 真性マイクロカーネルの QNX ではカーネル(procnto)はすごく小さく、 基本的にはメッセージやイベントの配送だけを行う。 デバイスドライバは例えば "/dev/hd0" に張り付く普通のプログラム (devb-eideなど)として実装される。 こういったパス名に張り付くプログラムをresource managerと言う。 pci -vvvv PCIバスにあるデバイスの詳細情報を表示するコマンド。 「…には対応していますか?」の質問には 「対応ハードウェア表を見れ」か「pci -vvvvの出力を送れ」と回答がつく。 Watcom 6.0.0 以前の QNX には Watcom 製のコンパイラとlibcが使われていた。 gccはナリもバイナリもでかい・おそいと不評で、Watcomコンパイラの 復活を望んでいる人も多い。 それでもgccが採用されているのは移植性のため。 Dinkum C++ ライブラリには、標準で入る GNU libstdc++ の他に Dinkumware製のものが用意されている。 NCにはない。 QNXZone http://www.qnxzone.com/ いわゆるポータルサイト。 NC Non-Commercial Edition www.qnx.com/nc/ で手に入る、Momenticsの非商用利用限定の無料版。 開発ツールもそろっているので開発も可能。 ただし mkifs系 のツールは除かれている。 PE,SE Professional Edition, Standard Edition Momentics の商用版。 組み込み関係ツールやx86以外を使うときに必要。