关于qemu的二三事(3)————如何给qemu打patch

AFL QEMU模式安装报错(afl-2.52b & qemu-2.10.0)[已解决] 搭建afl-qemu模块的时候,碰到了如下报错: /opt/AFL/qemu_mode/qemu-2.10.0/linux-user/ioctls.h:174:9: error: ‘SIOCGSTAMPNS’ undeclared here (not in a function); did you mean ‘SIOCGSTAMP_OLD’? 174 | IOCTL(SIOCGSTAMPNS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timespec))) | ^~~~~~~~~~~~ 阅读详情


其实这篇文章应该放在这个系列的后面说比较合适,但是考虑到下面要展开的关于qemu源码分析的内容比较耗时间,所以就先把不那么耗时间的文章先写出来。


标题这里所说的打patch,是指把代码推送到qemu社区。

我们知道,在github上边是有qemu的主页的,qemu下边有一堆项目,不仅仅是qemu,还有ipxe、u-boot、seabios啊一堆很牛逼的项目。

那我们在 qemu/qemu  点进去,首当其冲看到这么一句话:

Official QEMU mirror. Please see http://wiki.qemu.org/Contribute/SubmitAPatch for how to submit changes to QEMU. Pull Requests are ignored.http://www.qemu.org


意思就是说,在github上边这个页面只是个mirror,给你下代码玩的,想提交patch,您还是仔细看看wiki,按照老规矩我们发到社区里面maillist讨论吧。这个github页面不接受您任何pull request,您看看,惊不惊喜?刺不刺激?开不开心?哈哈哈


言归正传,我们还是来说说怎么把patch发到社区并讨论吧。

上边提到了一个链接,里面很详细的指出了发patch要经过怎么样的流程,我来简单总结一下,主要内容其实还是来自于这个wiki:


首先呢你要用  git format-patch 把patchfile弄好,然后按照下面的来:


1, 写patch,要注意以下几个方面

1)codestyle的问题,qemu提供了一个检查工具,在源码目录的 .script/checkpatch.pl,

跑一下 checkpatch.pl  <patchfile>,会有代码检查结果的提示,代码不规范的同学们自求多福吧。

2)你的patch最好针对的是master而不是其他的branch;

3)如果代码太多,最好分成几个patchfile;

4)要发有用的patch,那种formatting啊codestyle啊whitespace啊什么乱七八糟的玩意儿无卵用就不要专门发patch来哔哔了;

5)commit log要简洁有力清晰;

2,patch提交,

简单来说,就是要用git -sendmail来发patchfile,要CC给相应源码的maintainer

1)该把patch发给哪个maintainer?

qemu提供了一个脚本来让你知道, ./scripts/get_maintainer.pl

比如说,你给cpus.c 这个文件打patch,你就跑一下

./scripts/get_maintainer.pl -f cpus.c
然后你就看到:

[root@localhost qemu]# ./scripts/get_maintainer.pl -f cpus.c
Paolo Bonzini <pbonzini@redhat.com> (maintainer:Overall)
Peter Crosthwaite <crosthwaite.peter@gmail.com> (maintainer:Overall)
Richard Henderson <rth@twiddle.net> (maintainer:Overall)
qemu-devel@nongnu.org (open list:Overall)

上边就列出了相关源码或者说feature的maintainer的邮箱,发patch的时候需要CC给他们。


2)不要以附件的形式发patch;

3)要用git  sendmail发patch;

发之前可以先编辑一下cover-letter,介绍和解释一下patch的内容、原因,

4)patch的邮件里面要有"From:" and "Signed-off-by:"

5)发送一个包含有多个patchfile的patch时,要写cover-letter解释介绍你的patch作用和目的;

6)如果有必要,请加上RFC的标记,

比如"[PATCH RFC v2]",使用git format-patch --subject-prefix=RFC可以帮你搞定

RFC,即request for comments

3,参与code review

1)要解决code review中发现的问题;

不是patch发出来就万事大吉,社区讨论的时候可能会发现你的一些bug和问题,

要持续跟进和解决,解决之后要发出新版本的patch;

2)社区讨论的时候会给你的patch加上comments,要保持关注;

一般来说,这些人都是资深的工程师和大牛,很多人都是一针见血,

而且人家百忙之中review你的patch,你得回报以尊重。

3)修改后的patch再发的时候要加上版本标记,比如V2、V3。。。。

4)在后续版本的patch需要给指出与上个版本的不同,一般来说git formatpatch做的很完善了;

4,小技巧

1)review了别人的patch,写comments的时候最好加上Reviewed-by的标记;

2)如果patch发出去之后没有回应,一两周之后可以发一个ping的邮件催一催;

3)你的patch如果经过充分讨论之后,maintainer会帮你发pull request到master,你可能需要rebase或者解决conflict;

4)没事多去review别人的patch,给社区多做贡献,哈哈哈


说一点我自己的体会:

