当前位置: 首页 > article >正文

在Ubuntu上从源码编译QEMU 6.2.0,并一键运行OpenHarmony轻量系统(RISC-V版)

从零构建QEMU 6.2.0并运行OpenHarmony轻量系统的实战指南在探索RISC-V架构与开源操作系统的过程中能够亲手搭建完整的开发环境并运行一个精简的操作系统内核是理解计算机系统底层运作的绝佳途径。本文将带你完成从Ubuntu系统上编译QEMU模拟器到启动OpenHarmony轻量系统的全过程特别针对开发者可能遇到的各种坑提供解决方案。1. 环境准备与依赖管理在开始编译QEMU之前确保你的Ubuntu系统建议20.04 LTS或更高版本已经更新到最新状态sudo apt update sudo apt upgrade -y编译QEMU 6.2.0需要安装以下依赖包这些软件包提供了编译器工具链、库文件和各种开发工具sudo apt install -y build-essential zlib1g-dev pkg-config libglib2.0-dev \ binutils-dev libboost-all-dev autoconf libtool libssl-dev \ libpixman-1-dev virtualenv flex bison ninja-build libncursesw5注意ninja-build和libncursesw5这两个包经常被遗漏但它们对后续编译和运行至关重要。如果遇到类似Could NOT find Ninja或libncursesw.so.5: cannot open shared object file的错误安装这两个包通常可以解决问题。提示对于国内用户可以考虑更换apt源为国内镜像以加速下载。例如使用阿里云镜像sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list2. 获取与编译QEMU源码2.1 下载QEMU 6.2.0源码有两种主要方式获取QEMU源码直接使用wget下载wget https://download.qemu.org/qemu-6.2.0.tar.xz从官网下载后上传到服务器访问qemu.org/download找到6.2.0版本下载链接下载完成后解压源码包tar -xf qemu-6.2.0.tar.xz cd qemu-6.2.02.2 配置与编译创建一个独立的构建目录可以保持源码目录的整洁mkdir build cd build设置安装目录建议使用/usr/local/qemuQEMU_DST_DIR/usr/local/qemu sudo mkdir -p $QEMU_DST_DIR配置编译选项时可以启用RISC-V支持并优化构建../configure --prefix$QEMU_DST_DIR --target-listriscv32-softmmu \ --enable-debug --enable-sdl --enable-vnc关键参数说明--target-listriscv32-softmmu专门针对RISC-V 32位架构编译--enable-debug启用调试支持--enable-sdl启用图形界面支持开始编译根据CPU核心数调整-j参数make -j$(nproc)编译过程可能需要15-30分钟取决于你的硬件配置。如果遇到错误常见原因包括缺少依赖库根据错误提示安装相应开发包权限问题确保对安装目录有写入权限内存不足减少并发编译任务数如使用-j4代替-j82.3 安装与配置环境变量编译成功后安装QEMU到指定目录sudo make install将QEMU添加到PATH环境变量echo export PATH\$PATH:$QEMU_DST_DIR/bin ~/.bashrc source ~/.bashrc验证安装是否成功qemu-system-riscv32 --version3. 准备OpenHarmony轻量系统镜像3.1 获取OpenHarmony源码参考OpenHarmony官方文档获取4.0 Release版本源码repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-4.0-Release --no-repo-verify repo sync -c repo forall -c git lfs pull3.2 编译RISC-V目标系统在源码根目录执行hb set # 选择qemu_riscv_mini_system_demo hb build编译完成后系统镜像将生成在out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image4. 使用QEMU运行OpenHarmony4.1 理解qemu-run脚本OpenHarmony提供了一个便捷的qemu-run脚本位于项目根目录。这个脚本实际上是对QEMU命令的封装主要功能包括设置内存大小默认128MB指定CPU类型riscv32加载内核镜像OHOS_Image配置虚拟设备virtio-net, virtio-blk等查看脚本内容cat readlink qemu-run4.2 启动系统直接运行脚本启动系统./qemu-run成功启动后你将看到类似以下的输出[OHOS INFO] [init] init startup... [OHOS INFO] [init] mount partitions... [OHOS INFO] [init] start system services...4.3 交互与控制在QEMU交互模式下可以使用以下快捷键CtrlA然后X退出QEMUCtrlA然后C进入QEMU监视器控制台CtrlAlt2切换到QEMU控制台CtrlAlt1切换回串口输出5. 常见问题与深度调试5.1 库文件缺失问题如果遇到类似以下错误error while loading shared libraries: libncursesw.so.5: cannot open shared object file解决方法sudo apt install libncursesw55.2 图形界面问题如果希望启用图形界面显示可以修改qemu-run脚本添加-display sdl或者使用VNC连接-vnc :1然后使用vncviewer连接localhost:59015.3 调试技巧要调试OpenHarmony内核可以在qemu-run脚本中添加-s -S这会让QEMU启动后暂停等待gdb连接。然后在另一个终端riscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image (gdb) target remote localhost:1234 (gdb) continue5.4 性能优化对于大型项目开发可以考虑以下优化使用ccache加速编译sudo apt install ccache export CCccache gcc export CXXccache g在configure时添加--enable-tcg-interpreter提高某些情况下的性能增加QEMU内存大小修改qemu-run脚本中的-m参数6. 进阶应用与扩展6.1 添加自定义设备通过修改QEMU源码可以添加自定义设备。基本步骤在hw/riscv目录下创建新设备代码实现必要的MMIO接口重新编译QEMU6.2 多核支持虽然当前轻量系统是单核的但QEMU支持多核RISC-V处理器。可以修改启动参数-smp 26.3 网络配置要启用网络支持需要在qemu-run中添加网络设备参数-netdev user,idmynet -device virtio-net-device,netdevmynet在OpenHarmony内核中启用网络驱动6.4 存储设备模拟添加虚拟磁盘-drive filedisk.img,ifvirtio,formatraw创建磁盘镜像qemu-img create -f raw disk.img 1G7. 系统开发工作流7.1 持续开发流程高效的开发工作流可以这样设置在终端A运行QEMU./qemu-run -s -S在终端B运行gdbriscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image在终端C进行代码编辑和编译通过gdb加载新编译的内核进行测试7.2 自动化测试可以编写脚本自动化测试流程#!/bin/bash # 编译内核 hb build || exit 1 # 启动QEMU并运行测试 ./qemu-run -nographic -serial mon:stdio run_tests # 检查输出是否包含预期结果7.3 性能分析使用QEMU内置的性能分析工具-perf map或者使用riscv-profiler等工具分析系统性能。

