ちょっと内容的に古くなってしまいました。RedHat6.0 (Kernel 2.2.5)を インストールした頃のメモ書きです。
- toccata: 普段ログインするマシン。あとでWindowsも入れる予定。
Video RIVA TNT Sound SoundBlaster AWE64 (Plug&Play) Ethernet SMC1660BT (NE2000互換、Plug&Play) - scherzo: ルータ。各種サーバ。ダイアルアップでプロバイダに接続。 キーボード、ディスプレイは接続していない。
Ethernet 謎のNE2000互換ボード。 - rhapsody: ノートPC。Linux only。
Plug & Play (PnP) のカードの設定は、普通にインストールしただけじゃ やってくれません (多分)。
設定にはisapnptools (pnpdump, isapnp) が必要です (RedHat6.0には付属している)。 コマンド/sbin/isapnpが見当たらなければ、CDROMを探して下さい。 うちのはisapnptools-1.18-2でした。
設定は2ステップで行います。まず、pnpdumpを使ってPnPのカードの 情報を得ます。その情報をエディットして /etc/isapnp.conf という名で 置いてやると、ブート時に isapnp というコマンドが走って設定が有効に なります。
ステップ1
rootになって、PnPのカードの情報をダンプ
root# pnpdump > /etc/isapnp.confisapnp.confは、ごちゃごちゃコメントが入っていますが、大抵は 次のような構造になっているはずです。
(CONFIGURE card-id (LD 0 #(INT 0 (IRQ 5 ...)) #(DMA 0 (CHANNEL 1)) #(IO 0 (BASE ...)) #(IO 1 (BASE ...)) #(ACT Y) ))"INT", "DMA", "IO" でそれぞれ割り込み番号、 DMAチャネル、IOポートアドレスが設定されます。 IRQ等を2つ以上必要とするカードもあるので、そのための識別番号が "INT" やら "DMA" やらの後に来ています。上記の例ではIOアドレスが 2つあります。
この状態では、全ての設定が "#" でコメントアウトされています。
ステップ2
設定が全てコメントアウトされているのは、 カードによっては可能なINT, DMA, IOの組合せが複数存在 するからです。特に複数のカードを差している場合、相互にぶつからない ような組合せを考えて、その部分だけ "#" を消してやります。
最後の (ACT Y) もコメントアウトされている筈ですが、カードを動作 させるためにはこの行も "#" を外してやる必要があります。
テスト
リブートする前にテストしたい時は、コマンドラインから
root# isapnp /etc/isapnp.confとします。(但し、一回これでうまくコンフィギュア出来たら、 リブートしない限り二回目からはエラーが出ます)。
デフォルトのrcファイルは /etc/isapnp.conf が存在すればブート時に isapnpを実行するようになっているので、次回のリブートからPnPのカードは 認識されるようになるはずです (/etc/rc.d/rc.sysinit)。
RedHat 6.0のインストールガイドそのままの方法だと、WaveTableを用いた MIDIの設定でエラーが出ました (awe_wave.o というモジュールがエラーを 吐く) 原因は、pnpdump がWaveTableのIOアドレスを全て検出しないためです。 手で/etc/isapnp.conf を直します。 WaveTableの有効なアドレスはマニュアルに書いてあります。
私の所のisapnp.confでは、WaveTableの部分はこうしています。 (コメントは削除してあります)
(CONFIGURE CTL00e4/361681556 (LD 2 (IO 0 (SIZE 4) (BASE 0x0620)) (IO 1 (BASE 0x0A20)) (IO 2 (BASE 0x0E20)) (NAME "CTL00e4/361681556[2]{WaveTable }") (ACT Y) ))isapnp.confを編集したら、/usr/sbin/sndconfig を起動して メニューに答えます。isapnp.confはもう設定してあるので、 --noprobeオプションを忘れずに。設定結果は/etc/sysconfig/soundcard 及び/etc/conf.modulesに書き出されます。うちのはこうなっています。
/etc/sysconfg/soundcard:
CARDTYPE=SB32/etc/conf.modules (サウンドカード関係の部分)
alias sound sb pre-install sound insmod sound dmabuf=1 options opl3 io=0x388 alias midi awe_wave post-install awe_wave /bin/sfxload /etc/midi/GU11-ROM.SF2 options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330sndconfigが鳴らすテストのファイルは、 /usr/share/sndconfig/ 以下にあります。後で自分でテストしたい場合は、 例えば次のようにします。
shiro$ play /usr/share/sndconfig/sample.au (Linuxの発音) shiro$ playmidi -a /usr/share/sndconfig/sample.midi (Midiテスト)正しく設定されたかどうかは、/dev/sndstatを読み出せばOK。
shiro$ cat /dev/sndstat OSS/Free:3.8s2++-971130 Load type: Driver loaded as a module Kernel: Linux toccata.lava.net 2.2.5-15 #1 Mon Apr 19 23:00:46 EDT 1999 i686 Config options: 0 Installed drivers: Card config: Audio devices: 0: Sound Blaster 16 (4.16) (DUPLEX) Synth devices: 0: AWE32-0.4.3 (RAM512k) Midi devices: 0: Sound Blaster 16 1: AWE Midi Emu Timers: 0: System clock Mixers: 0: Sound Blasterこのあと、MIDI音源SC-88proをつなぐ予定。
参考ドキュメント:カーネルソース内のドキュメント ( /usr/src/linux/Documentation/sound/AWE32) が参考になります。
外部音源をシリアルポート接続で駆動するには(1)専用プログラムによるもの (2)シリアルポートをMIDIデバイスとして使うデバイスドライバを組み込む、の 二通りの方法があります。前者は、対応しているプログラム(midiplayなど)さえ用意すれば とりあえず音が鳴らせますが、使いたいプログラムが対応してない場合は諦める しかありません。後者ではどんなプログラムからも外部音源を利用できるように なりますが、新たなデバイスドライバを組み込むのでカーネルのコンパイルなど 手間がかかります。
専用プログラムによるもの
微風工房さんのページから、シリアルポート出力に対応したプログラムである midiplay-0.5+08.tar.gz がダウンロードできます。 素直にconfigure+makeで動きました。デバイスドライバのコンパイルを始める前に、 このプログラムでまず動作を確認しておくと良いかもしれません。
UART16550デバイスドライバ
ネット上で探したところ、kernel2.[01].x用には いくつかのバージョンが見つかりましたが、2.2になってIRQ回りの関数がちょっと 変わったようなのでそのままでは使えません。それに対応し、またモジュールとして 使えるように変更を行いました。 パッチはこちらからダウンロード できます。
RedHatディストリビューションのsound モジュールはコンフィグレーションの方法がオリジナルのOSS/Freeから変更して あります (オリジナルはconfigure.cを使うのに対し、RedHatは他のドライバ と同様にConfig.inを使う)。従って、他のディストリビューションで使うには 多少工夫が必要だと思います。
あるいは、ALSAの サウンドドライバにはシリアルポート用のモジュールが含まれているようなので、 それを使ってしまうという手もあるかもしれません。
参考ドキュメント: オリジナルのUART16550パッチは Linux sound driver patches for 16450 and 16550A UARTS にあります。 Linux上でのSound関係は Sound&MIDI Software for Linux から辿れます。 また、微風工房 にも様々なツール/ソフトウェアがあります。
RedHat6.0にデフォルトでついてくるカーネルはIP Masqueradeがイネーブルされた 状態でコンパイルされているので、再コンパイルする必要はありません。 IPのフォワーディングとMasqueradeを有効にするには、/etc/rc.d/rc.localに 以下の2行を書き加えるだけです。 (以前のipfwadmコマンドは、kernel2.2からipchainsになりました)。
ipchains -P forward DENY ipchains -A forward -s 172.29.0.0/16 -j MASQここで、172.29.0.0/16 はローカル側のネットワークアドレスとマスクを 指定しています。各自のネットワーク構成に合わせて変えて下さい。 私は以前、ノートPCを会社にも持って行ってたので、会社の内部アドレスに合わせるため Class Bのプライベートアドレスを使いましたが、 普通はClass Cのプライベートアドレス 192.168.xxx.0/24 で十分だと思います。
あとは、ローカルネットにつないだ各マシンのgatewayにルータマシンのローカル側IPを 指定するだけです。ルータマシンのgatewayはプロバイダのものを差すようにしてください。
参考ドキュメント:mini-HOWTO の "IP-Masquerade" ( /usr/doc/HOWTO/mini/IP-Masquerade) に必要なことは全て書いてあります。
慣れると便利なホイールマウス。自宅ではLogitechのものを使っています。 会社のSGIのマウスでもつい人差し指がホイールを探してさまよってしまいます。
XFreee86の3.3.2から既にサポートのコードが入っています (RedHat6.0についてくる Xは3.3.3.1)。サーバー側は XF86Config に一行書き足すだけでOK。 クライアント側はXのリソースなどで個別に設定する必要があります。
サーバ側の設定:/usr/lib/X11/XF86Config の `Section "Pointer"' の 下に一行
ZAxisMapping 4 5と入れます。なお、Emulate3Buttonsはコメントアウトする必要があります (ホイールを押し下げるのが中ボタンイベントになります)。
クライアント側の設定は下のドキュメントを参考にしてください。
参考ドキュメント:Colas Nahaboo X mouse wheel scroll page に必要な情報は全てあります。