Vine Linux バグトラッキングシステム - Vine Linux
課題の詳細を表示
0000195Vine Linux1 バグ公開2006-09-17 21:412006-10-16 22:59
anonymous 
daisuke 
不明 
完了不明 
4.0beta 
 
なし
0000195: 起動時にLAN設定に失敗する
Shuttle Xpc sn41G2にVine4.0-betaをインストールしたところ
起動時にLAN設定に失敗します.

ネットワークインタフェースは以下の構成です.

eth0:PCI Buffalo LAN
eth1:オンボード LAN

eth0を有効にしbootとすると、eth0の設定に失敗し
[OK]と出力されずeth0の設定で止まってしまいます.
この場合強制終了する以外に対応できなくなります.
これはeth1にしても同様のことが起こります.

boot時無効にし、ログイン後有効にすれば
ネットワークにはつながります.

なお、この現象は以前のバージョンではありませんでした.
設定されていません。
patch ifup.patch (1,016) 2006-09-18 01:51
http://mantis.vinelinux.org/file_download.php?file_id=77&type=bug
patch initscripts-7.2.1-0vl1_ifup.patch (653) 2006-09-18 11:12
http://mantis.vinelinux.org/file_download.php?file_id=78&type=bug
課題の履歴
2006-09-17 21:41anonymous新規課題
2006-09-17 22:39daisuke担当者 => daisuke
2006-09-17 22:39daisuke状態新規 => テスト待ち
2006-09-17 22:39daisukeコメント追加: 0001239
2006-09-18 01:51ats7添付ファイル追加: ifup.patch
2006-09-18 01:51ats7コメント追加: 0001240
2006-09-18 03:48daisukeコメント追加: 0001241
2006-09-18 11:12ats7添付ファイル追加: initscripts-7.2.1-0vl1_ifup.patch
2006-09-18 11:12ats7コメント追加: 0001242
2006-09-22 00:05anonymousコメント追加: 0001243
2006-09-22 01:35daisukeコメント追加: 0001244
2006-09-22 02:10daisuke状態テスト待ち => 完了
2006-09-22 02:10daisuke解決状況不明 => 保留
2006-09-22 02:10daisukeコメント追加: 0001245
2006-09-25 01:34daisuke状態完了 => テスト待ち
2006-09-25 01:34daisuke解決状況保留 => 不明
2006-09-25 01:34daisukeコメント追加: 0001246
2006-10-09 02:14anonymousコメント追加: 0001247
2006-10-16 22:59anonymous状態テスト待ち => 完了
2006-10-16 22:59anonymousコメント追加: 0001248

コメント
(0001239)
daisuke   
2006-09-17 22:39   
> Shuttle Xpc sn41G2にVine4.0-betaをインストールしたところ
> 起動時にLAN設定に失敗します.
>
> ネットワークインタフェースは以下の構成です.
>
> eth0:PCI Buffalo LAN
> eth1:オンボード LAN
>
> eth0を有効にしbootとすると、eth0の設定に失敗し
> [OK]と出力されずeth0の設定で止まってしまいます.
> この場合強制終了する以外に対応できなくなります.
> これはeth1にしても同様のことが起こります.

おそらくインタフェースが入れ替わっているのではないかと
思います。eth0 と eth1 がインストール時と反対になって
しまっていると思われます。
dhcp でとりにいって止まっているのだろうと思います。
しばらくまつと timeout するはずですが、timeout しま
せんでしたか?

ともあれ、原因は installer との認識順の違いによる
ネットワークインタフェースの不整合です。<BTS:150>
もその関係ではないかと思いますが、非常に不便なので
修正したいとおもいます。インストール時に設定された
とおりのインタフェースに付け直すように udev rule
をいれることにしました。

initscripts-7.2.0-0vl1, β3 で適用されます。
(0001240)
ats7   
2006-09-18 01:51   
> おそらくインタフェースが入れ替わっているのではないかと
> 思います。eth0 と eth1 がインストール時と反対になって
> しまっていると思われます。

