MOXA C168H/PCIのドライバインストール
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-24 11:42
rumpleteazerと申します。
MOXA増設シリアルカード(PCI)を使用する為にドライバを組み込んだのですが、 正常に動作していない様子です。 無事にインストール出来た方、環境等教えていただけないでしょうか? 検索や過去logも見たつもりなのですが、ドライバのインストールは初めて なのでどこを確認していいのか解らずはまっています。 <環境> Linux:Omoikane GNU/Linux 1.1 (Debian系 カーネルVer2.2.17) 増設シリアルカード:MOXA C168H/PCI (8ch) ドライバ:mxser_1.7.tgz (カーネル Ver2.2.x用 webサイトより入手) <エラー内容> insmodを行うと以下のメッセージが出ます。 [root@table1 driver]# insmod mxser mxser.o: unresolved symbol schedule_timeout mxser.o: unresolved symbol request_region mxser.o: unresolved symbol __wake_up 以下30行程度同様のエラーメッセージが表示されます。 lsmodで確認するとmxserは表示されません。 $ cat /proc/ksyms |grep __wake_up すると、"__wake_up"はみつからず、"__wake_up_なんたら"が表示されます。 これを同じ物と認識しない事が原因でしょうか? /-------- <行った作業手順> ・カーネルソースを展開する # cd /usr/src # tar -Ixvf kernel-source-2.2.17.tar.bz2 # ln -sf kernel-source-2.2.17 linux ・MOXAドライバの作成 # cd / # mkdir moxa # cd /moxa ・ftp等で/moxaへmxser_1.7.tgzを転送する ・ドライバファイルを展開する # tar xvfz mxser_1.7.tgz ・カーネルにあるビルトインドライバをバックアップする # cd /usr/src/linux/drivers/char # mv mxser.c mxser.c.old ・リンクを作成する # ln -sf /moxa/mxser/driver/mxser.c mxser.c ・ドライバソースをmakeする # cd /moxa/mxser # make clean; make install ※makeをかけるとmodsetvar.hが見つからないと怒られるので以下の操作を行う # cd /usr/src/kernel-source-2.2.17/include/linux/ # ln -sf ./modsetver.h ./modversions.h 以上でドライバのmakeは通る ここでinsmod mxserを実行すると上記エラーが出る。 modprobe mxserでも同様。 この辺りで挫折しました。 よろしくお願いします。 _________________ rumpleteazer | ||||||||
|
投稿日時: 2008-06-24 16:44
補足ですが、TurboLinux8 Workstationではインストールできました。
実際に/dev/ttyM0~M7が使用可能でした。 使用したドライバは、最新のmxser_1.12.tgz(カーネルVer2.4用)です。 _________________ rumpleteazer | ||||||||
|
投稿日時: 2008-06-24 21:00
とりあえず気になるのはカーネルソースを展開した後、make menuconfig等の
おまじないを唱えていないことです。 make menuconfigじゃなくてもmake xmenuconfigでも、なんならmake configでも いいんですが、このあたりをどれか一度は実行しておかないとカーネルまわりの コンパイルに必要ないくつかのファイルが作成されないので。 modsetvar.hもそのタイミングで作成されなかったかしら。どうだったかな。 | ||||||||
|
投稿日時: 2008-06-26 17:47
ぽんすさんフォローありがとうございます。
make menuconfigは使用している環境でなぜか動作せず、仕方なくmake configを実行して以下の項目をYesとしてみました。 * Character devices * Non-standard serial port support (CONFIG_SERIAL_NONSTANDARD) [N/y/?] y Moxa SmartIO support (CONFIG_MOXA_SMARTIO) [N/y/m/?] (NEW) y make depも実行してみたのですが、modversions.hが作成された形跡はありません。 ドライバのMakefileですが、コンパイルオプションは以下の通りです。 OPTS=-DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -O2 \\ -fomit-frame-pointer -pipe -m486 -I/usr/src/linux-2.4/include \\ -I/usr/src/linux/include ifeq ($(MAKECMDGOALS), install) OPTS+=-DMODVERSIONS endif ifeq "$(findstring SMP, $(shell uname -a))" "SMP" OPTS+=-D__SMP__ endif しばらく悩んでみます _________________ rumpleteazer | ||||||||
|
投稿日時: 2008-06-26 22:33
ちょっとだけ.
/usr/src/linux-2.4/include の 2.4 は誤記ですか? | ||||||||
|
投稿日時: 2008-07-11 19:08
kazさん、ありがとうございます。
投稿頂いていたのに返信が遅くなり申し訳ありません。
Makefileから抜き出したので誤記ではありません。 webを検索すると、カーネルソースの置き場を/usr/src/linux-2.4/ としている場合と、/usr/src/linux/としている場合がありました。 良く解らないのでそれぞれにリンクを張って試してみました。 条件によってコンパイルオプションを変えている様子です。 長いですが、Makefile全て引用します。
同じヘッダファイル名でも環境によって内容が違うようで、 その辺り調べているのですが、なかなか正解にたどり着きません。 引き続き何かアドバイスありましたらよろしくお願いします。 _________________ rumpleteazer | ||||||||
|
投稿日時: 2008-07-12 22:03
make menuconfigが使えないのは、ncursesがインストールされて
いないからではないかと思います。menuconfigのほうが格段に楽で、 見落とし等が発生する可能性も少なくなるのでオススメです。 /usr/include/linuxや/usr/include/asmは、展開したカーネルソースツリーの 中を指していますか? あとは、動いているカーネルとソースツリーとが合っているのかどうか という点が気になります。tarで展開しているということは、それは おそらくディストリビューション標準のパッケージ等ではないのでは ないかと思いますが、どうなんでしょう。 ソースツリーからカーネルを構築し、そのカーネルで起動した状態で ドライバをmakeするとどうでしょうか。 |
1