이 프로젝트는 비글본 블랙 보드를 TFTP 부팅하는 방법을 서술하였다.
보드랑 PC랑 인터넷 케이블로 연결하고, TFTP로 부팅하는 과정을 서술한다.
PC는 192.168.7.1로 임의로 설정하고 보드는 192.168.7.2로 임의로 설정한다.
맨처음으로 할 일은 SD카드로 부팅을 하고, SD카드에서 UBOOT까지 부팅을 한다. 그 이후, uEnv로 환경 변수를 설정하고 커널 이미지랑 DTB(Device Tree Blob)파일등을 업로드 한다.
먼저 서버 PC에서 tftp를 설치해야한다.
sudo apt-get install xinetd tftp tftpd
아래의 디렉토리에 파일을 하나 만들고 코드를 입력한다
sudo vi /etc/xinetd.d/tftp
code
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /var/lib/tftpboot -s
disable = no
}
아래와 같이 디렉토리를 생성하고 권한을 설정하고, 재시작하자
sudo mkdir /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
sudo chown -R nobody /var/lib/tftpboot
sudo /etc/init.d/xinetd restart
비글본 강의에 대한 github 링크는 아래와 같다.
https://github.com/niekiran/EmbeddedLinuxBBB
이제 미리 빌드된 이미지파일을 /var/lib/tftpboot로 복사한다.
uboot에서 입력해야할 내용은 아래와 같다.
setenv serverip 192.168.27.1
setenv ipaddr 192.168.27.2
ping 192.168.27.1
tftpboot 0x82000000 uImage
tftpboot 0x88080000 initramfs
tftpboot 0x88000000 am335x-boneblack.dtb
setenv bootargs console=ttyO0,115200n8 root=/dev/ram0 rw initrd=88080000
bootm 0x82000000 0x88080000 0x88000000
나중에 uEnv.txt파일로 수정해서 자동으로 부팅되게 설정한다면 아래와 같다
console=ttyO0,115200n8
ipaddr=192.168.7.2
serverip=192.168.7.1
loadaddr=0x82000000
fdtaddr=0x88000000
ramfsaddr=0x88080000
loadtftp=tftpboot 0x82000000 uImage; tftpboot 0x88080000 initramfs; tftpboot 0x88000000 am335x-boneblack.dtb
tftpbootargs = bootargs console=${console} root=/dev/ram0 rw initrd=${ramfsaddr}
uenvcmd=setenv autoload no; run loadtftp; run tftpbootargs; bootm ${loadaddr} ${fdtaddr} ${ramfsaddr}
위 과정을 정상적으로 마쳤다면, 비글본 블랙 보드는 TFTP 부팅을 할 수 있을 것이다.