저의 환경구성은 Windows 10, Ubuntu 18.04 64bit(vmware) 입니다.
기본적으로 github.com/Digilent/Petalinux-Zybo-Z7-20의 내용을 참고하며 따라했습니다.
위 내용에서는 Ubuntu 16.04.x LTS를 사용할 것을 적극 권장한다고 합니다.
하지만 저는 18.04 로 진행하였습니다.
이것 저것 찾아본 결과 bsp 파일과 petalinux 의 버전일치가 중요하다고 합니다.
아래에서 bsp 파일을 2017.4-3 을 사용하였고, petalinux도 2017.4 버전을 다운로드했습니다.
기본적으로 다운로드는 Ubuntu 환경에서 진행했습니다.
- petalinux 다운로드 : www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html
다운로드를 하게 되면 아래와 같은 파일이 생기게 됩니다.
이제 터미널 창에서 명령들을 입력하면 됩니다.
종속성 설치
sudo -s
apt-get install tofrodos gawk xvfb git libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 \
libssl-dev flex bison chrpath socat autoconf libtool texinfo gcc-multilib \
libsdl1.2-dev libglib2.0-dev screen pax
reboot
설치 시작
cd ~/Downloads ./petalinux-v2017.4-final-installer.run
마지막 두줄이 이렇게 나오면 설치 정상 완료
INFO: PetaLinux Yocto SDK for microblaze has been successfully installed. INFO: PetaLinux SDK has been installed to /home/junseop/Downloads/petalinux/. |
settings.sh
마지막 tftp 워닝이 뜨는데 무시해도 된다고 한다.
아래와 같이 해결할 수도 있다고 하는데... 저는 해결이 안돼서 무시했습니다.
tftp 경고 해결하기 ~$ sudo apt-get install xinetd tftp tftpd ~$ sudo vi /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 per_source = 11 cps = 100 2 flags = IPv4 } - tftp에서 파일을 제공할 때 사용하는 디렉토리 생성. ~$ sudo mkdir /tftpboot ~$ sudo chmod 777 /tftpboot - tftp서버 재기동. ~$ sudo /etc/init.d/xinetd restart |
프로젝트 생성
petalinux-create -t project -s ~/Downloads/petalinux/Petalinux-Zybo-Z7-20-2017.4-3.bsp
프로젝트를 생성하게 되면 사진 정보와 같이 Zybo-Z7-20 이라는 폴더로 해당경로에 프로젝트가 생성되게 됩니다.
프로젝트 빌드
petalinux-build
빌드를 하려했지만 위와 같은 오류가 떠서... 구글링 을 통해서 해결방법을 알아내었다.
~/Downloads/petalinux/components/yocto/source/arm/layers/core/meta/classes/sanity.bbclass 의 코드의 내용을 아래와 같이 수정 해주면 됩니다.
파일을 열고 찾다보면 def sanity_check_locale(d) : 부분이 있다.
해당 부분에서 아래의 내용을 해당 위치에 맞게 추가합니다.
return # disabled by user due to problems with Ubuntu/testing |
다시 빌드 시도
petalinux-build
동일 에러는 사라졌으나 다른 에러가 떴습니다. 하지만 프로젝트 빌드는 성공적으로 되어서 일단은 무시하고 진행했습니다.
petalinux-package --boot --force --fsbl zynq_fsbl.elf --fpga system_wrapper.bit --u-boot
워닝이 떴으나 아까 TFTP 워닝을 해결하지 못해서 또 뜨는것 같습니다. 이 또한 무시하고 넘어갔습니다.
petalinux-config
다음 옵션을 SD로 설정
-> Image Packaging Configuration -> Root filesystem type
system-user.dtsi 내용 수정
~/Downloads/petalinux/Petalinux-Zybo-Z7-20/Zybo-Z7-20/project-spec/meta-user/recipes-bsp/device-tree/files$ vi system-user.dtsi
bootargs = "console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio"; |
위의 내용을 아래와 같이 수정하고 저장 종료.
bootargs = "console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio root=/dev/mmcblk0p2 rw rootwait"; |
SD 카드 파티션 나누기
첫 번째 파티션에는 최소 500MB 이며 FAT 포맷 형식이어야 합니다.
두 번째 파티션에는 최소 1.5GB (3GB 권장) 여야하며 EXT4 포맷 형식이어야 합니다.
(여기서 ext4 형식으로 포맷하는게 윈도우에서는 조금 기본적으로 제공하지 않아서 우분투 내에서 포맷하는 방법을 찾아서 포맷해보았습니다.)
포맷형식이 다르니 부팅자체가 안 됐습니다
우선 lsblk 를 통해서 자신의 SD 카드 용량을 찾아 NAME을 확인합니다.
lsblk
저는 sdb입니다. 2G가 첫 번째 파티션, 27.8G가 두 번째 파티션입니다.
fdisk -l
을 통해서 포맷 형식을 확인합니다.
첫 번째는 FAT로 잘 되어있구 두 번째는 exFAT 입니다.
두 번째인 sdb2를 아래와 같이 ext4로 바꾸어야합니다.
mkfs.ext4 /dev/sdb2
하지만 제대로 되질 않습니다.
umount -l /dev/sdb2
mkfs.ext4 /dev/sdb2
잘 된 것 같습니다..
이제 포맷완료한 SD카드에 아까 만든 부팅 이미지를 넣어줍니다.
첫 번째 파티션에는 pre-built에 있는 BOOT.bin과 image.ub를 복사 붙여 넣기 합니다.
두 번째 파티션에는 다음과 같이 진행합니다.
sudo umount /dev/sdX2
sudo dd if=images/linux/rootfs.ext4 of=/dev/sdX2
sync
그럼 두 번째 파티션에 무언가 생깁니다.. 그리고
SD 카드의 추가 공간을 사용할 수 있도록 파일 시스템 확장. 한답니다
sudo resize2fs /dev/sdX2
sync
전부 완료 되었다면 SD카드를 분리하고 zybo 보드에 장착합니다. HDMI를 연결하고 usb로 전원을 인가하면 petalinux가 부팅이 됩니다!