首页 > 其他分享 >QEMU启动RISC-V架构OpenEuler并配置OSC环境

QEMU启动RISC-V架构OpenEuler并配置OSC环境

时间:2023-07-29 14:33:54浏览次数:56  
标签:riscv64 QEMU RISC dev user OpenEuler qemu openEuler

基于Ubuntu 18.04,QEMU 8.0.2,OpenEuler 22.09

安装QEMU

安装基础编译工具

sudo apt install build-essential autoconf automake autotools-dev pkg-config bc curl \
                 gawk git bison flex texinfo gperf libtool patchutils mingw-w64 libmpc-dev \
                 libmpfr-dev libgmp-dev libexpat-dev libfdt-dev zlib1g-dev libglib2.0-dev \
                 libpixman-1-dev libncurses5-dev libncursesw5-dev meson libvirglrenderer-dev libsdl2-dev  -y

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.8 python3-pip  -y
sudo apt install -f
pip3 install meson

下载QEMU

建立文件夹用于编译:

cd && mkdir -p qemu-build

建立文件夹用于安装:

cd && mkdir -p /home/user/program/riscv64-qemu

可登录官网将版本号换成最新版本即可:

cd qemu-build && wget  "https://download.qemu.org/qemu-8.0.2.tar.xz"
tar -xf qemu-8.0.2.tar.xz --strip-components=1 

安装QEMU

cd qemu-build && ./configure --target-list=riscv32-softmmu,riscv32-linux-user,riscv64-linux-user,riscv64-softmmu \
               --enable-kvm --enable-sdl \
               --prefix=/home/user/program/riscv64-qemu
make install -j $(nproc)

配置环境变量

echo 'export QEMU_HOME=/home/user/program/riscv64-qemu' >> ~/.bashrc && echo 'export PATH=$QEMU_HOME/bin:$PATH' >> ~/.bashrc

source ~/.bashrc

下载 OpenEuler RISC-V 系统镜像

建立目录:

cd && mkdir -p /home/user/openeuler

根据自己的用户名修改user

下载OpenEuler 22.09版本,下载目录下所有文件/home/user/openeuler。如需下载其他版本请进入其他目录选择下载即可。

也可以根据自己的情况进入镜像站列表选择下载速度更快的镜像站下载

最新的23.03版本需要在中科院镜像站下载

文件说明:

  • fw_payload_oe_qemuvirt.elf: 利用 openSBI 将 kernel-5.10 的 image 作为 payload 所制作的 QEMU 启动所需文件
  • openEuler-22.09-qemu-xfce.qcow2.tar.zst: openEuler RISC-V QEMU GUI 镜像压缩包
  • preview_start_vm_xfce.sh: GUI 虚拟机启动脚本
  • openeuler-22.09-qemu.qcow2.tar.zst: openEuler RISC-V QEMU headless 镜像压缩包
  • preview_start_vm.sh: headless 虚拟机启动脚本

解压:

 sudo apt-get install zstd
 tar -I 'zstdmt' -xvf openEuler-22.09-riscv64-qemu.qcow2.tar.zst

执行启动脚本

chmod +x preview_start_vm.sh
bash preview_start_vm.sh

登录系统

  • 用户名: root
  • 默认密码: openEuler12#$
openEuler 22.09
Kernel 5.10.0 on an riscv64

4penEuler-riscv6
 login: openEuler 22.09
Kernel 5.10.0 on an riscv64

openEuler-riscv64 login: root
Password: 


Welcome to 5.10.0

System information as of time:   Mon Jul  3 07:52:19 PM CST 2023

System load:   0.17
Processes:   117
Memory used:   .6%
Swap used:   0.0%
Usage On:   6%
Users online:   1


[root@openEuler-riscv64 ~]# ls
[root@openEuler-riscv64 ~]# pwd

远程登录系统

ssh -p 12055 root@localhost

配置系统

以下操作均在root用户下执行,如果切换了用户会有提示。因为系统初始状态没有普通用户,也没有sudo,所以需要使用root完成一些基础配置。

修改root密码

原密码太复杂,修改简单密码

passwd root
# 输入两次密码

添加普通用户