相关文章:

在Ubuntu上从源码编译QEMU 6.2.0,并一键运行OpenHarmony轻量系统(RISC-V版)

从零构建QEMU 6.2.0并运行OpenHarmony轻量系统的实战指南 在探索RISC-V架构与开源操作系统的过程中,能够亲手搭建完整的开发环境并运行一个精简的操作系统内核,是理解计算机系统底层运作的绝佳途径。本文将带你完成从Ubuntu系统上编译QEMU模拟器到启动O…...

VR-Reversal:一键将3D VR视频转换为2D的终极免费工具

VR-Reversal:一键将3D VR视频转换为2D的终极免费工具 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mir…...

LFM2.5-1.2B-Thinking-GGUF开源可部署:国产化ARM服务器适配实测报告

LFM2.5-1.2B-Thinking-GGUF开源可部署:国产化ARM服务器适配实测报告 1. 平台简介与核心价值 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式和llama.cpp运行时,在国产化ARM服务…...

如何永久备份微信聊天记录?本地免费工具WeChatMsg完整使用指南

如何永久备份微信聊天记录?本地免费工具WeChatMsg完整使用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...

VMware 17 Pro 保姆级教程:手把手教你给CentOS 7装上GNOME桌面(附网络配置避坑指南)

VMware 17 Pro 零基础实战:CentOS 7 GNOME桌面完整部署与网络疑难终结 第一次在虚拟环境里部署Linux系统就像学骑自行车——看着别人操作行云流水,自己上手却总在奇怪的地方卡壳。特别是当你想跳过晦涩的命令行,直接拥有一个图形化操作环境时…...

51单片机汇编实验:LED数码管显示“HELLO-88”

【声明】该博客仅供个人学习参考与研究,禁止进行任何方式的学术剽窃(如直接抄袭、盗用电路设计等),由于读者自身造成的一切学术不端行为与原作者无关。实验原理:基于AT89C51芯片汇编语言实现。一 实验要求1&#xff0e…...

