代码拉取完成,页面将自动刷新
在Linux终端命令行上执行如下:
```
git clone https://gitee.com/mengning997/linuxkernel.git
cd linuxkernel/kerneldebuging
sudo ./auto-tasks.sh
# 执行如下命令会弹出QEMU窗口运行Linux内核+Alpine mini rootfs系统
qemu-system-x86_64 -kernel linux-5.4.34/arch/x86/boot/bzImage -initrd rootfs.img
# 纯命令行下启动虚拟机
qemu-system-x86_64 -kernel linux-5.4.34/arch/x86/boot/bzImage -initrd rootfs.img -nographic -append "console=ttyS0"
...
[ 2.650661] Write protecting the kernel read-only data: 20480k
[ 2.653933] Freeing unused kernel image memory: 2004K
[ 2.655225] Freeing unused kernel image memory: 860K
[ 2.655516] Run /init as init process
--------------------
Wellcome MengningOS!
--------------------
/home #
```
Windows下安装 Docker Desktop
自主安装 Git 、VS Code, 并在 VS Code 中安装 Dev Container 插件。
克隆本仓库,在VS Code中打开项目,然后点击左下角远程开发,选择在容器中重新打开;最后在Terminal中执行:
cd ~
git clone https://gitee.com/mengning997/linuxkernel.git # 注意:如果要编译Linux内核一定要在Linux文件系统环境下,克隆到Windows文件系统下编译过程中会有问题!
cd linuxkernel/kerneldebuging
sudo apt-get update
sudo apt-get install -y global build-essential qemu qemu-system-x86 libncurses5-dev bison flex libssl-dev libelf-dev git wget bc cpio python gdb
make
...
[ 2.650661] Write protecting the kernel read-only data: 20480k
[ 2.653933] Freeing unused kernel image memory: 2004K
[ 2.655225] Freeing unused kernel image memory: 860K
[ 2.655516] Run /init as init process
--------------------
Wellcome MengningOS!
--------------------
/home #
为了调试重新配置内核选项。
make defconfig # Default configuration is based on 'x86_64_defconfig'
make menuconfig
# 打开debug相关选项
Kernel hacking --->
Compile-time checks and compiler options --->
[*] Compile the kernel with debug info
[*] Provide GDB scripts for kernel debugging
[*] Kernel debugging
# 关闭KASLR,否则会导致打断点失败
Processor type and features ---->
[] Randomize the address of the kernel image (KASLR)
重新编译内核。
make -j$(nproc)
VS Code调试内核
todo: .vscode/launch.json中的preLaunchTask一直处于启动过程中,似乎没有调用起来gdb?
启动内核命令
qemu-system-x86_64 -kernel linux-5.4.34/arch/x86/boot/bzImage -initrd rootfs.img -S -s
# 纯命令行下启动虚拟机
qemu-system-x86_64 -kernel linux-5.4.34/arch/x86/boot/bzImage -initrd rootfs.img -S -s -nographic -append "console=ttyS0"
启动gdb
gdb linux-5.4.34/vmlinux
(gdb) target remote:1234
(gdb) b start_kernel
(gdb) c、bt、list、next、step....
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。