2024下半年SIG-Main周会公告&会议总结

周会时间&地址

  • 会议周期及时间: SIG-Main将从2024年8月1日起,每两周,逢周四晚9点举行SIG会议
  • 会议号:#腾讯会议:586-9766-3285

周会要分享什么?

为了避免开发者闭门造车,也为了让大家都能对项目的整个进展有所把握,SIG周会的分享制度涉及的内容可以是对于SIG-Main涉及的技术问题的看法/思路、最近正在做的工作、进度以及遇到的需要讨论的问题,或者是过往的一些开发经验,并不需要是成型的子项目或者成果,大家不必担心自己还没成型的产出而不敢分享汇报。作为一个加强沟通的常态化方式,希望大家积极参与。

为什么轮流分享?怎么轮流?

为了让这个制度更好的执行下去,考虑到由于目前 SIG-MainSIG-VirtualizationSIG-Observation.TestSIG-Cloud_ProviderSIG-MM 以及做编辑器的同学,都是合并开会的,人数比较多,范围比较广,我们将统计这几个SIG中的成员,每次会议轮流让两位同学来做主要分享和汇报,其他同学可以以自由讨论的方式进行。

目前项目组内部已经在前两次会议中做过分享的同学有:谢润霖、陈林峰、杨璐玮、操丰毅,所以结合其他成员员,我们制定了一个初步的基本顺序,如无意外情况就按照这个顺序进行,如果个人有特殊情况,请自行联系一下其他同学进行交换。

如果我们有遗漏或者有其他问题,请联系我~

如果轮到你了,你应该提前准备什么

周会之前,我们会在公众号上提前几天发布预告,所以你需要至少提前两天准备好分享的内容和材料(简明的PPT或者文档),并把分享汇报的标题在【2024下半年】SIG-Main周会议题&内容分享征集 下回帖,后续交由运营同学去发表公众号推文。

序号 汇报人1 汇报人2
1 谢润霖 陈林峰
2 杨璐玮 操丰毅
3 龙进 池克俭
4 黄铭涛 何懿聪
5 侯嘉滢 曾俊
6 许梓豪 许浩捷
7 胡兆朋 庄凯烨
8 周泳森 朱炜豪
9 周凯韬

【公告】原定于 8.29 周四晚九点的 SIG-Main 周会推迟到本周日(9.1)晚上九点

20240829(0901) Sig-Main会议总结

分享人: 池克俭

主题:关于引入自动化内核测试的设想

关于引入自动化内核测试的方案设想

内部测试:syzkaller 模糊测试

Syzkaller 是一个无监督的、覆盖率引导的内核模糊测试工具,它能够自动化地生成随机的系统调用序列,并将其作为测试用例输入到内核中,以此来发现内核中可能存在的漏洞。syzkaller是谷歌开源的,业界正在使用的解决方案。

外部测试:基于固定用例与UI的测试

模拟开发者的行为,例如可以通过 VNC 拿到 QEMU 里面的数据,在启动阶段定时每隔一小段时间来截一次图,判断现在这个状态是卡住了,还是说崩了,还是说正确正常的进入到了系统里面。

而当然这里其实有可能可以做更多的工作,比如说基于用例的去做,进到系统之后,可以跑一些现有的拿来做单元测试的用户空间的测试程序。好处是这是一个固定用测试用例的,对比起模糊测试,会更加精准,能清楚的知道各个模块的测试覆盖情况;并且时间上开销也比较小。

可能需要使用 AI 或者 OCR 来辅助实现这样的需求。

讨论关于引入syzkaller模糊测试的方案

在使用 Syzkaller 进行模糊测试时,需要被测的内核处于运行状态。Syzkaller 通过生成系统调用并将其发送到运行中的内核来执行测试。这些系统调用序列是随机生成的,目的是尽可能覆盖内核代码的各种执行路径,以便发现潜在的错误或漏洞。

Syzkaller 的工作流程通常包括以下几个步骤:

  1. 启动 Syzkaller 管理器(syz-manager),它会根据配置文件启动一个或多个虚拟机(QEMU)或物理机。

管理器会将 Syzkaller 生成的测试用例(系统调用序列)发送到虚拟机或物理机上运行的内核中。

内核执行这些系统调用,并产生执行结果,如正常返回、异常、崩溃等。

  1. Syzkaller 收集执行结果,并根据结果更新其测试策略,优先执行那些能够增加代码覆盖率的测试用例。

通过持续的测试和反馈,Syzkaller 能够发现并报告内核中的错误。

  1. 在实际应用中,Syzkaller 可以配置为在隔离的环境下运行,例如通过 SSH 连接到远程物理机或使用虚拟机。在这种情况下,被测内核需要在目标机器上运行,并且 Syzkaller 需要能够通过网络与之通信。
  • 明确引入syzkaller框架的方式是在测试环境(Linux)物理机上使用 qemu,远程(使用ssh等方式)在DragonOS里面跑一个进程,或者说启动相应的测试程序,捕获对应的信息。
需要引入基础支持
  • 需要考虑重新考察支持 no-graphic

  • sshd的支持

打包磁盘镜像的问题
  • 调查能否在非特权级下完成磁盘进行打包

  • 调查特权级打包磁盘镜像后是否能够在 GitHub CI上运行

  • 参考 asterinas 调研一下是怎么完成这个流程的

  • 相关的讨论: