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 用户态测试程序查看

 
Relate Posts
在 CentOS 9 上编译 DPDK 与 pktgen 24.07
Lazy loaded image
CentOS 9 DPDK 源码编译
Lazy loaded image
在 CentOS 9 上启用 CRB 源
Lazy loaded image
在 Arch Linux 上通过 OneDrive 进行 rime 的用户词库同步
Lazy loaded image
使用 gdb + qemu 进行驱动程序调试
Lazy loaded image
树莓派寄存器物理基地址查询
Lazy loaded image
Ubuntu 22.04 编译调试内核时,手动生成 qemu 能够使用的 rootfs如何在 ubuntu 上自编译内核的时候手动生成 initramfs
Loading...
tangcuyu
tangcuyu
一只尘世中努力争渡的🐠
Latest posts
自建 tailscaler derper 中继服务
2024-11-9
在 CentOS 9 上编译 DPDK 与 pktgen 24.07
2024-11-1
CentOS 9 DPDK 源码编译
2024-10-31
在 CentOS 9 上启用 CRB 源
2024-10-16
Rime 小狼毫定时用户词库同步设置
2024-5-1
在 Arch Linux 上通过 OneDrive 进行 rime 的用户词库同步
2024-4-20