【分享】PetaLinux 工程的离线编译
介绍
PetaLinux基于Yocto,编译Linux内核、文件系统等,非常庞大,需要的软件很多。如果从网络下载,可能消耗比较长的时间。
本文基于Xilinx PetaLinux 2020.2.
下载sstate文件
进入Xilinx 网站嵌入式下载专区, 在页面内搜索“sstate”,找到和下载对应的文件。2020.1下,每个架构是一个独立的sstate文件。以前的版本,所有架构是一个sstate文件。2020.1下有下列四个文件。
-
aarch64 sstate-cache (TAR/GZIP - 25.88 GB)
-
arm sstate-cache (TAR/GZIP - 9.09 GB)
-
mbfull sstate-cache (TAR/GZIP - 3.12 GB)
-
mblite sstate-cache (TAR/GZIP - 3.12 GB)
点击对应的文件后,登录Xilinx账号,开始下载。在下载管理器里可以看到下载地址,比如https://xilinx-ax-dl.entitlenow.com/dl/ul/2020/11/20/R210411015/sstate_aarch64_2020.2.tar.gz/30e9814fd75c278b9222afab52258f2b/5FC29FDF?akdm=0&filename=sstate_aarch64_2020.2.tar.gz。这个下载地址会随着时间变化,在大约一天内可以重复使用。推荐使用Free Download Manager等下载管理软件下载。
下载后,在本地Linux机器上解压。比如解压到/opt/Xilinx/peta/2020.2/sstate,从而在其中看到下列目录。
:/opt/Xilinx/peta/2020.2/sstate/aarch64$ ls
00 06 0c 12 18 1e 24 2a 30 36 3c 42 48 4e 54 5a 60 66 6c 72 78 7e 84 8a 90 96 9c a2 a8 ae b4 ba c0 c6 cc d2 d8 de e4 ea f0 f6 fc
01 07 0d 13 19 1f 25 2b 31 37 3d 43 49 4f 55 5b 61 67 6d 73 79 7f 85 8b 91 97 9d a3 a9 af b5 bb c1 c7 cd d3 d9 df e5 eb f1 f7 fd
02 08 0e 14 1a 20 26 2c 32 38 3e 44 4a 50 56 5c 62 68 6e 74 7a 80 86 8c 92 98 9e a4 aa b0 b6 bc c2 c8 ce d4 da e0 e6 ec f2 f8 fe
03 09 0f 15 1b 21 27 2d 33 39 3f 45 4b 51 57 5d 63 69 6f 75 7b 81 87 8d 93 99 9f a5 ab b1 b7 bd c3 c9 cf d5 db e1 e7 ed f3 f9 ff
04 0a 10 16 1c 22 28 2e 34 3a 40 46 4c 52 58 5e 64 6a 70 76 7c 82 88 8e 94 9a a0 a6 ac b2 b8 be c4 ca d0 d6 dc e2 e8 ee f4 fa universal
05 0b 11 17 1d 23 29 2f 35 3b 41 47 4d 53 59 5f 65 6b 71 77 7d 83 89 8f 95 9b a1 a7 ad b3 b9 bf c5 cb d1 d7 dd e3 e9 ef f5 fb universal-4.8
下载download文件
同样,Xilinx 网站嵌入式下载专区, 在页面内搜索“ downloads”,找到和下载对应的文件。 2020.2下,downloads的大小是36.01 GB。
下载后,在本地Linux机器上解压。比如解压到/opt/Xilinx/peta/2020.2/downloads,从而在其中看到下列文件。
:/opt/Xilinx/peta/2020.2/downloads$ ls *linux*.tar.gz
git2_github.com.linux-can.can-utils.git.tar.gz git2_github.com.Xilinx.linux-xlnx.git.tar.gz git2_git.linuxfoundation.org.diamon.babeltrace.git.tar.gz
git2_github.com.linux-test-project.ltp.git.tar.gz git2_git.kernel.org.pub.scm.linux.kernel.git.kdave.btrfs-progs.git.tar.gz
git2_github.com.Xilinx.linux-examples.git.tar.gz git2_git.kernel.org.pub.scm.linux.kernel.git.shemminger.bridge-utils.git.tar.gz
设置本地sstate
运行petalinux-config,进入菜单“Yocto Settings ->Local sstate feeds settings ->local sstate feeds url” ,按Enter键,提供上述sstate目录。对于arm64,目录是/opt/Xilinx/peta/2020.2/sstate/aarch64。每个CPU架构使用不同的sstate目录。
具体步骤也可以参考sstate_rel_2020.2_README.tar.gz里解压出来的Readme.
设置后,文件project-spec/configs/config里有下列内容。
#
# Local sstate feeds settings
#
CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL="/opt/Xilinx/peta/2020.2/sstate/aarch64"
CONFIG_YOCTO_NETWORK_SSTATE_FEEDS=y
设置本地download
运行petalinux-config,进入菜单“Yocto Settings ->Add pre-mirror url” 里,按Enter键,以格式“file://
sstate_rel_2020.2_README.tar.gz里解压出来的Readme也描述了这个步骤。
设置后,文件project-spec/configs/config里有下列内容。
#
# Add pre-mirror url
#
CONFIG_PRE_MIRROR_URL="file:///opt/Xilinx/peta/2020.2/downloads"
设置离线编译
运行petalinux-config,进入菜单“Yocto Settings -> [] BB NO NETWORK”,按Enter键,选择“BB NO NETWORK”。
设置后,文件project-spec/configs/config里有下列内容。
#
# Network sstate feeds URL
#
CONFIG_YOCTO_NETWORK_SSTATE_FEEDS_URL="http://petalinux.xilinx.com/sswreleases/rel-v${PETALINUX_VER%%.*}/aarch64/sstate-cache"
CONFIG_YOCTO_BB_NO_NETWORK=y
编译
设置本地sstate、本地download、离线编译后,进行编译,就不从网络下载文件了。
其它
PREMIRRORS_prepend
本地download也可以通过在文件project-spec/meta-user/conf/petalinuxbsp.conf里添加下列行设置。
# ===============================================
# AR 71798
# https://www.xilinx.com/support/answers/71198.html
PREMIRRORS_prepend = " \
git://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/ \
ftp://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/ \
http://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/ \
https://.*/.* file:///opt/Xilinx/peta/2020.2/downloads/ \
"
参考文档
PetaLinux fails to build gstreamer using sstate cache