yocto编译利用共享缓存

打印 上一主题 下一主题

主题 2008|帖子 2008|积分 6024

注意

  • 服务器端与客户端系统的版本号需为Ubuntu20.04
  • 执行用户需要为sudo权限
  • 服务器端nfs目录权限必须为nobody:nogroup
服务端设置:

在服务器192.168.60.142上设置 NFS 共享:
1.安装 NFS 服务器:
1
sudo apt-get install nfs-kernel-server
2. 编辑 /etc/exports 文件,添加共享目录,本次以/data/nfsroot目录作为共享缓存目录:
1
/aosp/pvt1/nfsdata *(rw,sync,no_subtree_check,all_squash,anonuid=65534,anongid=65534)
3. 赋权 
1
2
3
mkdir -p /aosp/pvt1/nfsdata
sudo chown -R nobody:nogroup /aosp/pvt1/nfsdata
sudo chmod -R 777 /aosp/pvt1/nfsdata
4. 重新启动 NFS 服务:
1
2
3
4
5
6
# 重新导出全部共享目录
sudo exportfs -a
# 重新启动 NFS 服务,使新设置生效
sudo systemctl restart nfs-kernel-server
# 确保 NFS 服务在系统启动时自动运行
sudo systemctl enable nfs-kernel-server

客户端设置

在客户端(编译机)挂载 NFS 共享:
1.安装 NFS 客户端:
1
sudo apt-get -y install nfs-common
2.创建挂载点并挂载 NFS 共享:
1
2
sudo mkdir -p /aosp/pvt1/.nfsroot
sudo mount 192.168.60.142:/aosp/pvt1/nfsdata  /aosp/pvt1/.nfsroot
3.设置 Yocto 利用 NFS 共享的 sstate 缓存:
编辑 local.conf 文件,设置 SSTATE_DIR :
1
2
3
4
5
6
# 编译下令大概不同,详细以实际版本的编译下令为准
export TEMPLATECONF=${PWD}/meta/meta-mediatek-mt8678/conf/templates/auto8678p1_64_hyp
source meta/poky/oe-init-build-env
# 如需要利用共享缓存则执行下行sed下令,如倒霉用则不执行,注意:需要更换相关项目的名称,本次按mt8678_yocto举例
sed -i 's#^SSTATE_DIR ?=.*#SSTATE_DIR ?= "/aosp/pvt1/.nfsroot/mt8678_yocto/auto8678p1_64_hyp/sstate-cache"#' conf/local.conf  
time bitbake mtk-core-image-auto8678-hyp 2>&1| tee build.log
4. 设置开机自动挂载
4.1 在 /etc/systemd/system/mount-nfs.service中写入以下内容(如没有则新建此文件):
[Unit]
Description=Mount NFS Share
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "sleep 10 && /usr/bin/mount 192.168.60.142:/aosp/pvt1/nfsdata /aosp/pvt1/.nfsroot"
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
这里添加了一个 sleep 10 下令来确保挂载下令在网络完全启动后执行。
4.2 生存并退出文件,然后重新加载 systemd 设置:
1
sudo systemctl daemon-reload
4.3 确保服务已启用:
1
sudo systemctl enable mount-nfs.service
4.4 重启系统:
1
sudo reboot
4.5 验证挂载
重启后再次检查挂载:
1
df -h | grep nfsroot
如下图则表现挂载成功:

4.6 检察日志
假如挂载仍然未成功,检察服务的状态和日志以获取更多信息:
1
2
sudo systemctl status mount-nfs.service
sudo journalctl -u mount-nfs.service


参考文档:
Network File System (NFS) | Ubuntu
Yocto: sharing the sstate cache and download directories - Bootlin's blog
Enable sstate cache - Yocto Project



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表