古龙说,有人的地方就有江湖。开源社区也不例外,你若是大牛,你发出的patch很快就有人回应;你是无名之辈,你的patch如果不是那种石破天惊的,很可能不多久就泯然众人矣。我自己就是个例子,发了一个vcpu-pin的patch,来直接设定qemu里面虚拟机的cpu affinity,结果没人鸟,泯然众人矣。

我自己发到自己的github上了,欢迎大家探讨。如果觉得对于自己的项目有用,欢迎拿去用。

地址附上: https://github.com/BenyuXu/qemu/pull/1







【virtiofs】ubuntu24.04+qemu7.0调试virtiofs 编译时会出现找不到.stamp_downloaded,通过在对应目录下创建.stamp_downloaded文件解决。编译后在build/tools/virtiofsd/virtiofsd。挂载成功后guest os与host os共享$SHARE_DIR目录。dax-2022-05-17-qemu7.0会自带virtiofsd。从 QEMU 源码生成适用于 virt 机器的 DTB。或者使用qemu自带的virtiofsd。先启动virtiofsd后启动qemu。打开.config配置。 阅读详情

相关推荐

qemu-patch.diff

install parsec3.0 for gem5 on arm architecture. qemu-patch.diff

如何给 qemu 提交补丁

Submitting a Patch — QEMU documentation Submitting a Patch QEMU welcomes contributions of code (either fixing bugs or adding new functionality). However, we get a lot of patches, and so we have some guidelines about submitting patches. If you follow th

RToax 894

基于RYU+Mininet的SDN校园网络实战:从零搭建虚拟化实验环境

本文详细介绍了如何利用RYU控制器和Mininet搭建SDN校园网络实验环境,从Ubuntu虚拟机准备到网络拓扑设计,再到关键网络功能实现。通过实战案例展示SDN在校园网络中的应用优势,包括简化配置、提升效率等,为网络工程师和学生提供了一套完整的虚拟化实验方案。

weixin_30872499的博客 457

Qemu-6.1.0多热补丁管理

Qemu-6.1.0多补丁管理 荣涛 2021年10月13日 1. 引言 参照之前发布的文章 WIKI:Qemu-6.1.0单热补丁示例,对Qemu-6.1.0单个热补丁进行详细讲解,在文章WIKI:libcareplus多补丁管理开发了多补丁管理的功能。 本文主要介绍Qemu-6.1.0的多补丁管理。本文的测示例结构伪代码为: 1.1. 测试步骤 整体流程比较简单,简言之就是加载补丁、查看补丁、卸载补丁。 修改Qemu-6.1.0源代码,生成补丁文本文件; 使用libcareplus脚本libca

RToax 1090

群晖Web Station实战:从零搭建个人静态导航站

本文详细介绍了如何利用群晖NAS自带的Web Station套件,从零开始搭建个人静态导航站。通过安装Web Station、上传静态网站源码、配置网页服务与网络门户等步骤,无需代码基础即可实现内网访问。文章还分享了文件权限设置、个性化定制及常见问题排查等实用技巧,帮助用户高效管理个人常用网址,充分挖掘NAS的服务器潜能。

tea88的博客 1330

机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2002

libvmi在qemu上的patch解读—kvm-qemu-v2.8-libvmi.patch

(1)打开一个UNIX socket,用于对客户机物理内存的访问。具体做法:创建在固定的端口上建立本地通信的监听服务,服务程序设置为函数memory_access_thread(……)。(2)accept连接请求,调用函数connection_handler(...)来处理请求,最后关闭连接。(3)解析请求中的数据,并根据请求数据选择具体的处理函数,一般有两个主要的任务—内存读、内存写,然后调用内...

北方南方 973

大模型——AI对话四象限

{ "摘要": "文章揭示了90%的人不会有效与AI沟通的问题,指出简单粗暴的提问只能得到标准答案。作者提出'AI对话四象限'模型:1)双方都懂时提效;2)AI懂但需学会分层提问;3)共同探索未知领域;4)向AI传授独家知识。强调沟通技巧的重要性,认为会提问的人不会被AI替代。最后呼吁读者尝试四象限思维,与AI碰撞火花。" }

312

如何打patch

diff -urN  old/ new/  > mysoft.patch   patch -po

旁门左道 796

AI Agent在核电站安全监控中的应用

核电站作为一种高效的能源生产设施,其安全问题一直是全球关注的焦点。任何安全事故都可能导致严重的人员伤亡、环境污染和经济损失。传统的核电站安全监控系统主要依赖于人工操作和固定规则的监控算法,存在监控效率低、无法实时应对复杂情况等问题。本文章的目的在于探讨如何利用AI Agent技术提升核电站安全监控的智能化水平,实现实时、准确的监测和智能决策。范围涵盖了AI Agent的基本原理、在核电站安全监控中的应用场景、相关算法和数学模型,以及实际项目的开发和应用。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 371

YOLO26改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力YOLO26精度提升

RFAConv:创新空间注意力和标准卷积运算感受野空间特征是针对卷积核设计的,根据卷积核大小动态生成。以3×3卷积核为例,它由非重叠滑动窗口组成,每个窗口代表一个感受野滑块。

Limiiiing的博客 194

