参考链接:https://cloud.tencent.com/developer/article/2363207?from=15425
linux版本:ubuntu22.04
一级标题
1 安装qemu/kvm
$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
2启动libvertd服务
$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd
3创建虚拟机
qemu-img create -f qcow2 ubuntutest.img 60G
4往镜像中安装操作系统
qemu-system-x86_64 -enable-kvm -name ubuntutest -m 4096 -hda ubuntutest.img -cdrom ~/Downloads/ubuntu-24.04-desktop-amd64.iso -boot d
我的iso文件位置是在~/Downloads/ubuntu-24.04-desktop-amd64.iso,大家根据自己的更改即可
输入完上面的命令就弹出这个界面点击回车,等会就到这个页面
熟悉的ubuntu启动界面,然后就跳到安装页面,一路默认即可。等着装好
点击Restart now,过会儿弹出这界面
点击回车,又到刚才那界面
直接点击右上角的叉。
在输入下面的命令
qemu-system-x86_64 -enable-kvm -name ubuntutest -m 4096 -hda ubuntutest.img -boot d
就启动了刚才装的操作系统
设置共享文件
先把刚才开启的虚拟机关掉
然后在本地输入以下命令
qemu-system-x86_64 -enable-kvm -name ubuntutest -m 4096 -hda ubuntutest.img -boot d -virtfs local,path=/home/pipishuo/KVM_Share/,mount_tag=hostshare,security_model=none,id=hostshare
上面的命令会启动虚拟机,path=/home/pipishuo/KVM_Share/ 这是我自己电脑要共享的目录 大家自行更改
启动完成后在虚拟机中输入
sudo mount -t 9p hostshare /home/ppshuo/share
/home/ppshuo/share 也是我自己虚拟机中的目录 大家自行更改
完成后在虚拟机中打开共享目录即可看到文件共享了
编译LinuxKernel
参考链接:https://phoenixnap.com/kb/build-linux-kernel
- 进入目录,我是把源码文件放到共享目录底下了,这样方便虚拟机安装编译好的内核,也方便本地机去调试
2)安装依赖包
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
3)复制配置文件
cp -v /boot/config-$(uname -r) .config
4)配置内核
make menuconfig
按照这个路径把CONFIG_RANDOMIZE_BASE关闭
具体演示
回车,往下找到这个
按n键,点保存
点ok
退出
执行这两个命令,跟什么安全证书有关
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
make
make -j8
回车回车
等一会儿 编完后打开虚拟机
挂载共享目录,这个是每次打开虚拟机都要挂的,要不然共享不了
sudo mount -t 9p hostshare /home/ppshuo/share
进入共享目录
执行命令
sudo make modules_install
oh shit,忘安装make
sudo apt-get install make
执行命令
sudo make modules_install
执行完如下:
执行命令
sudo make install
执行完如下
重启虚拟机
执行命令
uname -r
可以看到是6.10.0 至于后面的ModifyFs,是我自己之前弄的,无伤大雅。总之是装成功了。
gdb连接
把虚拟机关掉,在本地机中打开源码目录
执行命令
make scripts_gdb
执行命令
vim ~/.gdbinit
添加这条语句
add-auto-load-safe-path /home/pipishuo/KVM_Share/linux/linux/scripts/gdb/vmlinux-gdb.py
那个py文件的路径根据各位源码目录来更改
运行虚拟机
qemu-system-x86_64 -enable-kvm -name ubuntutest -m 4096 -hda ubuntutest.img -boot d -virtfs local,path=/home/pipishuo/KVM_Share/,mount_tag=hostshare,security_model=none,id=hostshare -s -S
注意 这次加了两个参数 -s -S
效果如下
在源码路径下执行命令
gdb vmlinux
效果如下
接着执行
(gdb) target remote :1234
效果如下
接着执行
(gdb) c
效果如下
虚拟机也不一样了
也运行起来了
在gdb那界面按ctrl-c
效果如下
设个断点
b do_sys_open
c
效果如下
这就进来了 ,虚拟机那也卡在这了,就可以和正常调试软件一样调试linuxKernel了
关于gdb的调试语法参考链接:https://docs.kernel.org/dev-tools/gdb-kernel-debugging.html