# 添加用户 user
useradd -s /bin/bash -d /home/user -m user

passwd user
# 输入两次密码
# 添加管理员权限
usermod -aG wheel user

修改时间

echo "NTP=ntp.aliyun.com" >> /etc/systemd/timesyncd.conf

systemctl restart systemd-timesyncd.service

查看timesyncd运行状态:

systemctl status systemd-timesyncd.service

date命令可查看当前系统时间。验证是否配置成功。

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

配置DNS

vim /etc/resolv.conf
nameserver 119.29.29.29

配置软件包源

配置文件为 /etc/yum.repos.d/openEuler.repo 下

mv /etc/yum.repos.d/openEuler.repo  /etc/yum.repos.d/openEuler.repo.bk && sudo bash -c "cat << EOF > /etc/yum.repos.d/openEuler.repo
# just for test
[mainline]
name=mainline
baseurl=https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.09-V1-riscv64/repo/22.09/
enabled=1
gpgcheck=0
# just for test
[epol]
name=epol
baseurl=https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.09-V1-riscv64/repo/22.09/
enabled=1
gpgcheck=0
[extra]
name=extra
baseurl=https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.09-V1-riscv64/repo/extra/
enabled=1
gpgcheck=0
EOF"

需要注意的是,因为OpenEuler还在快速发展中,镜像地址可能会发生变化,所以需确认地址是否能够正常访问,如无法访问会导致404错误

[repoid]中的repoid为软件仓库(repository)的ID号,所有.repo配置文件中的各repoid不能重复,必须唯一。示例中repoid设置为base。 name为软件仓库描述的字符串。 baseurl为软件仓库的地址。 enabled为是否启用该软件源仓库,可选值为1和0。默认值为1,表示启用该软件源仓库。 gpgcheck可设置为1或0,1表示进行gpg(GNU Private Guard)校验,0表示不进行gpg校验,gpgcheck可以确定rpm包的来源是有效和安全的。 gpgkey为验证签名用的公钥。

磁盘扩容

  1. 在宿主机上安装 qemu-img 工具:
apt install qemu-utils
  1. 在 openEuler RISC-V 虚拟机上安装 growpart 工具:
dnf install cloud-utils-growpart
  1. 关闭QEMU虚拟机
  2. 把 qcow2 文件的容量加200GB:
$ qemu-img resize *.qcow2 +200G
Image resized.
$ qemu-img info *.qcow2
image: openEuler-preview.riscv64.qcow2
file format: qcow2
virtual size: 220 GiB 
disk size: 9.58 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
  1. QEMU 启动 openEuler RISC-V。

启动以后,我们先看看分区情况:可以看到根目录对应的分区只使用了 10G。

