(udev) PGI コンパイラの FLEXlm ライセンスサーバのエラー (2009/10/22)
「イーサネットカードのデバイス名を割り当てるに関連がある話です.
PGI コンパイラが動作しないという報告がありました.コンパイラを動作させたときのエラーメッセージは,pgf77-linux86: LICENSE MANAGER PROBLEM: Failed to checkout license pgf77-linux86: LICENSE MANAGER PROBLEM: Invalid host. The hostid of this system does not match the hostid specified in the license file. Feature: pgf77-linux86 Hostid: xxxxxxxxxxxx License path: /usr/pgi/license.dat FLEXnet Licensing error:-9,57. System Error: 19 "(null)" For further information, refer to the FLEXnet Licensing End User Guide, available at "www.macrovision.com".となっていました(Hostid は伏せ字で xxxxxxxxxxxx としています).Hostid には,MAC アドレスが入るので,MAC アドレスを調べると,
% ifconfig | grep eth eth1 Link encap:イーサネット ハードウェアアドレス xx:xx:xx:xx:xx:xxのように,ハードウェアアドレスと Hostid は一致していました.エラーを出すマシンと正常動作しているマシンの双方があったので,それらを見比べているうちに,ある共通点に気が付きました.ライセンスエラーを出すマシンのイーサネットカードのデバイス名が eth0 でないことです.
いくつかのマシンは udev 更新時の影響で,自動的にイーサネットカードのデバイス名が変更されていました.そこで,再起動時などにネットワークに繋がらない場合は,イーサネットカードのデバイス名を調べ,それから /etc/network/interfaces を
auto eth1 iface eth1 inet staticという具合に変更されたイーサネットカードのデバイス名にしていました.この結果,PGI コンパイラの FLEXlm ライセンスサーバのエラーが引き起こされたようです.
そこで,イーサネットカードのデバイス名を元の eth0 に変更してみました.udev でイーサネットカードのデバイス名を定義しているファイルは /etc/udev/rules.d/70-persistent-net.rules であるので,このファイルの内容で NAME="eth1" となっているところを
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \ ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{type}=="1", \ KERNEL=="eth*", NAME="eth0"のように修正します.また,/etc/network/interfaces を
auto eth0 iface eth0 inet staticと修正して再起動します.この結果,PGI コンパイラの FLEXlm ライセンスサーバは問題なく動作しました.FLEXlm ライセンスサーバを利用しているアプリケーションは,他にもありますので,その際はイーサネットカードのデバイス名をチェックしたほうがよいかと思います.
一点だけ,気になる点が残っています.それは,/etc/udev/rules.d/70-persistent-net.rules の最初の部分に
# This file was automatically generated by the /lib/udev/write_net_rules # program run by the persistent-net-generator.rules rules file.と書かれているので,再度,勝手にイーサネットのデバイス名が変更される可能性があります.また,ポリシィとして,できれば自動生成されたファイルはあまり変更を加えたくないので,自動生成される際に参照されるデータのほうを変更できればよいかと思っていますが,いまのところはよく分かりません.
梅原 大祐 / UMEHARA Daisuke umehara@kit.ac.jp Last modified: 2020/05/01 15:37