获取包时如何将机器设置为 Yocto 的镜像服务器?

How to setup a machine as a mirror server for Yocto when fetching packages?

使用 Petalinux(Yocto 的一种)构建项目时,需要 Internet 才能从服务器(git serve 或其他)获取包。

我的工作机器没有上网权限(只有局域网),所以我打算在这个局域网内架设一台可以上网的机器作为Yocto的镜像服务器。

有人知道如何设置这样的服务器吗?请帮忙。

您可以查看以下页面来设置源镜像:

基本上,您使用这些选项在源镜像机器上启动构建:

 SOURCE_MIRROR_URL ?= "file:///source_mirror/sources/"
 INHERIT += "own-mirrors" 
 BB_GENERATE_MIRROR_TARBALLS = "1" 

您只能使用以下命令获取源代码: bitbake -c target runall="fetch"。 然后启动 ftp 服务器,为 http://example.com/my-source-mirror 上的 ./source_mirror/sources/ 文件夹提供服务。

然后在离线机器上,你设置

 INHERIT += "own-mirrors"
 SOURCE_MIRROR_URL = "http://example.com/my-source-mirror"
 BB_NO_NETWORK = "1" # or BB_FETCH_PREMIRRORONLY = "1"

如果您可以访问代理,您可以检查那些:

复制'n'粘贴快捷方式:下面是一个工作配置,您可以直接复制'n'粘贴而无需花时间了解每个小细节:)

架构: 在这个例子中有两种类型的机器。 “构建服务器”和“开发者电脑”的几个实例。

机器准备: 在所有机器(服务器和开发人员)上安装一个共享文件夹,允许访问将其存储映射到 /mnt/mirror 的任何类型的文件服务器(例如 nfs)。 NFS 的示例,如果这对您来说是新的,如果您已经安装了 NFS,请跳过:https://pelux.io/2017/06/19/How-to-create-a-shared-sstate-dir.html(停止阅读标题“Yocto”并继续执行以下操作)

整体配置: 将我粘贴到此票证末尾的代码添加到文件 conf/local.conf 并删除所有先前的冲突行(即混淆我们定义的任何变量,如 DL_DIR)

机器配置: 对于开发机器使用 A(结果 B),对于构建服务器使用 B(结果 A)。

中招: 当服务器 PC 第一次进行 bitbake 时,它​​会填充镜像文件夹。第一个服务器构建完成后,客户端将使用镜像。 (source-mirror 绕过互联网依赖和 sstate-cache 加快构建速度)。

local.conf:

# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Activate either A or B depending on it this is a developer pc or the build server
# +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MIRROR_SERVER = "file:///mnt/mirror/"

# ########################################################
# A) Settings for developer PC operation
# ########################################################
BB_FETCH_PREMIRRORONLY = "1"
SOURCE_MIRROR_URL = "${MIRROR_SERVER}/source-mirror"
UNINATIVE_URL = "${SOURCE_MIRROR_URL}"
INHERIT += "own-mirrors"
SSTATE_MIRRORS = "\
file://.* ${MIRROR_SERVER}/sstate-cache/PATH;\
downloadfilename=PATH \n \
"

# ########################################################
# B) SETTINGS FOR BUILDSERVER OPERATION
# ########################################################
#SSTATE_DIR = "/mnt/remux/sstate-cache"
#BB_GENERATE_MIRROR_TARBALLS = "1"
##To populate the source mirror start a normal server build or run: bitbake --runall=fetch <image>

# ########################################################
# SETTINGS FOR BOTH, A and B
# ########################################################
DL_DIR = "/mnt/mirror/source-mirror“