linux 5.6.18 内核编译 安装 qemu安装

【Linux 内核系列】基于 VMware Ubuntu18 编译调试 Linux 内核
【1】环境与工具简介

环境    版本
Win10    Windows 10 家庭中文版
VMware    
15

Ubuntu    18.04
Qemu    2.12.1
Busybox    1.35.0
Linux 内核    5.6.18
VsCode    1.68.1
Qemu、Busybox、Linux内核工具资源下载链接
https://download.csdn.net/download/qq_27788177/85749771

【2】Linux 内核编译

Linux 内核源码下载链接,https://www.kernel.org/
解压 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 5.6.18 内核编译 安装 qemu安装_第1张图片

编译/安装 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 编译安装

 

Qemu 源码下载链接地址,https://download.qemu.org/


解压 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 编译与使用

Busybox 源码下载链接地址,https://busybox.net/downloads/
配置 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内核环境搭建
————————————————
原文链接:https://blog.csdn.net/qq_27788177/article/details/125409027

你可能感兴趣的:(linux,ubuntu)