体验开源openeuler openharmony stratovirt模拟器
文档
openeuler社区面向数字基础设施的开源操作系统
openharmony社区
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,
目标是面向全场景、全连接、全智能时代、基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
QEMU社区
QEMU(Quick EMUlator)是一种开源的虚拟机监视器和模拟器,它可以模拟多个硬件平台,包括x86、ARM、PowerPC等。
stratovirt社区
StratoVirt是华为使用Rust语言开发的虚拟机,在架构设计和接口上预留了组件化拼装的能力和接口,StratoVirt可以按需灵活组装高级特性直至演化到支持标准虚拟化。
OpenHarmony 教学版
交大基于openharmony底座,二次开发适用于教学的开放平台,完善了OpenHarmony OS 对 QEMU 模拟器的适配,旨在形成开箱即用的实验平台,有助于爱好者进一步深入了解研究openharmony。
亮点
都是开源的,国产化程度高,自由度非常大,个人体验可以任意修改,可以用于学习、科研,普通用户做个玩具看看也行,运行平台支持通用的x86台式电脑或笔记本,若要分发遵从附属协议即可。
编译 qemu
wget https://download.qemu.org/qemu-9.0.0.tar.xz
tar -xvf /qemu-9.0.0.tar.xz
cd qemu-9.0.0
mkdir build
cd buildsudo apt install ninja-build libglib2.0-dev libgnutls28-dev libsdl2-dev libvirglrenderer-dev libepoxy-dev
../configure --prefix=/usr/local --sysconfdir=/etc --target-list=arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user,riscv64-softmmu,riscv64-linux-user,riscv32-softmmu,riscv32-linux-user,x86_64-softmmu,xtensa-softmmu,xtensaeb-softmmu --audio-drv-list="sdl,pa,alsa" --enable-tools --enable-gnutls --enable-virtfs --enable-opengl --enable-virglrenderer --enable-sdl
make -j16
编译 stratovirt
git clone https://gitee.com/openeuler/stratovirt.git
cd stratovirt
# openeuler不用修改,ubuntu(debian) dnf组件改为apt安装
vim Makeifle
make build
# rust
cargo build --workspace --bins --release --features "scream_alsa" --features "virtio_gpu" --features "gtk" --features "usb_host" --features "vnc"
编译 openharmony
repo init -u https://gitee.com/open-harmony-edu-dist/manifest -b refs/heads/OpenHarmony-5.0.2-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
build/prebuilts_download.sh
./build.sh --product-name x86_64_virt
运行
总体编译耗时大概5个小时,基本操作完成后,就可以实际体验。
qemu
sudo vendor/edu/x86_64_virt/qemu_run.sh
strtovirt
sudo stratovirt -machine q35,accel=kvm -m 4G -smp 4 -cpu host
#后面参数结合实际自由添加
小结
通过初步测试,该系统组合支持图形界面、音频播放、鼠标操作、键盘操作、物理网络、虚拟网络、物理WIFI、虚拟WIFI、摄像拍照、USB设备、支持调试hdcd、安装野生app(ps:突发奇想,抽空使用毛笔写个Hello World!)。
总体看,有点类似某卓仿真平台的影子。