想要在chromium os上进行驱动开发,按照github上提供的信息拉取了源码,
在编译树莓派5 的 openfyde 镜像时遇到了问题,执行build_packages后报错如下,
cat /build/rpi5-openfyde/tmp/portage/logs/chromeos-base:termina-dlc-144.16502.0.0-r1:20260627-020641.log >>> Downloading 'https://fydeos-binaries.oss-cn-beijing.aliyuncs.com/packages/termina-dlc/termina-dlc-io-arm-144.16502.0.0.tar.xz’ % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 431 0 0 0 0 0 0 --:–:-- --:–:-- --:–:-- 0 curl: (22) The requested URL returned error: 404 !!! Couldn’t download ‘termina_io_arm_fydeos_144.16502.0.0.tar.xz’. Aborting. * Fetch failed for chromeos-base/termina-dlc-144.16502.0.0-r1, Log file: * /build/rpi5-openfyde/tmp/portage/logs/chromeos-base:termina-dlc-144.16502.0.0-r1:20260627-020641.log
请问各位大神有没有遇见相同的问题,这个问题应该如何解决?
您好,感谢您的反馈。
termina_io_arm_fydeos_144.16502.0.0.tar.xz文件的下载连接已经修复,请您重试build_packages。
非常感谢,目前可以下载那个文件了,但是继续编译的话,还是会报错,不知道和编译环境,拉取的代码版本是否相关, 编译环境,拉取代码命令和具体报错信息如下:
编译环境:wsl2 Ubuntu 24.04
运行内存:12G mem + 16G swp
拉取代码相关命令:
repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --repo-url https://chromium.googlesource.com/external/repo.git -b release-R144-16503.B --depth=1
git clone https://github.com/openFyde/manifest.git openfyde/manifest -b r144-dev
gclient config https://chromium.googlesource.com/chromium/src.git
gclient sync --no-history --verbose
编译代码使用命令:
setup_board --board=rpi5-openfyde --force
cros build-packages ‘–board=rpi5-openfyde’ --autosetgov (按照github上openFyde/getting-started中命令编译提示不行,–nowithautotest --nouse_any_chrome 这两个选项也没有,所以用的这条命令)
报错信息:
20:34:27.020 Emerging binary (502 of 1301) acct-user/iomanager-1-r1::eclass-overlay (gs://chromeos-prebuilt/board/arm64-generic/postsubmit-R144-16484.0.0-80778-8698119949386669393/packages/acct-user/iomanager-1-r1.tbz2) (md5: 3c05888752d99a3ae1b52fe7e760d5f7) for /build/rpi5-openfyde/
20:34:27.045 Failed to emerge chromeos-base/termina-dlc-144.16502.0.0-r1 for /build/rpi5-openfyde/, Log file:
20:34:27.051 /build/rpi5-openfyde/tmp/portage/logs/chromeos-base:termina-dlc-144.16502.0.0-r1:20260630-123018.log
20:34:27.052 === Start output for job termina-dlc-144.16502.0.0-r1 ===
termina-dlc-144.16502.0.0-r1: * Package: chromeos-base/termina-dlc-144.16502.0.0-r110.0
termina-dlc-144.16502.0.0-r1: * Repository: openfyde-patches
termina-dlc-144.16502.0.0-r1: * USE: arm64 dlc elibc_glibc kernel_linux kvm_host userland_GNU
termina-dlc-144.16502.0.0-r1: * FEATURES: network-sandbox splitdebug userpriv
termina-dlc-144.16502.0.0-r1: * Running stacked hooks for pre_pkg_setup
termina-dlc-144.16502.0.0-r1: * sysroot_build_bin_dir …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: 20:33:06.350 >>> Unpacking source…
termina-dlc-144.16502.0.0-r1: 20:33:06.361 >>> Unpacking termina_io_arm_fydeos_144.16502.0.0.tar.xz to /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work
termina-dlc-144.16502.0.0-r1: 20:33:33.893 >>> Source unpacked in /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work
termina-dlc-144.16502.0.0-r1: * Running stacked hooks for post_src_unpack
termina-dlc-144.16502.0.0-r1: * asan_init …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: * Running stacked hooks for pre_src_prepare
termina-dlc-144.16502.0.0-r1: * build_toolchain_catch …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: 20:33:37.912 >>> Preparing source in /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work …
termina-dlc-144.16502.0.0-r1: 20:33:37.941 >>> Source prepared.
termina-dlc-144.16502.0.0-r1: * Running stacked hooks for pre_src_configure
termina-dlc-144.16502.0.0-r1: * add_pkg_to_cflags …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: * configure_chromite_local_telemetry …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: 20:33:41.021 >>> Configuring source in /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work …
termina-dlc-144.16502.0.0-r1: 20:33:41.048 >>> Source configured.
termina-dlc-144.16502.0.0-r1: 20:33:44.645 >>> Compiling source in /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work …
termina-dlc-144.16502.0.0-r1: 20:33:44.661 >>> Source compiled.
termina-dlc-144.16502.0.0-r1: 20:33:48.981 >>> Test phase [not enabled]: chromeos-base/termina-dlc-144.16502.0.0-r1
termina-dlc-144.16502.0.0-r1: * Running stacked hooks for pre_src_install
termina-dlc-144.16502.0.0-r1: * tidy_setup …
termina-dlc-144.16502.0.0-r1: [ ok ]
termina-dlc-144.16502.0.0-r1: 20:33:51.421
termina-dlc-144.16502.0.0-r1: 20:33:51.435 >>> Install chromeos-base/termina-dlc-144.16502.0.0-r1 into /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/image
termina-dlc-144.16502.0.0-r1: 20:34:22.734: INFO: Building package: DLC termina-dlc
termina-dlc-144.16502.0.0-r1: 20:34:22.739: ERROR: DLC=termina-dlc is not allowed to be factory installed.
termina-dlc-144.16502.0.0-r1: build_dlc: Unhandled exception:
termina-dlc-144.16502.0.0-r1: Traceback (most recent call last):
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/bin/build_dlc”, line 213, in
termina-dlc-144.16502.0.0-r1: DoMain()
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/bin/build_dlc”, line 209, in DoMain
termina-dlc-144.16502.0.0-r1: commandline.ScriptWrapperMain(FindTarget)
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/lib/commandline.py”, line 1631, in ScriptWrapperMain
termina-dlc-144.16502.0.0-r1: _execute_target(target, argv, name)
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/lib/commandline.py”, line 1640, in _execute_target
termina-dlc-144.16502.0.0-r1: ret = target(argv[1:])
termina-dlc-144.16502.0.0-r1: ^^^^^^^^^^^^^^^^
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/scripts/build_dlc.py”, line 289, in main
termina-dlc-144.16502.0.0-r1: params.VerifyDlcParameters()
termina-dlc-144.16502.0.0-r1: File “/mnt/host/source/chromite/lib/dlc_lib.py”, line 398, in VerifyDlcParameters
termina-dlc-144.16502.0.0-r1: raise Error(err_msg)
termina-dlc-144.16502.0.0-r1: chromite.lib.dlc_lib.Error: DLC=termina-dlc is not allowed to be factory installed.
termina-dlc-144.16502.0.0-r1: * ERROR: chromeos-base/termina-dlc-144.16502.0.0-r1::openfyde-patches failed (install phase):
termina-dlc-144.16502.0.0-r1: * build_dlc failed.
termina-dlc-144.16502.0.0-r1: *
termina-dlc-144.16502.0.0-r1: * Call stack:
termina-dlc-144.16502.0.0-r1: * ebuild.sh, line 125: Called src_install
termina-dlc-144.16502.0.0-r1: * environment, line 2934: Called dlc_src_install
termina-dlc-144.16502.0.0-r1: * environment, line 2125: Called die
termina-dlc-144.16502.0.0-r1: * The specific snippet of code:
termina-dlc-144.16502.0.0-r1: * “${CHROMITE_BIN_DIR}”/build_dlc “${args[@]}” || die “build_dlc failed.”
termina-dlc-144.16502.0.0-r1: *
termina-dlc-144.16502.0.0-r1: * Build log: /build/rpi5-openfyde/tmp/portage/logs/chromeos-base:termina-dlc-144.16502.0.0-r1:20260630-123018.log
termina-dlc-144.16502.0.0-r1: * Stable log symlink: /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/temp/build.log
termina-dlc-144.16502.0.0-r1: * CWD: /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work
termina-dlc-144.16502.0.0-r1: * S: /build/rpi5-openfyde/tmp/portage/chromeos-base/termina-dlc-144.16502.0.0-r1/work
从日志看是termina-dlc的安装被禁止了。可以给构建源码树下的chromite仓库打如下补丁,以允许安装termina-dlc
diff --git a/lib/dlc_allowlist.py b/lib/dlc_allowlist.py
index c4f5b7b78..8b000f393 100644
--- a/lib/dlc_allowlist.py
+++ b/lib/dlc_allowlist.py
@@ -14,7 +14,7 @@ from typing import Pattern, Tuple
# Add DLC ID that requires factory installation.
# By default, factory installed DLCs are allowed to be powerwash safe.
-DLC_FACTORY_INSTALL = (r"sample-dlc",)
+DLC_FACTORY_INSTALL = (r"sample-dlc", r"termina-dlc")
# Add DLC ID that requires factory installation with regex matching.
# By default, factory installed DLCs are allowed to be powerwash safe.
另外,注意到你的构建环境是 WSL2。由于 Openfyde 的构建没有在 WSL2 中验证过,可能会出现意想不到的错误。这里推荐使用虚拟机或者裸机安装 Ubuntu 22.04
好的,感谢您的回复,我找了一台安装ubuntu 22.04的电脑按照之前相同的步骤拉取了代码,并在两个电脑上都进行了编译,目前有一些无关紧要的小问题和一个编译异常的问题,小问题在此处做下记录。
小问题1:wsl2 编译比直接ubuntu编译内存占用多很多,wsl2有时会因为内存占用过多导致编译失败,这个好像是因为wsl2的内存并不会很快的释放掉。
小问题2:两台电脑编译过程中都会莫名奇妙的失败,重新执行编译命令又能继续进行编译,查着好像是因为我在拉取代码的时候加了–depth=1 和 --no-history的原因,导致编译的时候可能需要从服务器上拉取代码,如果有网络波动就会导致编译失败。
编译异常问题:目前两台电脑编译都会报如下错误,不确定和–depth=1 和 --no-history是否有关系,这周末会重新拉全代码再编译看一下。这个问题也希望您能帮忙看一下,万分感谢 !!!
chromeos-chrome-144.0.7559.32_rc-r1: 16:57:47.047 >>> Compiling source in /build/rpi5-openfyde/tmp/portage/chromeos-base/chromeos-chrome-144.0.7559.32_rc-r1/work/chromeos-chrome-144.0.7559.32_rc …
chromeos-chrome-144.0.7559.32_rc-r1: ninja: Entering directory `c/Release’
chromeos-chrome-144.0.7559.32_rc-r1: ninja: error: ‘…/…/…/…/…/…/…/mnt/host/source/openfyde/chromium/src/chromeos/profiles/arm.afdo.prof’, needed by ‘phony/chrome/chrome_initial.inputs’, missing and no known rule to make it
用ubuntu 24编译的话会报错,第一个连接里面有解决办法,另一个链接里也记录了一些编译报错的解决办法
新到了一台主机,想着设备支持新一点就装了ubuntu 24.04 LTS,试着编译一下openfyde看看时长提升多少。
结果浪费一天卡在
crosid-0.0.1-r210: meson.build:5:0: ERROR: Executables created by c compiler aarch64-cros-linux-gnu-clang are not runnable.
构建c…
关于arm.afdo.prof文件缺失,找了一个办法,不确定是否正确,下面作了详细的描述。
还有想请教一下,下面碰到问题的解决方法是否正确以及问题3有没有解决办法
问题1:
关于这个文件缺失 openfyde/chromium/src/chromeos/profiles/arm.afdo.prof
对应目录下有arm.afdo.newest.txt文件,该文件中记录了需要下载的版本,
修改以下链接在浏览器上打开下载,http://commondatastorage.googleapis.com/chromeos-prebuilt/afdo-job/vetted/release/chromeos-chrome-arm-none-144-7559.17-1765767785-benchmark-144.0.7559.29-r1-redacted.afdo.xz 下载之后,解压缩并移动到对应目录
xz -d chromeos-chrome-arm-none-144-7559.17-1765767785-benchmark-144.0.7559.29-r1-redacted.afdo.xz
mv chromeos-chrome-arm-none-144-7559.17-1765767785-benchmark-144.0.7559.29-r1-redacted.afdo
openfyde/chromium/src/chromeos/profiles/arm.afdo.prof
问题2:
继续编译 会报错 缺少openfyde/chromium/src/third_party/emoji-metadata/src/emoji_15_0_ordering.json 这个文件,去这里下载了对应文件https://github.com/googlefonts/emoji-metadata 到这个目录
问题3:
用 cros build-packages --board=rpi5-openfyde --autosetgov --jobs=1 继续编译,但是执行到下面的时候还是会并发编译,–jobs=1好像并不会限制这个阶段的并发,我的电脑内存条只有16g,在这里经常会内存爆掉崩溃,请问有没有限制并发的方式?
09:11:07.940 >>> Compiling source in /build/rpi5-openfyde/tmp/portage/chromeos-base/chromeos-chrome-144.0.7559.32_rc-r1/work/chromeos-chrome-144.0.7559.32_rc …
ninja: Entering directory `c/Release’
[268/47570] CXX obj/third_party/blink/renderer/core/core/layout_text_control_single_line.o
问题4:
编译到这里会报错文件缺失
…/…/…/…/…/…/…/mnt/host/source/openfyde/chromium/src/base/version_info/version_string.cc:11:10: fatal error: ‘build/util/LASTCHANGE_commit_position.h’ file not found
11 | #include “build/util/LASTCHANGE_commit_position.h”
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
进入 openfyde/chromium/src/,执行python build/util/lastchange.py --commit-position-header build/util/LASTCHANGE_commit_position.h
问题5:
还是文件缺失
/build/rpi5-openfyde/tmp/portage/chromeos-base/chromeos-chrome-144.0.7559.32_rc-r1/temp/environment: line 5734: /mnt/host/source/openfyde/chromium/src/third_party/chromite/bin/deploy_chrome: No such file or directory
cat openfyde/chromium/src/DEPS | grep -A 5 “chromite” 查看仓库的commit id
进入openfyde/chromium/src/third_party/chromite目录执行如下命令
git init
git remote add origin https://chromium.googlesource.com/chromiumos/chromite.git
git fetch origin 9efc32b45f6b9181600badbdbf89c08657cbfe48 同步代码到仓库中指定的commit id
此时应该有缺失的文件了