借助 Taotoken 模型广场为你的 Chrome 扩展选择合适的大模型引擎

借助 Taotoken 模型广场为你的 Chrome 扩展选择合适的大模型引擎 1. Chrome 扩展集成大模型的典型需求场景 开发浏览器扩展时集成 AI 能力已成为提升用户体验的重要手段。常见需求包括实时网页内容摘要、表单智能填充、多语言翻译辅助等。这些场景对模型的响应速度、上下文理…...

OJ刷题避坑指南:搞定XTU-OJ 1239(2048模拟题)的3个关键细节与调试技巧

OJ刷题避坑指南:搞定XTU-OJ 1239(2048模拟题)的3个关键细节与调试技巧 在算法竞赛中,模拟类题目往往看似简单却暗藏杀机。XTU-OJ 1239这道2048游戏模拟题,就是典型的"规则简单实现难"案例。许多选手能快速理…...

WzComparerR2完整指南:解密冒险岛WZ文件的终极工具

WzComparerR2完整指南:解密冒险岛WZ文件的终极工具 【免费下载链接】WzComparerR2 Maplestory online Extractor 项目地址: https://gitcode.com/gh_mirrors/wz/WzComparerR2 WzComparerR2是一款专门用于解析和提取《冒险岛》(MapleStory&#xf…...

深度解析|MiniMax M2.7:开启模型自我进化的 Agent 旗舰,重新定义国产大模型天花板

摘要2026 年 3 月 18 日,MiniMax(稀宇科技)正式发布 M2 系列第三代旗舰大模型 ——MiniMax M2.7,以 “全球首个原生支持自我进化的文本大模型” 为核心标签,凭借 MoE 稀疏架构、200K 超长上下文、顶尖 Agent 协作能力与…...

EndNote隐藏玩法:结合Zotero和浏览器插件,打造你的全自动文献流水线

EndNote隐藏玩法:结合Zotero和浏览器插件,打造你的全自动文献流水线 当你正在为下周的组会疯狂赶进度时,突然在PubMed发现一篇完美匹配研究方向的论文。传统做法是什么?复制标题→打开EndNote→手动输入信息→下载PDF→拖入附件→…...

AutoClicker:解放你的双手,告别重复鼠标点击的烦恼

AutoClicker:解放你的双手,告别重复鼠标点击的烦恼 【免费下载链接】AutoClicker AutoClicker is a useful simple tool for automating mouse clicks. 项目地址: https://gitcode.com/gh_mirrors/au/AutoClicker 你是否曾经因为需要重复点击某个…...

我的小车转弯老翻车?用STM32+MPU6050状态机实现精准90度转向的保姆级教程

STM32MPU6050状态机实现智能小车精准转向的工程实践 智能小车在自动导航中最令人头疼的问题莫过于转弯角度失控——要么转不足90度卡在墙角,要么转过了头原地打转。这种"转向焦虑"背后,其实是传感器数据处理与控制逻辑的耦合问题。本文将分享如…...

Onekey终极教程:3分钟学会免费获取Steam游戏清单的完整指南

Onekey终极教程:3分钟学会免费获取Steam游戏清单的完整指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为复杂的Steam游戏清单下载而头疼吗?Onekey作为一款完全免…...

深入TI毫米波雷达数据流:从IWR6843AOP的BSS射频到DSS点云输出,如何利用SDK 3.6进行底层调试与分析?

深入解析IWR6843AOP毫米波雷达数据流:从射频前端到点云输出的全链路调试实战 毫米波雷达技术正在工业检测、智能交通和消费电子领域掀起新一轮革命,而德州仪器(TI)的IWR6843AOP芯片凭借其集成化设计和高性能信号处理能力&#xff…...

抖音无水印视频下载完整指南:2种简单方法快速保存高清内容

抖音无水印视频下载完整指南:2种简单方法快速保存高清内容 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 想要保…...

Electron打包winCodeSign下载失败?别慌,手把手教你手动下载并配置这三个依赖包(附国内镜像源)

Electron打包winCodeSign下载失败?完整解决方案与国内镜像配置指南 最近在给Electron项目打包时,你是否也遇到过这样的报错?终端里赫然显示Get "https://github.com/electron-userland/electron-builder-binaries/releases/download/wi…...

