我目前正在尝试在 Windows 上托管的 docker 容器中使用 yocto nanbield 构建 raspberryPi 映像。
一般设置工作正常,我正在启动 bitbake,但最终无法获取 raspberryPi Linux 内核。我尝试过更改其他人提到的一些 git 配置,但似乎没有什么对我有用。我还将 yocto 版本从 kirkstone 更改为 nanbield,但也没有任何改进。
使用 Debian Bullseye 镜像运行:
RUN mkdir -p $YOCTO_DIR && cd $YOCTO_DIR && mkdir sources && cd sources && \
git clone https://git.yoctoproject.org/poky -b nanbield && \
git clone https://git.yoctoproject.org/meta-raspberrypi -b nanbield && \
git clone https://git.openembedded.org/meta-openembedded -b nanbield
RUN cd $YOCTO_DIR && source sources/poky/oe-init-build-env && \
git config --global http.postBuffer 52428800 && git config --global core.compression 0 && \
git config --global url."https://github.com/".insteadOf [email protected]: && \
git config --global url."https://".insteadOf git:// && \
bitbake-layers add-layer ../sources/meta-raspberrypi \
../sources/meta-openembedded/meta-oe \
../sources/meta-openembedded/meta-multimedia \
../sources/meta-openembedded/meta-networking \
../sources/meta-openembedded/meta-python && \
echo 'MACHINE ?= "raspberrypi4"' >> conf/local.conf && \
echo 'LICENSE_FLAGS_ACCEPTED = "synaptics-killswitch"' >> conf/local.conf && \
bitbake core-image-base
最终失败并出现以下错误:
894.5 WARNING: linux-raspberrypi-1_6.1.61+git-r0 do_fetch: Failed to fetch URL git://github.com/raspberrypi/linux.git;name=machine;branch=rpi-6.1.y;protocol=https, attempting MIRRORS if available
904.7 ERROR: linux-raspberrypi-1_6.1.61+git-r0 do_fetch: Fetcher failure: Fetch command export PSEUDO_DISABLED=1; export PATH="/home/notroot/yocto/build/tmp/sysroots-uninative/x86_64-linux/usr/bin:/home/notroot/yocto/sources/poky/scripts:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot/usr/bin/crossscripts:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot-native/usr/sbin:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot-native/usr/bin:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot-native/sbin:/home/notroot/yocto/build/tmp/work/raspberrypi4-poky-linux-gnueabi/linux-raspberrypi/6.1.61+git/recipe-sysroot-native/bin:/home/notroot/yocto/sources/poky/bitbake/bin:/home/notroot/yocto/build/tmp/hosttools"; export HOME="/home/notroot"; LANG=C git -c gc.autoDetach=false -c core.pager=cat clone --bare --mirror https://github.com/raspberrypi/linux.git /home/notroot/yocto/build/downloads/git2/github.com.raspberrypi.linux.git --progress failed with exit code 128, no output
904.7 ERROR: linux-raspberrypi-1_6.1.61+git-r0 do_fetch: Bitbake Fetcher Error: FetchError('Unable to fetch URL from any source.', 'git://github.com/raspberrypi/linux.git;name=machine;branch=rpi-6.1.y;protocol=https')
904.8 NOTE: recipe linux-raspberrypi-1_6.1.61+git-r0: task do_fetch: Failed
904.9 ERROR: Task (/home/notroot/yocto/sources/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.1.bb:do_fetch) failed with exit code '1'
在本机 debian 机器上运行相同的构建时,一切正常并且构建完成,没有任何问题。
编辑: 在网络带宽更好的机器上构建 docker 镜像似乎可以解决 fetcher 作业的问题,并且构建成功,但对于该问题来说,这是一个不太令人满意的解决方案。
看起来,大多数基于 QT 的食谱现在都指向“release”git 分支。
release 如果已指定发布分支,git 分支不允许专门的提交克隆/签出。
迄今为止找到的唯一稳定的工作选项是在配方克隆操作期间禁用分支请求。
在 QT 的情况下,所有接收都取决于 qt5-git.inc 文件,其中合成了 QT_MODULE_BRANCH_PARAM。它是可选的,可以在 local.conf 中使用
进行覆盖QT_MODULE_BRANCH_PARAM = "nobranch=1"