Rocket-chip快速指引执行时Git子模块更新操作卡死问题咨询
异常性质判定
该情况不属于Rocket-Chip仓库的已知逻辑Bug,核心卡点为网络连通性问题:从终端输出日志可定位到,流程停在fsf-binutils-gdb子模块的克隆环节,该子模块默认配置使用git://协议的源,对应传输端口易被网络策略拦截,导致克隆请求无响应、流程呈现“卡死”状态。
分步排查解决操作
- 中断当前执行的卡死进程,在终端按下
Ctrl+C终止命令,避免直接关闭终端造成本地仓库索引损坏。 - 修改全局Git协议替换规则,强制将所有指向sourceware的
git://源自动切换为HTTPS协议,绕开被拦截的传输端口,执行命令:git config --global url."https://sourceware.org/git/".insteadOf "git://sourceware.org/git/" - 检查当前本地仓库路径下的
.gitmodules配置文件,逐一核对所有子模块的源地址,将硬编码的git://开头的地址替换为对应的HTTPS地址,修改完成后保存文件。 - 先同步子模块的最新配置,再重新执行拉取命令:
git submodule sync --recursivegit submodule update --init --recursive
此时终端会正常展示每个子模块的拉取进度,不会停留在初始的fsf-binutils-gdb克隆环节。 - 如果拉取速度过慢,可开启浅克隆模式减少传输量,执行命令:
GIT_SHALLOW=1 git submodule update --init --recursive
该命令仅拉取子模块对应版本的最新提交,不会拉取全量历史记录,可大幅降低拉取耗时。
快速启动流程的注意事项
- 执行子模块拉取时,关闭代理工具的全局端口转发模式,避免Git请求走无效代理通道造成超时。
- 子模块拉取完成后,不要跳过依赖检查环节,先执行仓库内置的环境依赖校验脚本,确认编译所需的工具、库版本符合要求,避免后续编译环节出现无意义报错。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

