【Linux 内核系列】基于 VMware Ubuntu18 编译调试 Linux 内核

【Linux 内核系列】基于 VMware Ubuntu18 编译调试 Linux 内核

【1】环境与工具简介

环境版本
Win10Windows 10 家庭中文版
VMware

15

Ubuntu18.04
Qemu2.12.1
Busybox1.35.0
Linux 内核5.6.18
VsCode1.68.1

Qemu、Busybox、Linux内核工具资源下载链接icon-default.png?t=M5H6https://download.csdn.net/download/qq_27788177/85749771

【2】Linux 内核编译

tar -xvf linux-5.6.18.tar.xz
  • 安装相关依赖软件包
apt install flex
apt install bison
apt install libssl-dev
apt install libncurses5-dev libncursesw5-dev
  • 配置 Linux 内核
编译打开配置界面
make menuconfig

开启 Linux Debug 功能
Kernel hacking  --->
    Compile-time checks and compiler options  ---> 
        [*] Compile the kernel with debug info
        [*]   Provide GDB scripts for kernel debuggin

关闭地址随机化,否则断点无法停止
Processor type and features ---->
    [] Randomize the address of the kernel image (KASLR)

  • 编译/安装 Linux 内核
编译 Linux 内核
sudo make

生成
linux-5.6.18/arch/x86_64/boot/bzImage

安装 Linux 内核模块
sudo make modules_install

安装 Linux 内核
sudo make install
  • VMware 启动时选择新编译的 LInux 内核
重启系统
reboot

在进入 VMware 启动界面时长按 shift 键,即可进入 grub 选择界面选择对应的内核版本

【3】Qemu 编译安装

tar -xvf qemu-2.12.1.tar.xz
  • 安装相关依赖软件包
apt install zlib* zlib1g-dev
apt install build-essential pkg-config 
apt install libglib2.0-dev 
apt install binutils-dev 
apt install libboost-all-dev 
apt install autoconf libtool 
apt install libssl-dev 
apt install libpixman-1-dev 
apt install libpython-dev python-pip python-capstone 
apt install virtualenv
  • 配置、编译、安装 Qemu
./configure
make
make install

【4】Busybox 编译与使用

编译配置菜单界面
make menuconfig

配置 Busybox 为静态编译
Settings  --->
           [*] Build BusyBox as a static binary (no shared libs)
  • 制作 rootfs 并将 busybox 安装到其中
使用 dd 命令创建文件并格式化为 ext4 文件系统
dd if=/dev/zero of=rootfs.img bs=1M count=10
mkfs.ext4 rootfs.img

创建用于挂载该镜像文件的目录 fs,挂载后才能往里面写入 busybox
使用 mount 命令将 rootfs.img 挂载到 fs 目录,编译 busybox 并写入 fs 目录中
mkdir fs
sudo mount -t ext4 -o loop rootfs.img ./fs
sudo make install CONFIG_PREFIX=./fs

补充配置写入镜像的 busybox
sudo mkdir proc dev etc home mnt
sudo cp -r ../examples/bootfloppy/etc/* etc/
sudo chmod -R 777 fs/

卸载 rootfs.img
sudo umount fs

【5】Qemu 启动指定 Linux 内核以及关闭 Qemu 相关总结

Qemu 命令参数说明
-kernel # 指定编译好的内核镜像
-hda 	# 指定硬盘
-append 
“root=/dev/sda” # 指示根文件系统 
“console=ttyS0” # 把 QEMU 的输入输出定向到当前终端上
-nographic 		# 不使用图形输出窗口
-s # -gdb tcp::1234 缩写,监听 1234 端口
   # 在 GDB 中可以通过 target remote localhost:1234 连接
Qemu 启动命令

正常启动 Qemu
qemu-system-x86_64 \
    -kernel ./linux-5.6.18/arch/x86_64/boot/bzImage \
    -hda ./busybox-1.35.0/rootfs.img \
    -append "root=/dev/sda console=ttyS0 loglevel=8" \
    -nographic

启动 Qemu 并开启 GDB 监听
qemu-system-x86_64 \
    -kernel ./linux-5.6.18/arch/x86_64/boot/bzImage \
    -hda ./busybox-1.35.0/rootfs.img \
    -append "root=/dev/sda console=ttyS0 loglevel=8" \
    -nographic \
    -S \
    -s \
关闭 Qemu
Ctrl+A 松开后按 X 退出 qemu

【6】VsCode 远程调试 Linux 内核代码

  • VsCode 调试 Linux Kernel 配置
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/ubun/WorkSpace/linux-5.6.18/vmlinux", // 指定vmlinux路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",	// 指定gdb路径
            "miDebuggerServerAddress": "192.168.163.133:1234",	// gdb 连接
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

【附录】

【附录-A】VMware 进入 grub 选择界面的方式

  • VMware 启动 ubuntu 时,若想进入 grub 选择界面,在进入 VMware 启动界面时,长按 shift 键即可;

参考与致谢

本博客为博主学习笔记,同时参考了网上众博主的博文以及相关专业书籍,在此表示感谢,本文若存在不足之处,请批评指正。

【1】Linux内核编译

【2】Linux 内核调试 九:Linux 内核调试环境搭建

【3】ubuntu编译安装qemu

【4】QEMU调试Linux内核环境搭建

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值