openEuler-risc-v学习笔记

QEMU安装

参考
https://gitee.com/zxs-un/openEuler-port2riscv64/blob/master/doc/vm-host-no-root-on-ubuntu.md
qemu下载链接
https://www.qemu.org/download/

wget https://download.qemu.org/qemu-5.0.0.tar.xz
tar xvJf qemu-5.0.0.tar.xz
cd qemu-5.0.0
./qemu-5.0.0/configure --target-list=riscv64-softmmu,riscv64-linux-user --prefix=/home/username/path
make
make install

注意–prefix=/home/username/path中的username应当被$(whoami)解析实现。
配置
执行下面三条语句

echo 'export PATH=/home/$(whoami)/path/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
qemu-system-riscv64 --version

命令qemu-system-riscv64 --version能正确显示安装的QEMU版本则表示安装成功。
如果出问题可以卸载
源码编译安装的qemu需要手动卸载:
可执行文件默认放在/usr/local/bin
库文件默认存放在/usr/local/libexec
配置文件默认存放在/usr/local/etc
共享文件默认存放在/usr/local/share

# rm -rf /usr/local/bin/qemu-*
# rm -rf /usr/local/libexec/qemu-bridge-helper
# rm -rf /usr/local/etc/qemu
# rm -rf /usr/local/share/qemu

在删除解压包即可

运行openEuler RISC-V

下载

https://gitee.com/link?target=https%3A%2F%2Frepo.openeuler.org%2FopenEuler-preview%2FRISC-V%2FImage
在此链接下下载这两个文件,如果需要使用docker,第一个文件下载以docker结尾的
fw_payload_oe.elf
openEuler-preview.riscv64.qcow2
在有这两个文件的文件夹下执行启动脚本

启动

qemu-system-riscv64 \-nographic -machine virt \-smp 8 -m 2G \-kernel fw_payload_oe.elf \-drive file=openEuler-preview.riscv64.qcow2,format=qcow2,id=hd0 \-object rng-random,filename=/dev/urandom,id=rng0 \-device virtio-rng-device,rng=rng0 \-device virtio-blk-device,drive=hd0 \-device virtio-net-device,netdev=usernet \-netdev user,id=usernet,hostfwd=tcp::12055-:22 \-append 'root=/dev/vda1 rw console=ttyS0 systemd.default_timeout_start_sec=600 selinux=0 highres=off mem=4096M earlycon'

启动命令可做成Shell脚本,其中fw_payload_oe.elf与openEuler-preview.riscv64.qcow2需修改为实际下载的文件名, 并注意相对和绝对路径,如做成启动脚本则可与脚本放在同一目录下。 为ssh转发的12055端口也可改为自己需要的端口号。

配置

密码

root 默认密码为 openEuler12#$

为 root 设置密码
passwd root
Password:
Retype:

用户

添加用户euler并设置密码

adduser -d /home/euler -s /bin/bash euler
passwd euler
Password:
Retype:

su 是 Switch User 的命令,用于切换用户。

从用户root切换到用户euler执行 su euler,连环境变量一并切换到euler的主目录则执行 su - euler

从用户euler切换到用户root执行 su ,连环境变量一并切换到root的主目录则执行 su -

时间

chrony在oE上暂时不可用,使用timesyncd:

echo “NTP=ntp.aliyun.com” >> /etc/systemd/timesyncd.conf
systemctl restart systemd-timesyncd.service

查看timesyncd运行状态:

systemctl status systemd-timesyncd.service

如果正确则crtl+c退出

亦可手动设置当前正确的时间,以下时间仅供参考,按实际时间替换
date -s “2020-07-15 23:00:01”
date命令可查看当前系统时间。
作为测试,此时执行 yum update 应当成功。

时间务必正确设置,错误的时间会影响诸如https的TLS认证等过程。
配置DNS

/etc/resolv.conf
nameserver 119.29.29.29

配置软件包源

位于 /etc/yum.repos.d/ 下
vim /etc/yum.repos.d/
增加
[base]
name=base
baseurl=https://isrc.iscas.ac.cn/mirror/openeuler-sig-riscv/oe-RISCV-repo/
enabled=1
gpgcheck=0

[everything]
name=everything
baseurl=https://repo.openeuler.org/openEuler-preview/RISC-V/everything/
enabled=1
gpgcheck=0

按需安装软件包
yum update
yum install osc sudo
执行dnf或yum需要root用户权限

sudo 添加用户
首先利用whereis 命令查找sudoers配置文件的目录(默认会在/etc/sudoers)
[root@localhost xiaofei]# whereis sudoers
sudoers: /etc/sudoers /etc/sudoers.bak /usr/share/man/man5/sudoers.5.gz
然后需要切换到root用户,更改/etc/sudoers的权限
[root@localhost xiaofei]# chmod u+w /etc/sudoers
然后就可以利用vi编辑器来把用户添加到sudoers之中
[root@localhost xiaofei]# vi /etc/sudoers
然后找到root ALL=(ALL) ALL所在的位置,把所要添加的用户添加到文件之中,保存退出即可

osc命令工具的安装与~/.oscrc配置文件

安装osc

