中级会员
- 积分
- 214
- 金钱
- 214
- 注册时间
- 2024-3-19
- 在线时间
- 105 小时
|
本帖最后由 Alexan 于 2024-6-1 14:13 编辑
参考嵌入式Linux开发指南文档,使用petalinux编译时经常会由于网络原因导致报错,文档中给出了解决办法。但是每次创建一个新的petalinux工程都要手动去图形化界面配置很麻烦,这里分享一个脚本,运行后可以自动配置好文档里提到的几个问题。前提是要按照文档下载好指定的几个软件包!!!
- #!/bin/bash
- # 配置文件路径
- CONFIG_FILE="project-spec/configs/config"
- BSP_CONF_FILE="project-spec/meta-user/conf/petalinuxbsp.conf"
- # 新的配置值
- NEW_PRE_MIRROR_URL='CONFIG_PRE_MIRROR_URL="file:///mnt/hgfs/share/downloads_2020.2/downloads/"'
- NEW_SSTATE_FEEDS_URL='CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL="/mnt/hgfs/share/sstate_aarch64_2020.2/aarch64/"'
- # 新的 PREMIRRORS_prepend 内容
- PREMIRRORS_CONTENT='PREMIRRORS_prepend = " \
- git://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
- gitsm://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
- ftp://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
- http://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n\
- https://.*/.* file:///mnt/hgfs/share/downloads_2020.2/downloads/ \n"'
- # 检查配置文件是否存在
- if [ ! -f "$CONFIG_FILE" ]; then
- echo "配置文件 $CONFIG_FILE 不存在。"
- exit 1
- fi
- # 替换或添加 CONFIG_PRE_MIRROR_URL
- if grep -q '^CONFIG_PRE_MIRROR_URL=' "$CONFIG_FILE"; then
- # 如果存在,使用 sed 替换配置值
- sed -i 's|^CONFIG_PRE_MIRROR_URL=.*|'"$NEW_PRE_MIRROR_URL"'|' "$CONFIG_FILE"
- else
- # 如果不存在,添加新的配置项
- echo "$NEW_PRE_MIRROR_URL" >> "$CONFIG_FILE"
- fi
- # 替换或添加 CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL
- if grep -q '^CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL=' "$CONFIG_FILE"; then
- # 如果存在,使用 sed 替换配置值
- sed -i 's|^CONFIG_YOCTO_LOCAL_SSTATE_FEEDS_URL=.*|'"$NEW_SSTATE_FEEDS_URL"'|' "$CONFIG_FILE"
- else
- # 如果不存在,添加新的配置项
- echo "$NEW_SSTATE_FEEDS_URL" >> "$CONFIG_FILE"
- fi
- # 确认替换或添加是否成功
- if grep -q "$NEW_PRE_MIRROR_URL" "$CONFIG_FILE" && grep -q "$NEW_SSTATE_FEEDS_URL" "$CONFIG_FILE"; then
- echo "配置文件已成功更新。"
- else
- echo "配置文件更新失败。"
- exit 1
- fi
- # 检查 BSP 配置文件是否存在
- if [ ! -f "$BSP_CONF_FILE" ]; then
- echo "BSP 配置文件 $BSP_CONF_FILE 不存在。"
- exit 1
- fi
- # 添加 PREMIRRORS_prepend 内容到 BSP 配置文件
- if ! grep -q '^PREMIRRORS_prepend' "$BSP_CONF_FILE"; then
- cat << EOF >> "$BSP_CONF_FILE"
- $PREMIRRORS_CONTENT
- EOF
- echo "已将 PREMIRRORS_prepend 内容添加到 BSP 配置文件。"
- else
- echo "BSP 配置文件中已存在 PREMIRRORS_prepend 内容。"
- fi
- # 确认添加是否成功
- if grep -q "^PREMIRRORS_prepend" "$BSP_CONF_FILE"; then
- echo "BSP 配置文件已成功更新。"
- else
- echo "BSP 配置文件更新失败。"
- exit 1
- fi
复制代码 执行脚本要注意以下几点:
1. 添加可执行权限
2. 脚本要放在创建好的petalinux工程目录下执行
3. 脚本中有文档中提到的几个软件包,其中路径要替换成自己软件包的路径(重要!)
4. 该脚本针对的petalinux版本为2020.2,其他版本如果存在目录结构或其他差异,需要对脚本做一些必要修改后才能适用(重要!)
|
|