[root@openEuler-RISCV-rare ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    254:0    0  220G  0 disk
└─vda1 254:1    0   10G  0 part /
  1. 扩展分区 vda1,执行
growpart /dev/vda1

执行 lsblk 可以看到 / 所在的 vda1 分区已经扩展到了预期大小

[root@openEuler-RISCV-rare ~]# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=419428319 end=419430367
[root@openEuler-RISCV-rare ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    254:0    0  220G  0 disk
└─vda1 254:1    0  220G  0 part /
  1. 扩展文件系统:
resize2fs /dev/vda1

BUG

network backend ‘user‘ is not compiled into this binary

git clone https://gitlab.freedesktop.org/slirp/libslirp.git

http://security.ubuntu.com/ubuntu/pool/main/libs/libslirp/libslirp-dev_4.1.0-2ubuntu2.2_amd64.deb

sudo apt-get install libslirp-dev

重新编译QEMU:

cd qemu-build && rm -rf build

cd qemu-build && ./configure --target-list=riscv32-softmmu,riscv32-linux-user,riscv64-linux-user,riscv64-softmmu \
               --enable-kvm --enable-sdl --enable-slirp\
               --prefix=/home/user/program/riscv64-qemu

make install -j $(nproc)

参考文档

RISC-V/doc/tutorials/vm-qemu-oErv.md at master · openeuler-mirror/RISC-V · GitHub

openEuler 22.09技术白皮书

标签:riscv64,QEMU,RISC,dev,user,OpenEuler,qemu,openEuler
From: https://www.cnblogs.com/lifeislife/p/17589761.html

相关文章

  • openEuler+Linaro合作成果展示|2023开放原子全球开源峰会
    2023年6月11~13日,2023年开放原子全球开源峰会(OpenAtom)在北京经济开发区北人亦创国际会展中心召开,本届峰会旨在搭建全球开源生态发展合作交流平台,聚焦开源生态建设发展,并组织了openEuler、OpenHarmony等开源生态成果展示和相关论坛;OpenAtomopenEuler(以下简称“openEuler”)自2021年......
  • openEuler TechDay——熊博带你玩转欧拉
    openEuler是什么?是打破惯性的技术突破?是倾力合作的生态共建?还是踏浪前行的商业反哺?**openEulerTechDay本期邀请到了欧拉技术委员会熊伟博士,以对话的方式为大家答疑解惑,全方位立体剖析欧拉发展。**熊博将带你走入开源世界,透视欧拉最新进展,分享开源社区合作,探讨未来商业发展。多少欧......
  • 使用 QEMU 代替 STM32 开发版本 docker 一键启动
    dockerfile#Compileandinstallqemu_stm32fromfedora:28RUNdnfinstall-y\arm-none-eabi-gcc\arm-none-eabi-newlib\findutils\gcc\git\glib2-devel\libfdt-devel\......
  • 通过qemu和docker搭建检查编译环境
    背景在工作中我们经常需要交叉编译一些可执行程序或者动态库,有时要编译的程序过于复杂,如果靠纯的交叉编译,费事又费力,需要解决大量的编译依赖以及报错。解决方案docker+qemu-userqemu-user提供可以运行不同架构的用户态程序的方案,而docker可以帮我们搭建一个运行qemu-user的......
  • QEMU 加载 uboot kernel 实例
    根文件系统放在SD卡qemu-system-arm-Mmcimx6ul-evk\-m512M\-kernel./zImage\-dtb./imx6ul-14x14-evk.dtb\-nographic\-devicesd-card,drive=mysdcard\-......
  • 华为认证欧拉openEuler-HCIA命令行操作基础
    Linux命令基础知识linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。上一篇:openEuler操作系统入门使用Linux命令行命令行更高效:Linux系统中使用键盘操作速度要......
  • 聚焦操作系统迁移实践与生态发展 | openEuler Meetup 长沙站圆满结束
    活动回顾12月23日,由openEuler社区和湖南欧拉生态创新中心主办,麒麟信安和湖南省鲲鹏生态创新中心协办的openEuler Meetup 长沙站举办。本次活动集聚社区开发者、用户、企业伙伴、操作系统爱好者,围绕操作系统搬迁进行交流和实践,正式发布《湖南欧拉生态发展白皮书》,并在活动上成立op......
  • openEuler委员会主席江大勇:激发原创力量,逐梦数智未来
    12月29日,由欧拉开源社区发起并联合华为、麒麟软件、统信软件、麒麟信安、超聚变、英特尔、中科院软件所、软通动力、润和软件等伙伴,共同举办的openEulerSummit2022于线上举行。会上,openEuler委员会主席江大勇发表了《激发原创力量,逐梦数智未来》的主题演讲。他表示:2022年欧拉系操......
  • 虚拟化(4) qemu用NAT上网
    通过前面3篇的探索,NAT方式应该可以实现了,不会的网友可以滴滴我。以上涉及的命令+图形库就可以自己实现一个类似vmware或vbox的虚机软件了。我感觉qemu源码真的很重要,如果读明白,那么自己也可以在其他系统如window和mac实现虚拟化,下载qemu源码开始阅读.........
  • “造芯”之 Proprietary闭源 与 Open Source开源(RISC-V) 对比
    一、造芯的RISC-V(OpenSource)与Proprietary历史鉴证,共和的Top-Down与Bottom-Up的民主是统一的,OpenSource开源与Proprietary闭源可完美的共存。“造芯”领域的也会并存:●Bottom-Up的RISC-V(OpenSource开源的)●Top-Down的ARM/RISC/Intel/AMD/NVIDIA…(Proprietary专......