osc 命令工具
通过yum或dnf安装osc命令工具

sudo yum install osc
缺什么安什么

~/.oscrc配置文件

须在欲使用的OBS上注册账号,如https://gitee.com/link?target=https%3A%2F%2Fbuild.openeuler.org

[general]
apiurl = https://build.openeuler.org/
no_verify = 1 # 未配置证书情况下不验证

[https://build.openeuler.org/]
user=username # 用户名
pass=password # 明文密码
trusted_prj=openEuler:selfbuild:function # 此项目为openEuler:Mailine:RISC-V项目的依赖库

使用 osc build 直接构建 OBS 服务端的内容

执行osc命令的用户应当为拥有sudo权限但非root的普通用户。
#切换到某个工作目录下开始本地构建的操作
cd ~/devel #选定某个项目中需要进行本地的某个包(此处为openEuler:Mainline:RISC-V项目的xz包)
osc co openEuler:Mainline:RISC-V/xz#切换到该包的目录
cd openEuler:Mainline:RISC-V/xz#openEuler的OBS在线服务器根据_service文件中的描述从gitee下载需要的源码包、补丁和spec文件等,将它们下载到本地
osc up -S#重命名由service下载的文件,使其能被本地 osc build 正确识别
rm -f _service;for file in `ls | grep -v .osc`;do new_file=${file##*:};mv $file $new_file;done#开始进行本地构建
osc build#构建目标仓会自动选择,一般为standard仓
#若存在多个目标仓,可指定仓名
osc build BaseOS#输入sudo密码
Password:#可能需要交互选择信任网站证书或添加信任依赖仓
#网站证书信任问题可能是系统时间导致的,用`date -s`设置正确的时间#构建成功会显示产物位置,失败则会显示错误信息。

对既有项目进行分支修改并本地构建测试

#对不属于自己的在线公开既有项目的包,分支到自己的工在线程,此处为 zlib
osc branch openEuler:Mainline:RISC-V /zlib#切换到某个工作目录下开始本地构建操作
cd ~/devel #切换下载分支后的包
osc co home:usename:branches:openEuler:Mainline:RISC-V/zlib#切换到该包的目录
cd home:usename:branches:openEuler:Mainline:RISC-V/zlib#目录中应只有一个_service文件,描述了从gitee下载的文件
#可fork对应的gitee项目,并在gitee中进行代码修改
#同时在OBS的WebUI中编辑_service文件,主要修改gitee仓路径和revision号#亦可在本地编辑_service文件,编辑后提交到OBS服务器
osc ci -m "commit log"#对_service文件修改完成后,将所有内容下载到本地
osc up -S#然后重命名由service下载的文件

实操上手

使用 osc build 直接构建 OBS 服务端的内容

执行osc命令的用户应当为拥有sudo权限但非root的普通用户。
#切换到某个工作目录下开始本地构建的操作
cd ~/devel #选定某个项目中需要进行本地的某个包(此处为openEuler:Mainline:RISC-V项目的xz包)
osc co openEuler:Mainline:RISC-V/xz#切换到该包的目录
cd openEuler:Mainline:RISC-V/xz#openEuler的OBS在线服务器根据_service文件中的描述从gitee下载需要的源码包、补丁和spec文件等,将它们下载到本地
osc up -S#重命名由service下载的文件,使其能被本地 osc build 正确识别
rm -f _service;for file in `ls | grep -v .osc`;do new_file=${file##*:};mv $file $new_file;done#开始进行本地构建
osc build#构建目标仓会自动选择,一般为standard仓
#若存在多个目标仓,可指定仓名
osc build BaseOS#输入sudo密码
Password:#可能需要交互选择信任网站证书或添加信任依赖仓
#网站证书信任问题可能是系统时间导致的,用`date -s`设置正确的时间#构建成功会显示产物位置,失败则会显示错误信息。

对既有项目进行分支修改并本地构建测试

#对不属于自己的在线公开既有项目的包,分支到自己的工在线程,此处为 zlib
osc branch openEuler:Mainline:RISC-V zlib#切换到某个工作目录下开始本地构建操作
cd ~/devel #切换下载分支后的包
osc co home:usename:branches:openEuler:Mainline:RISC-V/zlib#切换到该包的目录
cd home:usename:branches:openEuler:Mainline:RISC-V/zlib#目录中应只有一个_service文件,描述了从gitee下载的文件
#可fork对应的gitee项目,并在gitee中进行代码修改
#同时在OBS的WebUI中编辑_service文件,主要修改gitee仓路径和revision号#亦可在本地编辑_service文件,编辑后提交到OBS服务器
osc ci -m "commit log"#对_service文件修改完成后,将所有内容下载到本地
osc up -S#然后重命名由service下载的文件

后续操作与使用 osc build 直接构建 OBS 服务端的内容相同

开发流程

在腾讯文档查看没人认领的package,然后在此处搜索查看package构建状态
https://build.openeuler.org/project/show/openEuler:Mainline
如果是successful则换一个package,否则开展修复
在这个gitee仓库查看,是否存在需要的package
https://gitee.com/openeuler/RISC-V
如果没有,进入configuration修改riscv_fork_list.yaml里的内容,按照格式与排序增加需要修复package的name。进行pr,几分钟后,再次搜索,仓库会出现该package,将需要修复的package进行fork到自己仓库,即可按照上述流程,在osc开展修复

openEuler-risc-v学习笔记相关推荐

  1. GoKit3(V)学习笔记02_自定义产品数据点

    跟着Gokit3使用说明书的教程顺利地让设备跑了起来,家里一下子热闹了起来,玛丽玛丽的声音此起披伏,多多儿还不会讲话,也跟着maaa地叫着.这是GoKit3给生活带来的快乐. 言归正传,这篇开始讲述G ...

  2. 计组学习笔记2(RISC v版)

    指令集解释 (规定:R[r]表示通用寄存器r的内容,M[addr]表示存储单元addr的内容,SEXT[imm]表示对imm进行符号扩展,ZEXT[imm]表示对imm进行零扩展) 整数运算类 -U型 ...

  3. oracle v$ 表,【学习笔记】Oralce视图 查找分析V$PARAMETER视图的基表

    天萃荷净 分享一篇关于查找分析V$PARAMETER视图的基表的案例方法 1.使用trace查找show parameter执行语句 alter session set events '10046 t ...

  4. 查看oracle 导出进程,【学习笔记】Oracle 通过v$session查看imp进程信息的案例

    天萃荷净 运维DBA反映需求在执行Oracle imp导入时需要查看导入的进程信息,通过v$session分析imp导入进程在服务器端v$session中的username列不是imp登陆用户名,而是 ...

  5. oracle in查询 一直等待,学习笔记:Oracle awr 分析解决inactive transaction branch等待事件...

    天萃荷净 通过Oracle AWR报告分析inactive transaction branch等待事件的原因 分析一份awr,发现不太熟悉的等待事件"inactive transactio ...

  6. 《汇编语言》学习笔记

    <汇编语言>学习笔记 by 张悠慧教授(清华大学),课程链接 https://www.bilibili.com/video/av27895807/?p=1 ,大概有十几个小时的视频.看完课 ...

  7. MIT 6.s081学习笔记

    MIT 6.s081学习笔记 introduction 计算机组织结构: 最底部是一些硬件资源,包括了CPU,内存,磁盘,网卡 最上层会运行各种应用程序,比如vim,shell等,这些就是正在运行的所 ...

  8. 嵌入式学习笔记——概述

    嵌入式系统概述 前言 "嵌入式系统"概念 1.是个啥? 2.可以干啥? 3.有哪些入坑方向? 4.入坑后可以有多少薪资? 单片机 1.什么是单片机? 2.架构简介 3.基于ARM架 ...

  9. 计算机汇编语言运用哪个进制,《汇编语言》学习笔记

    另外,我觉得学习汇编语言之前最好先了解 计算机组成 的相关知识,否则遇到一些 CPU 寄存器 内存寻址 等相关概念时,可能会听着有点懵. 前言 学完 计算机组成原理 之后接下来再学什么?通过本课程一开 ...

最新文章

  1. 1066 Root of AVL Tree 需再做
  2. java 队列和rabbitmq_java – 如何在不使消息出列的情况下浏览rabbitmq中的队列
  3. asterisk1.8 for mipsel mysql
  4. 最近关于编程学习的一点小体会
  5. linux找回删除的文件6,在Centos6/RHEL6上恢复ext4文件系统下误删除的文件
  6. 【Jenkins】Jenkins配置从节点,实现远程主机调用功能
  7. 网络通信协议八之UDP协议详解
  8. python 查找文件夹下的文件名_python查找模式后面的文件夹中的所有文件名
  9. spring StopWatch用法
  10. 十大开源游戏引擎深入比较
  11. 2021年武汉理工大学计算机考研复试详解 计算机学硕
  12. FcaNet: Frequency Channel Attention Networks
  13. Java部分集合以及部分常用类
  14. c语言子函数作用是什么意思,C语言编译器中常见的函数用法以及作用详解
  15. 巧用搜索引擎---如何在指定网站中搜索
  16. 数控铣削图案及编程_数控铣床漂亮编程图案 数控铣床编程100例
  17. 基于OAI-PMH的元数据搜索引擎的设计与实现
  18. rstudio协整检验代码
  19. 爬虫----js逆向某宝h5的sign参数
  20. 交直流与电路分析三板斧

热门文章

  1. python在单词表中查找包含所有元音字母aeiou的单词并打印
  2. 面试官怎样面试出合格的技术人员
  3. 两代荣耀Magic历史性同框,荣耀Magic 2如何践行科技理想主义?
  4. db4小波的一次分解与重构
  5. for(int num:nums)
  6. “重塑安全边界,揭秘零信任业务保障”,联软科技下一代零信任访问管理系统发布
  7. android 8.1 9.0 10.0 Launcher3禁止拖拽app图标到第一屏
  8. php中运算符的作用,在php中,双反位运算符(~~)(也称为“双颚化符”)的作用是什么?...
  9. web前端学习之———互联网与HTML篇
  10. amdr7-4700linux,Yoga14s 2021 ARH R7 4800H 安装Arch Linux