Qemu 调试内核x86

Qemu 调试内核x86

准备busybox

下载地址:https://busybox.net/downloads/
调试中使用的是busybox-1.24.0版本,下载的是busybox-1.24.0.tar.bz2文件
规划好文件路径,解压busybox-1.24.0.tar.bz2
tar -jxvf busybox-1.24.0.tar.bz2
cd busybox-1.24.0

  1. 编译配置 make menuconfig
    开启静态编译, 避免链接shared libraries
    Busybox Settings --→
    Build Options --→
    在这里插入图片描述

  2. 在64位机器上编译成i386, 32位
    (-m32 -march=i386) Additional CFLAGS
    (-m32) Additional LDFLAGS
    在这里插入图片描述

  3. 编译
    make -j4(根据电脑的能力选择多线程编译)

  4. 安装
    指定到安装目录,这样就可以利用同一套源代码来编译多个不同平台的镜像。
    make install CONFIG_PREFIX=…/obj/busybox-x86/

  5. 制作根文件系统
    搭建最小跟文件系统,最小根文件系统包括
    (1) /dev/console
    /dev/null
    (2) init => busybox
    (3) /etc/inittab
    (4) 配置文件指定的程序
    (5) C库

  6. 拷贝busybox 安装文件(busybox-x86/*)到kernel根目下的_install目录
    cd _install
    建立dev文件目录
    创建 console, null节点
    sudo mknod console c 5 1
    sudo mknod null c 1 3

    建立etc 文件目录
    创建inittab文件,busybox中init会解析这个文件
    ::sysinit:/etc/init.d/rcS
    ::askfirst:-/bin/sh
    ::ctrlaltdel:/bin/umount -a -r

    创建init.d/rcS文件
    mkdir -p /proc
    mkdir -p /tmp
    mkdir -p /sys
    /bin/mount -a
    mdev -s
    其中的 mount -a, 就是挂载 /etc/fstab文件指定的文件系统。
    
    创建fstab文件
    proc /proc proc defaults 0 0
    tmpfs /tmp tmpfs defaults 0 0
    sysfs /sys sysfs defaults 0 0
    debugfs /sys/kernel/debug debugfs defaults 0 0
    
  7. 内核编译
    下载内核:https://www.kernel.org/

    配置内核:
    make i386_defconfig

系统默认是slub如果调试slab可以按以下修改步骤执行。
make menuconfig
General setup —>
Choose SLAB allocator (SLAB) —>
在这里插入图片描述

  1. 指定文件系统
    General setup —>
    Initramfs source file(s)
    在这里插入图片描述
    _install 是创建的文件系统目录,从busybox目录中拷贝到内核的根目录

  2. 编译内核
    make bzImage -j4(根据电脑的能力选择多线程编译)

  3. qemu 运行
    在这里插入图片描述

注:qemu的版本与内核的版本会影响qemu的运行状态
ubuntu14.4默认的qemu只能调试4.8以下版本的内核,调试高版本的qemu不能运行,升级了ubuntu到16.04才能调试4.8版本(含)以上的内核。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值