전제조건 및 구성

전제조건 및 구성

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;
}

처음 네 줄은 기본적으로 존재합니다.

/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

테스트 및 결과

우리는 라즈베리 파이라고 부릅니다.주인그리고 리눅스 새로 고치고 싶어표적.

따라서 이를 수행하기 위해 호스트에 모든 로그가 있고 대상에 직렬 콘솔이 있습니다(즉, 커널에서 부팅 로그에 액세스할 수 있음을 의미합니다).

기본적으로 무슨 일이 일어나는지:

  • 대상의 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 서버의 루트 디렉터리로 사용되는 디렉터리를 알려줍니다.

관련 정보