首先,我们需要一个临时目录来构建文件系统的内容,并在其中创建标准 Linux 目录结构。 # 回到主工作目录 cd ~/debug-linux-kernel-on-qemu # 创建并进入 rootfs 构建目录 mkdir rootfs cd rootfs # 创建 Linux 基本目录结构 mkdir -p bin sbin etc proc sys dev lib usr/bin usr/sbin 这些目录是 Linux 系...
$ qemu-system-arm -M versatilepb -m 16 -kernel vmlinuz-qemu-arm-2.6.20 -append "clocksource=pit quiet rw" -S -s 4. 调试内核 这里需要有一个包含调试信息的vmlinux文件,可以直接编译http://free-electrons.com/pub/qemu/demos/arm/directfb/1.0/src/linux-2.6.20.tar.7z 如果自己不想编译的话可...
第二步:启动gdb(target=arm64)加载对应kernel Image的vmlinux, attach到指定端口即可;第三步:如果...
官方内核源码可以从 kernel.org 下载,或使用已有的内核源码。 3. Linux启动程序 使用GRUB或者其他的启动程序进行内核的启动。Linux启动程序需要包含一些必要的模块,例如文件系统模块、设备驱动模块等。 4. Debug信息 配置内核时需要开启Debug信息,这些信息可以帮助我们快速定位代码问题。 步骤一:编译内核 需要下载并编译Li...
编译调试版 Linux 内核 首先下载源代码:wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.3.7.tar.gz 具体下载哪个版本可以自己选择。然后解压缩源代码,这里假设解压到了 ~/linux-5.3.7 。然后安装编译依赖:Ubuntu sudo apt-get install build-essential libncurses-dev bison flex libssl-dev...
注意,其中的program就是vmlinux的路径,还有postRemoteConnectCommands要在连接之后先使用symbol-file命令将vscode启动gdb时默认加载的symbol清除掉,然后再使用add-symbol-file命令将各个段的symbol添加到指定位置(这些位置怎么计算来的,请观看RISC-V篇-qemu+gdb调试Linux kernel源码),否则后面debug时会有问题,比如,设置断点...
qemu-system-aarch64 -M virt -cpumax-kernel <path_to_kernel_image> -s -S 在上述命令中,将<path_to_kernel_image>替换为你编译生成的内核映像文件的路径。 在VSCode中点击调试按钮,选择"Debug Linux Kernel"配置,然后点击启动按钮。 开始调试:
1cd linux-4.14.191 2 3export ARCH=x86 4 5make x86_64_defconfig 6 7make menuconfig 在配置菜单中,启用内核debug,关闭地址随机化,不然断点处无法停止。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 1Kernel hacking ---> 2 [*] Kernel debugging 3 Compile-time checks and compiler options --...
在内核编译选项中,开启如下"Compile the kernel with debug info" Kernel hacking —> Compile-time checks and compiler options —> [ ] Compile the kernel with debug info 示意图如下,利用键盘选中debug选项,然后敲"Y"勾选: (以上是别人博客中找到,确实类似gcc编译要gdb得加-g,但是我按照默认安装最后也默认...