构建SDK时,没有如期生成相关文件

构建SDK时,由于在编译过程中没有权限访问https://github.com/starfive-tech,导致没有如期生成相关文件:

work/
├── visionfive2_fw_payload.img
├── image.fit
├── initramfs.cpio.gz
├── u-boot-spl.bin.normal.out
├── linux/arch/riscv/boot
    ├── dts
    │   └── starfive
    │       ├── jh7110-visionfive-v2-ac108.dtb
    │       ├── jh7110-visionfive-v2.dtb
    │       ├── jh7110-visionfive-v2-wm8960.dtb
    │       ├── vf2-overlay
    │       │   └── vf2-overlay-uart3-i2c.dtbo
    └── Image.gz

编译错误提示信息如下:

GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git init .
提示:使用 ‘master’ 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 ‘master’ 之外,通常选定的名字有 ‘main’、‘trunk’ 和 ‘development’。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m
已初始化空的 Git 仓库于 /home/nubya/vf2sdk/buildroot/dl/linux/git/.git/
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git remote add origin ‘git@github.com:starfive-tech/linux.git’
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git remote set-url origin ‘git@github.com:starfive-tech/linux.git’
Fetching all references
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git fetch origin
git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。
Detected a corrupted git cache.
Removing it and starting afresh.
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git init .
提示:使用 ‘master’ 作为初始分支的名称。这个默认分支名称可能会更改。要在新仓库中
提示:配置使用初始分支名,并消除这条警告,请执行:
提示:
提示: git config --global init.defaultBranch <名称>
提示:
提示:除了 ‘master’ 之外,通常选定的名字有 ‘main’、‘trunk’ 和 ‘development’。
提示:可以通过以下命令重命名刚创建的分支:
提示:
提示: git branch -m
已初始化空的 Git 仓库于 /home/nubya/vf2sdk/buildroot/dl/linux/git/.git/
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git remote add origin ‘git@github.com:starfive-tech/linux.git’
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git remote set-url origin ‘git@github.com:starfive-tech/linux.git’
Fetching all references
GIT_DIR=/home/nubya/vf2sdk/buildroot/dl/linux/git/.git git fetch origin
git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。
Detected a corrupted git cache.
This is the second time in a row; bailing out
wget --passive-ftp -nd -t 3 -O ‘/home/nubya/vf2sdk/work/buildroot_initramfs/build/.linux-JH7110_VisionFive2_devel-br1.tar.gz.S8gXI7/output’ ‘http://sources.buildroot.net/linux/linux-JH7110_VisionFive2_devel-br1.tar.gz
–2023-02-19 08:44:48-- http://sources.buildroot.net/linux/linux-JH7110_VisionFive2_devel-br1.tar.gz
正在解析主机 sources.buildroot.net (sources.buildroot.net)… 2606:4700:20::681a:125, 2606:4700:20::ac43:4838, 2606:4700:20::681a:25, …
正在连接 sources.buildroot.net (sources.buildroot.net)|2606:4700:20::681a:125|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 404 Not Found
2023-02-19 08:44:49 错误 404:Not Found。

wget --passive-ftp -nd -t 3 -O ‘/home/nubya/vf2sdk/work/buildroot_initramfs/build/.linux-JH7110_VisionFive2_devel-br1.tar.gz.KYmsaD/output’ ‘http://sources.buildroot.net/linux-JH7110_VisionFive2_devel-br1.tar.gz
–2023-02-19 08:44:49-- http://sources.buildroot.net/linux-JH7110_VisionFive2_devel-br1.tar.gz
正在解析主机 sources.buildroot.net (sources.buildroot.net)… 2606:4700:20::ac43:4838, 2606:4700:20::681a:25, 2606:4700:20::681a:125, …
正在连接 sources.buildroot.net (sources.buildroot.net)|2606:4700:20::ac43:4838|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 404 Not Found
2023-02-19 08:44:50 错误 404:Not Found。

make[1]: *** [package/pkg-generic.mk:190:/home/nubya/vf2sdk/work/buildroot_initramfs/build/linux-headers-JH7110_VisionFive2_devel/.stamp_downloaded] 错误 1
make[1]: 离开目录“/home/nubya/vf2sdk/buildroot”
rm -rf /home/nubya/vf2sdk/work/u-boot
mkdir -p /home/nubya/vf2sdk/work/u-boot
mkdir -p /home/nubya/vf2sdk/work/linux/
make: *** 没有规则可制作目标“/home/nubya/vf2sdk/work/buildroot_initramfs/images/rootfs.tar”,由“/home/nubya/vf2sdk/work/.buildroot_initramfs_sysroot” 需求。 停止。

