type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM

0 前言

在进行内核修改开发的时候,发现如果一直在物理机上进行新内核的安装与测试,那么每次做一点修改都要进行物理机的重启让内核生效,而且如果因为操作不当,导致内核无法正常启动的话,就会导致重启失败内核陷入 panic 状态,容错率非常低,同时效率也不是很高,后面了解到可以使用 qemu 进行内核开发,在做好内核修改编译之后即可使用 qemu 进行启动测试。

1 环境准备

2 代码准备

对应的代码修改可以参考这篇文章的相关内容,我就不再进行赘述了。前面的操作完全一致,直到在安装内核部分才有所不同。

3 安装模块

命令参数解释如下:

4 手动生成 initramfs

5 生成 rootfs

qemu 启动的时候需要对应的根文件系统,原来的 busybox 因为过于简化所以有些问题,于是使用 debian 的 rootfs,具体配置方式参考我下面的文章。

6 启动 qemu

7 启动完成进行测试

  • 因为在进行修改内核的时候对系统调用进行了捕捉,同时内核模块没有加载,my_audit 函数不存在,所以大部分内核日志都在抱怨这个情况。

7.1 加载内核模块

7.2 用户态测试程序查看

 
Ubuntu 22.04 编译调试内核时,手动生成 qemu 能够使用的 rootfs如何在 ubuntu 上自编译内核的时候手动生成 initramfs