oerv-pretask(三)基于 systemd-nspawn 和 QEMU User Mode 搭建 openEuler RISC-V 软件包的快速开发环境

任务三:基于 systemd-nspawn 和 QEMU User Mode 搭建 openEuler RISC-V 软件包的快速开发环境

我们前面两个任务和这个任务是具有关联性的,是铺垫性质,我们的pretask也会对后面的工埋买下伏笔,这个任务,我们要做的相比前面的任务,主要就是使用nspawn或者docker来进行加速对构建rpm包的过程。

整个流程应该是

  1. 安装qemu
  2. 安装osc和obs-build
  3. osc拉取对应软件包
  4. 安装nspawn或docker
  5. osc build的时候使用nspawn进行加速

1.安装qemu

git clone https://github.com/qemu/qemu.git
cd qemu
./configure
make -j$(nproc)
sudo make install

2.我们继续安装osc和obs-build

yay -S osc-git obs-build-git


arch系列的aur里面有现成的,其他发行版可以手动构建一下

安装osc

git clone https://github.com/openSUSE/osc.git
cd osc
chmod +x setup.py
./setup.py build
sudo ./setup.py install 


安装obs-build

git clone https://github.com/openSUSE/obs-build.git
cd obs-build
sudo make install


安装之后,我们就可以尝试开始构建了

3.首先通过命令,将obs平台的分支的包拉下来

osc co openEuler:23.09:RISC-V coreutils


这只是拉下来了一个文件_service,我们还需要一行命令来将远程包的其他相关文件一起拉下来

(注意,我们co下来后,会出现对应的文件夹,请进入之后执行下面命令)

osc up -S

我们拉下来的文件都是_service开头的,这是不可用的,所以我们还需要去掉这些头

rm -f _service;for file in `ls`;do new_file=${file##*:};mv $file $new_file;done

小tips:可以在~/.bashrc里面添加一行

alias fix = 'rm -f _service;for file in `ls`;do new_file=${file##*:};mv $file $new_file;done'

保存后记得执行一下.bashrc文件,之后再有这种情况,在命令行输入fix就可以了

4.安装nspawn或者docker

我这里自己是用的nspawn

在qemu源码目录下

sudo ./scripts/qemu-binfmt-conf.sh --persistent yes --credential yes --systemd riscv64
sudo systemctl restart systemd-binfmt 

如果是乌班图系列,可以选择直接安装

sudo apt install zstd systemd-container

这里解释一下,systemd-container是包含我们用的systemd-binfmt,这个东西是会决定我们的nspawn的。

安装之后检查一下

sudo systemctl status systemd-binfmt.service

输出的状态为active(绿色)这样才正常。

5.加速构建

我的本机为manjaro,使用nspawn的时候一直遇见一些错误,退而求其次使用了chroot(我的理解为简易版的nspawn,隔离机制不如nspawn,所以加速效果也会差一些)

osc build standard_riscv64 riscv64 --vm-type=chroot

最后成功,撒花完结!!!

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值