从零使用qemu模拟器搭建arm运行环境

本文从零开始介绍如何搭建qemu+arm的运行环境

海枫的专栏 8万+

Dify智能体开发:大语言模型(LLM)问题分类

通过定义分类描述,问题分类器能够根据用户输入,使用 LLM 推理与之相匹配的分类并输出分类结果,向下游节点提供更加精确的信息。

王国平的博客 2249

开源patch提交备忘

虚拟化libvirt/qemu组件patch提交教程

Take Easy,Work Hard! 1925

Midscene.js(1):Chrome 插件实战之基于 AI 驱动 WEB UI 自动化测试「喂饭教程」

Midscene.js 是一款开源的AI驱动UI自动化工具,支持自然语言交互、数据提取、断言验证等多种功能。自然语言交互。本文将以 Midscene.js Chrome 插件为例,带你从零上手,体验如何用最简单的方式实现高效、智能的UI自动化测试。

blues_C的博客 4404

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

qemu中启动versatilepb,qemu挂起问题解决

最近用qemu模拟versatilepb机器,从网上找了方法制作文件系统,文件系统制作可参照:http://balau82.wordpress.com/2010/03/27/busybox-for-arm-on-qemu/。 我这里假设文件系统制作好了,我的qemu命令是:#qemu-system-arm -M versatilepb -m 256M -kernel zImage

lvqqrainbow的专栏 2982

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

201312qemu新patch一览

1.  引入vmsplice对localhost mirgratgion的改进 localhost主要用于对虚拟机进行live upgrade。 splice是linxu的一个系统调用,作用是将数据在文件描述符和pipe间移动,而不需要在用户空间进行拷贝数据的过程。 vmsplice在pipe和用户空间移动数据而不许要拷贝。通过内存页面的remapping来实现因此不需要真的拷贝任何数据。

追寻神迹 2201

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

QEMU中模拟AIX7.2(Centos7虚机操作)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34112030的博客 3218

qemu

QEMU 的簡介請見 QEMU internals。 建置 QEMU QEMU 1.0 預設會編譯成 PIE,這對舊版的 GDB 會有影響。強制開啟 IO thread。使用 Clang 編譯 QEMU 會出現以下訊息1)2)3)。 In file included from /z/tmp/chenwj/qemu-1.0/user-exec.c:21: /z/tmp/chenw

我们这里还有鱼······ 8740

Contribute/Submit A QEMU Patch

http://wiki.qemu.org/Contribute/SubmitAPatchQEMU welcomes contributions of code (either fixing bugs or adding new functionality). However, we get a lot of patches, and so we have some guidelines about...

linux内核 908

利用Qemu + Buildroot 进行内核源码级调试

利用Qemu + Buildroot 进行内核源码级调试概要:最近想研究下内核里Bridge的具体实现过程,加之公司使用的嵌入式开发环境是基于Buildroot的,想着借用Buildroot来编译qemu可以使用的内核和文件系统,顺便熟悉下Buildroot环境,也省去自己编译内核通过busybox制作文件系统的麻烦。一、环境1. 宿主机(64位)系统:$ lsb_release -d

谢健的专栏 6123

深入FSP二进制:手把手教你解析QEMU FSP的头部结构与Patch过程

本文深入解析QEMU FSP的二进制结构,详细讲解其头部组成与Patch过程。通过实战演示,帮助开发者理解FSP-T、FSP-M和FSP-S的初始化机制,并掌握UEFI环境下的调试技巧,为固件开发和性能优化提供实用指导。

weixin_30596165的博客 349

ubuntu中,在qemu方式运行xinu

操作系统设计很头疼,本来不想学的,后来学分不够,只好来上。 这次的实验拖了一个星期才动手。因为从没学过什么xinu,一听就很头疼。 而且我还不想装虚拟机。不过搞一搞也快。 …… 1.安装Ubuntu系统 之前有个实验是在virtualbox上做的,所以我就在上面装ubuntu了。 这个过程网上搜搜都有,我就不说了。 2.进行qemu,make安装 sudo apt install qemu-system-x86 sudo apt install make(如果我没记错) (这图差不多就是install

SCPmaster的博客 1120

qemu-tcmu介绍

TODO。

czw 240

qemu添加一个自定义设备并在linux内核使用

挂载sysbus上,同时该设备支持读写及复位操作;默认设备buffer 存储0x5a数据;寄存器地址操作描述0x0~0x3只读,设备的chip_id(4bytes)chip id0x8写入1后会复位,所有ROM寄存器值变成0x5A复位寄存器0x10~0xFFROM可用的读写区域,初始值为0x5A;ROM存储空间使用好qemu能够有效的提升我们学习OS/驱动的效率,理解和掌握添加虚拟设备在实际工作和驱动自动化测试中也有一定作用;

yanghao23的专栏 2234
上一篇: 当我们谈论qemu & kvm & libvert的时候,我们在谈论什么?
下一篇: 虚拟化相关概念与技术整理(2)——硬件辅助虚拟化简介
Benjamin_Xu
博客等级 码龄14年 46粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值