NFS 起動前のイーサネットデバッグ

NFS 起動前のイーサネットデバッグ

NFS経由で提供されるリモートシステムのファイルシステムを使用して、組み込みARMボードのU-bootからLinuxを起動しようとしています。イーサネット接続が誤って接続されているように見え、NFS共有はマウントされません。ただし、U-bootがTFTPを介してカーネルをロードするため、Ethernetハードウェアが機能していることがわかります。

どのようにデバッグできますか?カーネルを調整してみることもできますが、これは繰り返すたびにカーネルを再コンパイルする必要があるため、遅くなります。外部ファイルシステムをマウントせずにカーネルを実行する方法はありますか?

答え1

initrdイメージをカーネル(General Setup -> Initial RAM filesystem and RAM disk (initramfs/initrd) support -> Initramfs source file(s))にコンパイルできます。 (x86の場合はmy init)などの特殊な形式でファイルを指定します。

dir /bin                                    0755 0 0
file    /bin/busybox                        /bin/busybox    0755 0 0
file    /bin/lvm                        /sbin/lvm.static0755 0 0
dir /dev                                    0755 0 0
dir /dev/fb                                 0755 0 0
dir /dev/misc                               0755 0 0
dir /dev/vc                                 0755 0 0
nod /dev/console                                0600 0 0    c  5   1
nod /dev/null                               0600 0 0    c  1   3
nod /dev/snapshot                               0600 0 0    c 10 231
nod /dev/tty1                               0600 0 0    c  4   0
dir /etc                                    0755 0 0
dir /etc/splash                             0755 0 0
dir /etc/splash/natural_gentoo                      0755 0 0
dir /etc/splash/natural_gentoo/images                   0755 0 0
file    /etc/splash/natural_gentoo/images/silent-1680x1050.jpg  /etc/splash/natural_gentoo/images/silent-1680x1050.jpg  0644 0 0
file    /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg /etc/splash/natural_gentoo/images/verbose-1680x1050.jpg 0644 0 0
file    /etc/splash/natural_gentoo/1680x1050.cfg        /etc/splash/natural_gentoo/1680x1050.cfg        0644 0 0
slink   /etc/splash/tuxonice                    /etc/splash/natural_gentoo              0755 0 0
file    /etc/splash/luxisri.ttf                 /etc/splash/luxisri.ttf                 0644 0 0
dir /lib64                                  0755 0 0
dir /lib64/splash                               0755 0 0
dir /lib64/splash/proc                          0755 0 0
dir /lib64/splash/sys                           0755 0 0
dir /proc                                   0755 0 0
dir /mnt                                    0755 0 0
dir /root                                   0770 0 0
dir /sbin                                   0755 0 0
file    /sbin/fbcondecor_helper                 /sbin/fbcondecor_helper                 0755 0 0
slink   /sbin/splash_helper                 /sbin/fbcondecor_helper                 0755 0 0
file    /sbin/tuxoniceui_fbsplash               /sbin/tuxoniceui_fbsplash               0755 0 0
file    /sbin/tuxoniceui_text                   /sbin/tuxoniceui_text                   0755 0 0
dir /sys                                    0755 0 0
file    /init                           /usr/src/init   0755 0 0

まだARMでは使用していませんが、機能します。/init起動コマンドを配置できるファイル。残りは必要なさまざまなファイルです(busyboxなど)。

答え2

心に浮かぶいくつかのこと:

  • tcpdump、Wireshark、または他のイーサネットパケットチェッカーを使用して、ボードが間違ったアドレスにパケットを送信しているか、まったく何も送信していないことを確認してください。
  • シリアルコンソールには何がありますか?
  • 接続してみてくださいリモートカーネルデバッガ
  • 問題を再現できるエミュレータがある場合は、エミュレータで実行してみてください。
  • カーネルを取得する代わりに、ブートファイルとルートファイルシステムを次の場所に配置します。フラッシュメモリ、またはルートファイルシステムをマウントするメモリディスク

答え3

この記事はカーネルのデバッグに関するものではなく、質問で提起されたネットワークの問題に関するものです。

スイッチがSTP(Spanning Tree Protocol)をサポートしている場合は、STPが動作しているときにSTPが6秒以上スイッチのイーサネットポートをアクティブにしない可能性があることに注意してください。この遅延は、ホストがホストのイーサネットポートをリセットするたびに再開される可能性があります。これは、電源投入、DHCP要求、ネットワークドライバのカーネルロードなどの間に複数回発生する可能性があります。これは、ディスクレスシステムのNFSブート、DHCP、キックスタートなどを妨げ、多くのシステム管理者に多くの問題を引き起こす可能性があります。いくつかの例についてはRedHatをご覧ください。バグ 189795 - キックスタート中のDHCPタイムアウトこのPXEガイド

CiscoスイッチやHP ProCurveスイッチなど、ほとんどの高度なスイッチはSTPをサポートし、すべてのポートでこの機能を有効にします。

関連情報