
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에서: 직렬 로그에 특별히 아무것도 표시되지 않습니다. 일반적으로 잠시 차단된 다음 시작됩니다.
- 호스트의 관점에서:다음은 전체 로그입니다.
usb0
Linux 시스템이 부팅되기 시작하면 인터페이스가 사라지고 중지됩니다. 보시다시피 의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 서버의 루트 디렉터리로 사용되는 디렉터리를 알려줍니다.