# Vine40-beta2-vmware.tar.bz2 を VMware Player 1.0.2 で試して
# いて気付いたのですが、VMware 起動時に新しい UUID が生成され、
# その影響で MAC アドレスが変わりました。
# そのまま Vine を起動すると、eth0 の設定で止まってしまいました。

ifcfg-eth0 の HWADDR が実際の MAC アドレスと違うと、ifup が
無限ループするようです。ifcfg-eth0 の HWADDR をコメントアウト
すると止まりませんでした。
# HWADDR は必要なのでしょうか?

添付のパッチを当てると HWADDR をコメントアウトしなくても、
ifup が終了するようになりました。
ただ、パッチを当てた部分の処理意図がよく分かっていないので、
IP エイリアス関連でエンバグしていないか心配です。

パッチ適用後
--
Sep 18 01:22:26 localhost network: Setting network parameters: succeeded
Sep 18 01:22:27 localhost network: Bringing up loopback interface: succeeded
Sep 18 01:22:28 localhost ifup: Device eth0 has different MAC address than expected, ignoring.
Sep 18 01:22:28 localhost network: Bringing up interface eth0: failed
--
(0001241)
daisuke   
2006-09-18 03:48   
> ifcfg-eth0 の HWADDR が実際の MAC アドレスと違うと、ifup が
> 無限ループするようです。ifcfg-eth0 の HWADDR をコメントアウト
> すると止まりませんでした。
> # HWADDR は必要なのでしょうか?

たしかに、ifup を延々再帰的に呼び出されて無限ループにはいりますね。

> 添付のパッチを当てると HWADDR をコメントアウトしなくても、
> ifup が終了するようになりました。
> ただ、パッチを当てた部分の処理意図がよく分かっていないので、
> IP エイリアス関連でエンバグしていないか心配です。

このパッチはちゃんとうごいていますか? NEWCONFIGS が参照されていない
のですべて素通りになってしまうのではないかとおもいますが。。

initscripts-7.2.0 で更新した部分に不備があったので、それを修正す
るとともに インタフェースの rename にも対応させて、上記バグもとる
ようにしました。インタフェースが変わっていたら(MACADDRの背亭された)
設定ファイルにあわせて付けかえ、MACADDR が未知の場合は元と同様に
MACアドレスが期待しているものじゃない というメッセージがでるように
しました。基本部分は upstream(initscripts-7.93) からの porting です。

変更が大幅になってしまいましたので、試してみてもらえると助かります。
initscripts-7.2.1-0vl1 として upload します。
# 手元でいろいろなパターンで試している限り、とくに問題はなさそう
# です。
(0001242)
ats7   
2006-09-18 11:12   
すみません、パッチ間違ってましたね。

initscripts-7.2.1-0vl1 試してみました。
ifcfg-eth0 の HWADDR が実際の MAC アドレスと違うと
Device eth0 has different MAC address than expected, ignoring.
というメッセージが出て失敗するのは変わりませんでした。
添付のパッチで直ることを確認しました。
(0001243)
anonymous   
2006-09-22 00:05   
> すみません、パッチ間違ってましたね。
>
> initscripts-7.2.1-0vl1 試してみました。
> ifcfg-eth0 の HWADDR が実際の MAC アドレスと違うと
> Device eth0 has different MAC address than expected, ignoring.
> というメッセージが出て失敗するのは変わりませんでした。
> 添付のパッチで直ることを確認しました。


作成して頂いたパッチを/sbin内で

# patch < initscripts-7.2.1-0vl1_ifup.patch

として当てたところ以下のようなメッセージが出ました.

patching file ifup
Hunk 0000001 FAILED at 161.
1 out of 1 hunk FAILED -- saving rejects to file ifup.rej

"FAILED"のメッセージが出ているのでパッチを当てるのに
失敗している気がするのですが..