Phi-3.5-mini-instruct入门必看:Chainlit消息流控制与响应格式定制

Phi-3.5-mini-instruct入门必看:Chainlit消息流控制与响应格式定制 1. 认识Phi-3.5-mini-instruct模型 Phi-3.5-mini-instruct是一个轻量级但功能强大的开源文本生成模型。它基于Phi-3模型家族构建,采用了高质量的训练数据集,特别注重推理能…...

早市摊位预约管理系统 微信小程序 商场摊位租赁预约系统

目录早市摊位预约管理系统微信小程序摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!早市摊位预约管理系统微信小程序摘要 该系统为商场或早市管理者提供数字化摊位租赁管理工具,通过微信小程序实现商户在线预约…...

AI抠图免费哪个好用?2026年实测对比,这款微信小程序绝了

最近有个朋友问我,"现在AI抠图这么多,到底哪个免费工具最好用?"说实话,我也是被这个问题问得多了,干脆把自己用过的几款都测试了一遍,今天就来给大家分享一下真实的体验。为什么现在那么多人用AI…...

三步掌握Mem Reduct:让Windows内存清理工具发挥最大效能

三步掌握Mem Reduct:让Windows内存清理工具发挥最大效能 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...

终极指南:5分钟让Axure RP说中文,告别英文界面困扰

终极指南:5分钟让Axure RP说中文,告别英文界面困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 你是否…...

KMS_VL_ALL_AIO:智能激活解决方案,一键解决Windows和Office激活难题

KMS_VL_ALL_AIO:智能激活解决方案,一键解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为复杂的Windows和Office激活流程而烦恼吗&#…...

VLA模型鲁棒性测试:多模态协同与工业实践

1. 项目背景与核心价值在计算机视觉与多模态学习领域,模型的鲁棒性一直是决定其能否投入实际应用的关键指标。VLA(Vision-Language-Action)模型作为当前最前沿的多模态架构,其性能表现直接影响着智能交互、自动驾驶、工业质检等关…...

别再只盯着支持度了!用Python实战Apriori算法,手把手教你挖掘超市购物篮里的‘啤酒与尿布’

啤酒与尿布之外:用Python实战关联规则挖掘的三大黄金指标 超市货架上"啤酒与尿布"的经典组合早已成为数据挖掘领域的都市传说,但现实中90%的分析师可能正在犯一个致命错误——过度依赖单一指标得出虚假关联。本文将用Python带你穿透数据迷雾&a…...

如何高效使用Uni-Mol:药物研发的终极3D分子分析指南

如何高效使用Uni-Mol:药物研发的终极3D分子分析指南 【免费下载链接】Uni-Mol Official Repository for the Uni-Mol Series Methods 项目地址: https://gitcode.com/gh_mirrors/un/Uni-Mol Uni-Mol是业界领先的3D分子表示学习框架,为药物设计领域…...

BitNet b1.58-2B-4T-GGUF一文详解:GGUF格式适配、bitnet.cpp编译与加载逻辑

BitNet b1.58-2B-4T-GGUF一文详解:GGUF格式适配、bitnet.cpp编译与加载逻辑 1. 项目概述 BitNet b1.58-2B-4T-GGUF 是一款突破性的大语言模型,采用创新的1.58-bit量化技术。这个模型将传统神经网络权重压缩到仅使用-1、0、1三个值表示,平均…...

EasyRAG:轻量级RAG框架快速构建智能知识库应用

1. 项目概述:当RAG遇上“简单”二字最近在折腾大模型应用落地的朋友,估计没少被“RAG”这个词刷屏。RAG,也就是检索增强生成,它解决了大模型“一本正经胡说八道”和知识更新慢的痛点,成了让AI应用真正“可用”的关键技…...

【flutter for open harmony】第三方库Flutter 鸿蒙版 购物车 实战指南(适配 1.0.0)✨

【flutter for open harmony】第三方库Flutter 鸿蒙版 购物车 实战指南(适配 1.0.0)✨ Flutter 三方库 cached_network_image 的鸿蒙化适配与实战指南 欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 本文详细介绍…...

ComfyUI-Manager:3大核心功能彻底解决AI绘画插件管理难题

ComfyUI-Manager:3大核心功能彻底解决AI绘画插件管理难题 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various cu…...