Buildroot错误编译:无法在本地验证发行者的权限

Buildroot error compiling : Unable to locally verify the issuer's authority

我是 Buildroot 的新手,正在尝试制作嵌入式 Linux 的图像,包括 python3 和一些模块(lxml、numpy)。

首先,我只是想创建一个图像并将其下载到我的 ZedBoard 上。

我遵循了 this tutorial(解释是法语,抱歉。您可以检查所想的命令),尝试将其应用于我的需要(ZedBoard 而不是 Raspberry pi 4 并添加 Python3 和我的包裹)。

最后,当我 运行 执行“make”命令时,complitation 持续了大约 40 分钟并以这些错误结束(我的实际日志部分是法语的,所以我尝试翻译它们。它可能与英文日志有点不同...):

>>> linux-headers 4.16 Downloading

-2021-09-29 15:39:16--  https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.tar.xz
Resolution of proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)... 10.135.8.20
Connexion to proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)|10.135.8.20|:8050... connected.
ERROR : unable to verify the attribute cdn.kernel.org of the certificate, emitted by «CN=tu-proxysurf-p01.cnes.fr,OU=AC Deleguee,OU=0002 775665912,OU=0002 775665912,O=CNES,C=FR» :
  Unable to locally verify the issuer's authority.
To establish an unsecured connexion to cdn.kernel.org, use `--no-check-certificate'.
--2021-09-29 15:39:17--  http://sources.buildroot.net/linux/linux-4.16.tar.xz
Resolution of proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)... 10.135.8.20
Connexion to proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)|10.135.8.20|:8050... connected.
Proxy request transmitted, waiting for answer... 404 Not Found
2021-09-29 15:39:17 ERROR 404: Not Found.

--2021-09-29 15:39:17--  http://sources.buildroot.net/linux-4.16.tar.xz
Resolution of proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)... 10.135.8.20
Connexion to proxy-surf.loc.cnes.fr (proxy-surf.loc.cnes.fr)|10.135.8.20|:8050... connected.
Proxy request transmitted, waiting for answer... 404 Not Found
2021-09-29 15:39:17 ERROR 404: Not Found.

make[1]: *** [package/pkg-generic.mk:148 : /home/ouriacc/workspace/BuildRoot/build-zb/build/linux-headers-4.16/.stamp_downloaded] Error 1
make: *** [Makefile:23 : _all] Error 2

到目前为止,我已经尝试安装、更新和升级 ca 证书,但它没有改变任何事情... 有人可以告诉我如何消除这些错误吗?

编辑: 我尝试转到日志 return 的 URL,对于其中的最后 2 个,除了 404 之外实际上什么也看不到未找到错误。这是否意味着编译器不是最新的,因为它正在寻找不再存在的东西或者?....

新编辑: 其实证书的事情没什么大不了的。我通过在 WGET 行的 Config.in 文件(buildroot 文件夹中的文件!)中添加 --no-check-certificate 来修复它,如下所示:

config BR2_WGET
       string "wget command"
       default "wget --passive-ftp -nd -t 3 --no-check-certificate"

但这不是实际问题。在下面的答案中检查我的解决方案以修复它。

如果没有更多信息,很难回答您,但是,对于 404,很可能您的 buildroot 已过时 defconfig/version。

对于wget SSL错误,您可以尝试多种解决方案:

  • 正在更新您的 openssl 库版本(又名。udpate openssl)+ 将您的 ca 证书版本与最新版本进行比较:(ArchLinux 为 20210603-1)。
  • 也更新 wget。

或者,但也不安全: 您可以在配置中为 wget 添加必要的选项,以绕过该错误。

构建选项 -> 命令 -> Wget 命令。 已将“--no-check-certificate”添加到选项中 出现在那里。这将使它忽略所有自签名证书。 问题是这是一个不安全的解决方案,因为您无法确定 buildroot 下载的文件是合法的还是不是恶意软件。

最后,您似乎正在使用某种代理,或者与您的 DNS 解析不同的东西。您可以尝试通过更改 DNS provider/removing proxy/testing 其他互联网提供商(如果不是您)来测试是否属于这种情况。我这么说是因为“proxy-surf.loc.cnes.fr”确实看起来像一个代理。

编辑:我本人是法语人士,我查看了您提到的教程并注意到您使用的是 buildroot 2020.1 (?)。然后你可以在不更新它的情况下离开,但是如果我是你,我真的会看看提供的其他解决方案。

上下文

我使用的是 buildroot 2020.08,因为这是同事给我的。在对此错误进行一些调查后,我确定这可能是由于我的 buildroot 已过时(正如我所说,它试图访问不再存在的 URL)。

解决方案

我下载了我找到的最新 buildroot 版本,它删除了(如果没有修复)错误,现在它运行良好!

问题编辑:

经过一番调查,我发现我的问题没有正确的标题。它应该是类似“Buildroot - 404 error not found”之类的东西。 实际问题是我的 buildroot 尝试下载 .tar.xz 文件来构建 linux 图像,但是它下载它们的 URL 不再存在(你可以观察到它是甚至不在 linux 索引中:http://sources.buildroot.net/linux/ ) 很可能 linux-4.16 的提供者停止提供它。很明显,buildroot 无法完成它的工作!

解决方案:

我进入了我的 buildroot 文件夹。然后我编辑了我的板的配置文件。对我来说是 zynq_zed_defconfig。所以我 运行 :

gedit ./configs/zynq_zed_defconfig

然后我修改了文件,使其指向索引中存在的 linux 的可用版本(link 以上)(例如 4.16.1)。我只编辑了以下变量:

BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16_1=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.1"

我保存了更改,然后 运行 make zynq_zed_defconfg 更新配置,最后我可以 运行 make 再次修复错误!