なにぶん,ここらへんの知識がないもので
パッチの当て方は正しかったでしょうか?

気付いたことしか報告できませんが、以上報告です.
(0001244)
daisuke   
2006-09-22 01:35   
> > initscripts-7.2.1-0vl1 試してみました。
> > ifcfg-eth0 の HWADDR が実際の MAC アドレスと違うと
> > Device eth0 has different MAC address than expected, ignoring.
> > というメッセージが出て失敗するのは変わりませんでした。
> > 添付のパッチで直ることを確認しました。

この部分は、
1. ifcfg-ethX の HWADDR が ethX の MACアドレス(FOUNDMACADDR) と
   違っていたら、
2. HWADDR を MACアドレスに持つインタフェース(curdev)を探して、
3. そのインタフェース(curdev)の名前を ethX に付け直す
ということをします。

これは、本来意図したコネクタに意図したIPアドレスを設定するために
用意されている機能です。たとえば口が2つあって、設定したときと異な
る順番で認識されてしまった場合に、口とネットワーク設定がいれかわっ
てしまったりするのを防ぎます。

これを添付されたパッチを適用してしまうと、意図していない状態に
なってもおかまいなしに設定されてしまいます。本来はこのメッセー
ジも出さず次へ進んで「e1000デバイス eth0 は存在しないようです
ので初期化を遅らせます」といったメッセージを出して終了するのが
正しい挙動です。(curdevが空っぽだったときの処理がおかしい)

正しくは以下の感じです。

if [ -n "${HWADDR}" ]; then
    FOUNDMACADDR=`get_hwaddr ${REALDEVICE}`
    if [ "${FOUNDMACADDR}" != "${HWADDR}" ]; then
        curdev=`ip -o link | awk -F ':' -vIGNORECASE=1 "/$HWADDR/ { print \\$2 }"`
        if [ -n "$curdev" ]; then
            rename_device "${REALDEVICE}" "${HWADDR}" "${curdev}" || {
                echo $"Device ${DEVICE} has different MAC address than expected, ignoring."
                exit 1
            }
        fi
    fi
fi

本来 ignoring 云々を出すのはHWADDRをもつデバイスが存在するのに
rename できなかったときです。

で、ここでデバイスが存在しなかった場合にHWADDRを無視して強制的
にインタフェースを up してしまうという手もありますが、実は後か
ら遅れて認識されるデバイス(たとえばUSB)だった場合に、意図と違
う設定がされてしまうことになります。
もしMACアドレスを無視して、現在のインタフェースにその設定を適用
したいということであれば HWADDR= の一行を ifcfg-eth? から抜いて
おくというのが良いと思います。

とりあえず次の initscripts-7.2.5-0vl1 で上の curdev の修正だけ
いれておきます。
(0001245)
daisuke   
2006-09-22 02:10   
この修正だけではちょっと挙動がおかしいみたいなので、いったん保留に
もどします。
(0001246)
daisuke   
2006-09-25 01:34   
バグしい部分については修正はしました。
HWADDR が設定されているときに、該当するインタフェースがない場合に
FAILED になるのは仕様なので、そこは変えてありません。必要に応じて
HWADDR を削除してください。
initscripts-7.2.5-0vl1 です。
(0001247)
anonymous   
2006-10-09 02:14   
> バグしい部分については修正はしました。
> HWADDR が設定されているときに、該当するインタフェースがない場合に
>
> FAILED になるのは仕様なので、そこは変えてありません。必要に応じて
>
> HWADDR を削除してください。
> initscripts-7.2.5-0vl1 です。

上記を参考にパッチを当てたところ
起動時にLANに接続する様になりました。
(0001248)
anonymous   
2006-10-16 22:59   
> 上記を参考にパッチを当てたところ
> 起動時にLANに接続する様になりました。

β3 で HWADDR を付けたり消したり、わざと
間違った MAC アドレスを付けたりしてテスト
してみましたが、想定通りの動作をすることが
確認できました。

状態を完了に変更します。