可否直接提供由
$ make -j$(nproc)

编译生成好了的buildroot_initramfs-menuconfig,buildroot rootfs menuconfig,uboot menuconfig对应的deconfig文件。让大家直接进入buildroot,u-boot,linux进行制作相关镜像和根文件系统。

@whtronyen 你好,想请问你关于这个SDK没有如期生成相关文件。请问你得以解决这个问题了吗?我也在这里卡住了,不能进行下个步骤,找了很多资料,始终无法解决这个问题。如果有解决方法,希望能得到一些帮助。

最新SDK 链接地址:GitHub - starfive-tech/VisionFive2 at VF2_v2.10.4
编译方式请参考README.md;

使用git@github.com 需要先注册github并添加ssh-key,这是官方文档:

3 Likes

我通过将数字签名申请保存后,虽然下载了近280个安装包,但是执行make -j$(nproc)后还是缺失官方列出的文件,尤其是IMG文件。 :sob:

1 Like

我加了,也弄了那个账号该弄的事情,然后重新执行那个 make -j$(nproc),就是没有那个它指定的IMG文件,我已经绝望了 TT 可是还是得继续做,继续找办法。。

对!!很奇怪,每一个官方要求我完成的 commands 都完成了,就是没有那个 IMG 文件

可能是有些包下载不全,在国内下载外网的包有时容易断连。另外记得没错的话有些源码包的地址有谷歌的域名,那就需要科学上网才能下载了

.gitmodules 文件里的 “git@” 都换成 “https://”

是指VPN吗??

做了,还是一样

嗯,也可以试着在可用的镜像找齐相关的无法直接下载的依赖包,编译前先保存到本地,有些是本地有包就不用联网找,有些则需编译前修改hosts把地址重定向到自己设置的地址,或修改代码里的地址到镜像地址

明白,会试着找方法解决,谢谢你们的提议和想法,感激

我按照如下方式摸索冒似成了:
现在VF2目录分别执行 make buildroot_initramfs-menuconfig 和make buildroot_rootfs-menuconfig,make uboot-menuconfig,make linux-menuconfig进入相应menuconfig配置界面后不做任何修改Save保存并退出。安装gcc-riscv64-linux-gnu,分别进入VF2/linux,u-boot,buildroot进行编译,在对应的目录下可以找到相应的Image等文件

最近刚好遇到了相同的问题,并且找到了解决方法。 解决方法描述如下,供大家参考。

首先请参考知乎上面的这篇文章,链接如下:

这篇文章的章节 1.1 DNS&hosts 将遇到这个问题的原因讲解的比较清楚,这里就不直接贴出来了,你懂的。 文章中描述了3类方式来解决这个问题。我采用的是文章中提到的第一种方法修改本地hosts。

先到SwitchHosts 官网下载这款管理工具:https://swh.app/zh/

在switchHosts使用时,如果提示没有写入 Hosts 文件的权限,请参考下面链接

此外,如果你是基于VMware搭建的linux仿真环境,请参考下面链接,对VMware进行进一步的设置。特别说明:这些设置是这个问题解决的加分项,并不是必选项。

你可以通过浏览器访问下面网站,来测试你的运行环境的网络速度,确保您网络环境还可以。实际操作中,我是基于wifi的网络环境编译成功的,但是我还是建议优先选用有线网络。

tree -L 1 work/
work/
├── buildroot_initramfs
├── buildroot_initramfs_sysroot
├── buildroot_rootfs
├── genimage.tmp
├── image.fit
├── initramfs.cpio.gz
├── initramfs.cpio.gz.d
├── linux
├── module_install_path
├── opensbi
├── sdcard.img
├── spl_tool
├── starfive-visionfive2-vfat.part
├── u-boot
├── u-boot-spl.bin.normal.out
├── version
├── visionfive2_fw_payload.img
└── vmlinux.bin

