前提条件と構成

前提条件と構成

Raspbian Jessie(最新の安定版、カーネルバージョン4.4)を使用してRaspberry Piでフラッシュステーションを実行しようとしています。

しかし、私は4つのUSBポートを利用したいと思います。これにはUSB経由のイーサネットを使用します(u-bootはtftpサーバーを確認するためにイーサネットを使用するためです)。

前提条件と構成

Raspberry Piにインストールしたものは次のとおりです。

  • isc-dhcp-サーバー
  • シネット

複数のファイルを設定しました。

/etc/dhcp/dhcpd.conf

log-facility local7;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.2.0 netmask 255.255.255.0
{
  range dynamic-bootp 192.168.2.2 192.168.2.100;
  if substring (option vendor-class-identifier, 0, 10) = "AM335x ROM"
  {
    filename "u-boot-spl-restore.bin";
  }
  elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL"
  {
    filename "u-boot-restore.img";
  }
  else
  {
    filename "zImage";
  }

  range 192.168.2.101 192.168.2.199;
}

最初の4行はデフォルトで存在します。

/etc/xinetd.d/tftp

service tftp
{
  socket_type = dgram
  protocol = udp
  wait = yes
  user = root
  server = /usr/sbin/in.tftpd
  server_args = -s /tftpboot
  disable = no
}

ファイルが存在しないため作成する必要があります。これは他のサービスと同様に含まれます/etc/xinetd.conf

/tftpboot/

このフォルダを作成し、次のコマンドを実行します。

  • sudo cp /path/to/boot/files/* /tftpboot/
  • sudo chmod -R 777 /tftpboot/
  • sudo chown -R nobody:nogroup /tftpboot

/etc/default/isc-dhcp-server

usb0インターフェイスリストに追加:

INTERFACES="usb0"

/etc/network/interfaces

インターフェースを作成しましたusb0

allow-hotplug usb0
iface usb0 inet static
    address 192.168.2.1
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255
    up /etc/network/if-up.d/usb-interfaces

/etc/network/if-up.d/usb-interfaces

次のスクリプトが作成され、引用されました/etc/network/interfaces

#!/bin/sh

if [ "$IFACE" = usb0 ]; then
    sudo service isc-dhcp-server restart
fi

すべてのサービスを再起動してください!

sudo /etc/init.d/tftp-hpa restart
sudo /etc/init.d/xinetd restart

テストと結果

私たちはラズベリー波と呼びます。所有者そしてLinuxを更新したいターゲット

したがって、これを行うには、ホストにすべてのログがあり、ターゲットにシリアルコンソールがあります(つまり、カーネルからブートログにアクセスできることを意味します)。

基本的に何が起こるか:

  • ターゲットのPoVから:シリアルログには特に何も表示されません。通常、しばらくブロックされてから始まります。
  • ホストの観点から:以下は完全なログです。usb0Linuxシステムが起動し始めると、インターフェイスは消えて停止します。ご覧のとおり、後ろBOOTREQUESTにしっかり付いてくださいBOOTREPLY。この時点で、ターゲットはサーバーから取得する必要があるファイル名tftp/etc/dhcp/dhcpd.confファイルに割り当てられている)を知っているので、tftp要求する必要がありますが、何も起こりません。

tftpターゲットコンピュータとコンピュータの両方でRaspberry Piで実行されているサーバーをテストしましたが、どちらの場合もファイルを正しくインポートできます。また、別のファイルを試してみて、使用したファイル(私の/tftpboot/フォルダ内)が正確で有効であることを確認することができました。

私の考えとテスト:

  • Raspberry PiのUSBポートは十分な電力を提供しません。独立して電源が供給されたUSB 2.0ハブでテストした結果は同じでした。

どんな助けでも大変感謝します。

ベストアンサー1

問題は、私のシステムで複数のTFTPサーバーが実行されていますが、正しいサーバーを構成していないことです。

この問題が発生した場合は、次のようなコマンドを実行することをお勧めしますps ax | grep tftp。また、通常はTFTPサーバーのルートディレクトリとして使用されるディレクトリを知らせます。

おすすめ記事