内蔵デバイスはネットワーク上のどのアイテムでもpingを実行できません。

内蔵デバイスはネットワーク上のどのアイテムでもpingを実行できません。

カーネルバージョン3.6.11でbusyboxを実行するbuildrootで構築された組み込みデバイスがあります。カーネルは完全に基本的なオプションで構築されました。ネットワーク担当者が指定したIP、ゲートウェイ、ネットマスクなどに従ってデバイスを設定し、その値を/etc/network/interfacesファイルに入れました。システムが起動したときに電話した通路で、すべてのifconfigネットワーク設定が正常になっていることを知らせてくれました。ただし、デバイスと同じサブネット上の他のコンピュータに対してpingを実行することはできません。直接イーサネットケーブル接続を介してホストと通信できるため、ネットワークアダプタが正常であるとします。sshホストに接続でき、ホストはvsftpd私がインストールしたデバイスでターゲットを正しく表示します。基本的に、問題の診断をどのように進めるべきかわかりません。インターネットフォーラムのLinuxネットワーク設定ガイドに没頭しましたが、何も見つかりませんでした。そして心配してタイピングをするとき

# ip addr show dev eth0

libuClibc-0.9.33.2.soでセグフォルトの報告を受けました。私はbuildrootを使ってこれらすべてを構築し、すべてが成功したと報告しました。私のカーネルが破損している可能性がありますか?進行方法がわからないので、アドバイスをいただきありがとうございます。

編集するの出力はip addr show dev eth0次のとおりです。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen
    1000 link/ether 00:18:7d:19:a0:d8 brd ff:ff:ff:ff:ff:ff
    inet 172.18.255.212/24 brd 172.18.255.255 scope global eth0
[  331.700545] ip[951]: segfault at 0 ip b76e1f26 sp bfbd29b0 error 4 in 
libuClibc-0.9.33.2.so[b76b5000+4d000]
Segmentation fault

別のアダプターeth1で同じコマンドを呼び出すと、セグメントが発生しないため、実際に何が起こっているのかわかりません。

編集2デバッグ情報を使用して再構築した後、stracesegfaultのstrace出力を取得できました。それがどういう意味なのかはよくわかりませんが、書かないでほしい場所に書こうとしているようです。すべてを含めず、最後の数行だけを含めてください)。

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
ioctl(4, SIOCGIFTXQLEN, {ifr_name="eth1", ifr_qlen=1000}) = 0
close(4)                                = 0
write(1, "3: eth1: <BROADCAST,MULTICAST,UP"..., 793: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
) = 79
write(1, "    link/ether 00:18:7d:19:a0:d7"..., 55    link/ether 00:18:7d:19:a0:d7 brd ff:ff:ff:ff:ff:ff
) = 55
open("/etc/iproute2/rt_scopes", O_RDONLY) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xbfc91b30) = -1 ENOTTY (Inappropriate ioctl for device)
read(4, "#\n# reserved values\n#\n0\tglobal\n2"..., 4096) = 92
read(4, "", 4096)                       = 0
close(4)                                = 0
write(1, "    inet 192.168.12.198/16 brd 1"..., 65    inet 192.168.12.198/16 brd 192.168.255.255 scope global eth1
) = 65
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
+++ killed by SIGSEGV +++
Segmentation fault

ベストアンサー1

分割エラーの問題を解決し、後で同様の問題が発生した場合に備えて、ここで問題を文書化します。次のような電話をかけると

 ip -f inet addr show dev eth0

変える

 ip inet addr show dev eth0

これによりセグフォルトは発生しませんが、まだ発生します。

 ip -f inet6 addr show dev eth0

これにより、私のツールチェーンやビジボックスのどこかにIPv6サポートと互換性のない部分があると結論付けることができました。私はbuildroot設定ファイルを使用して、ターゲット全体、ツールチェーン、カーネル、およびuClibcを最初から再構築し、今回はクロスツールがIPV6サポートで作成されたことを確認しました。このオプションを設定すると、報告されたセグフォルトは発生しなくなります。

おすすめ記事