Linux 備忘録 (Archive)

ちょっと内容的に古くなってしまいました。RedHat6.0 (Kernel 2.2.5)を インストールした頃のメモ書きです。


環境

toccata: 普段ログインするマシン。あとでWindowsも入れる予定。
VideoRIVA TNT
SoundSoundBlaster AWE64 (Plug&Play)
EthernetSMC1660BT (NE2000互換、Plug&Play)
scherzo: ルータ。各種サーバ。ダイアルアップでプロバイダに接続。 キーボード、ディスプレイは接続していない。
Ethernet謎のNE2000互換ボード。
rhapsody: ノートPC。Linux only。

Plug & Playの設定

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.conf

isapnp.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)。


SoundBlaster AWE64: サウンドの設定

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=0x330

sndconfigが鳴らすテストのファイルは、 /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) が参考になります。


外部MIDI音源をシリアルポートに接続

外部音源をシリアルポート接続で駆動するには(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 から辿れます。 また、微風工房 にも様々なツール/ソフトウェアがあります。


IP Masquerade: ルータの設定

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) に必要なことは全て書いてあります。


オンデマンドダイアリング


X: ホイールマウスを使う

慣れると便利なホイールマウス。自宅では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 に必要な情報は全てあります。


X: タブレットを使う


Shiro Kawai
Last modified: Mon Jan 28 22:19:47 HST 2002