此外,一个小的建议分享给伙伴们:在编译成功之后,可以将整个工程保存下来作为一个基线,后面增量编译就比较快了。如果出现问题,也可以快速回到之前保存的基线,这样可以节省很多时间,毕竟清空之前编译产生的缓存文件后,全量编译需要花费不少时间。

如果大家有更好的方法,请一定分享给我,谢谢。

1 Like

@chbinnc @zheng @whtronyen @lftan @thc 找到新的方法,提升编译时从github下载依赖的速度,从而大大减少编译的时间。

一 . Window + 虚拟机

  1. windows环境安装和运行Clash For Window,并且使能 Allow LAN

2、VMware 和 Ubuntu的设置:

2.1 设置VMnet0 的外部连接(物理网卡或者无线网卡)

 2.1 设置网络适配器为NAT模式

2.2 设置VMnet0对应的端口ens33的IPV4 Method为 Automatic(DHCP),
    设置代理(IP为windows电脑的IP,端口为Clash For Windows代理的端口)

2.3 编译
通过Ubuntu的缺省的终端进行编译,编译过程会通过代理进行下载, 所以能大大提升编译过程中从github下载依赖文件的速度,从而减少编译的时间。在编译命令前面增加一个参数 time,即 time make -j$(nproc) ,在编译结束,我们就能得到编译的时间了。

二. Ubuntu服务器
可以在Ubuntu服务器上安装Clash For Windows的linux版本,设置方法和上面windows环境的设置方法类似。

2 Likes

windows+SecureCRT+SSH的方式走代理访问,有两种方法,选择适合你的方法。

可以参考下面详细信息:
Note:: x.x.x.x 代表windows的IP; yyyy代表Clash For window代理的端口号

方法一:

为什么说这个方法推荐使用呢?因为他只作用于当前终端中,不会影响环境,而且命令比较简单

在终端中直接运行:

export http_proxy=http://proxyAddress:port

如果你是 SSR, 并且走的 http 的代理端口是 yyyy,想执行 wget 或者 curl 来下载国外的东西,可以使用如下命令:

export http_proxy=http://x.x.x.x:yyyy

如果是 https 那么就经过如下命令:

export https_proxy=http://x.x.x.x:yyyy

如果是 socket5 那么就经过如下命令:

export ALL_PROX=socks5://x.x.x.x:yyyy

删除

unset ALL_PROXY

实际操作如下,仅供参考:
1)在SecureCRT上运行set_proxy.vbs对代理进行设置。
2)在SecureCRT上运行unset_proxy.vbs对代理设置进行清除。
image

set proxy.vbs (2.0 KB)
unset proxy.vbs (1.3 KB)

方法二 :

这个办法的好处是把代理服务器永久保存了,下次就可以直接用了

把代理服务器地址写入 shell 配置文件.bashrc 或者.zshrc 直接在.bashr
c 或者.zshrc 添加下面内容

export http_proxy="http://x.x.x.x:yyyy"
export https_proxy="http://x.x.x.x:yyyy"

或者走 socket5 协议的话,代理端口是 yyyy

export http_proxy="socks5://x.x.x.x:yyyy"
export https_proxy="socks5://x.x.x.x:yyyy"

或者干脆直接设置 ALL_PROXY

export ALL_PROXY=socks5://x.x.x.x:yyyy

最后在执行如下命令应用设置

source ~/.bashrc

或者通过设置 alias 简写来简化操作,每次要用的时候输入 setproxy,不用了就 unsetproxy。

 alias proxy="export ALL_PROXY=socks5://x.x.x.x:yyyy"
 alias unproxy="unset ALL_PROXY"

上面两个方法的参考链接
linux (ubuntu20.4) 终端走代理的方法 - 欢迎来到我的主页 - OSCHINA - 中文开源技术交流社区

忍不住吐槽一个。
看似是嵌入式开发这种高科技产业的技术文章,结果内容却是如何用 Linux。
明明是在 Linux 上搭建,甚至要修改 Linux 系统源代码的工作,缺依然完全在 Windows 下面进行。 :face_exhaling:

windows的操作(windows+VMware+Ubuntu )+ clash for windows有两种方式:
方法1)在windows上安装Clash for window,上面介绍的就是这种方法。
方法2)在虚拟的Ubuntu环境上安装 Clash for windows的linux版本,截图如下。

如果使用Ubuntu的物理机(非虚拟机)进行操作,可以参考上面方法2)。