静态编译qemu_Linux内核调试之:ddd+qemu+busybox环境配置

最近由于课程需要,对于Linux内核下ddd+qemu+busybox调试环境进行了配置。期间参考了不少的网上资料,如下:

最后在几经折腾之下,终于完成了正确的配置,所以写篇blog来记录下。(ps:编译内核好费时间。)

一、环境搭建

1.编译内核打开终端输入如下命令

mkdir -p ~/misc/qemu

cd ~/misc/qemu

wgethttp://www.kernel.org/pub/linux/kernel/v3.0/linux-3.5.4.tar.bz2

tar xvfj linux-3.5.4.tar.bz2

cd linux-3.5.4

make defconfig

make menuconfig(选中

kernelhacking –> kernel debugging –> compile the kernel with debug info

kernelhacking –> compile the kernel with frame pointers)

make

cparch/x86/boot/bzImage ..

2.安装qemu

1)去群共享下载qemu安装文件

2)在安装qemu前先要安装库文件。打开终端输入sudo apt-get install gcc libsdl1.2-dev zlib1g-devlibasound2-dev pkg-config libgnutls-dev pciutils-dev

3)切换到qemu的源码目录输入./configure生成makefile

4)输入make开始编译(如果缺automake包,输入sudo apt-get install autoconf automake libtool安装)

5)输入sudomake install开始安装

3.制作根文件系统,打开终端输入以下命令

cd ~/misc/qemu

dd if=/dev/zero of=rootfs.img bs=1M count=10创建大小为1M到根文件系统

mkfs.ext3 rootfs.img以ext3类型来格式化

mkdir rootfs

sudo mount -t ext3 -o loop rootfs.img rootfs将其mount到新创建到目录上

cd rootfs

mkdir dev proc sys创建三个目录

4.安装busybox到根文件系统

1)打开终端切换到busybox的源码目录,输入命令make menuconfig配置编译选项

a)选择静态编译:BusyboxSettings->Build options->Build Busybox as a static binary

b)取消选择Networkingutilities->iptunel

c)取消选择Networkingutilities->inetd

2)输入make开始编译

3)输入命令make installCONFIG_PREFIX=~/misc/qemu/rootfs把busybox文件系统安装到根文件系统中

4)输入cd ~/misc/qemu切换到qemu目录

5)输入命令sudo umount rootfs卸载根文件系统

二、验证流程

1启动qemu

1)打开终端输入,输入命令cd ~/misc/qemu切换到~/misc/qemu目录

2)输入qemu-system-i386  -S -kernel bzImage -hdarootfs.img -append "root=/dev/sda init=/bin/ash"启动qemu

3)用鼠标点击qemu窗口,然后ctrl+alt+2切换到控制台,输入“gdbservertcp::1234

4)打开另外一个终端。输入命令cd ~/misc/qemu/linux-3.5.4切换到~/misc/qemu/linux-3.5.4目录

5)运行dddvmlinux(未安装ddd的输入sudo apt-get install ddd安装)

6)在gdb的命令行中输入命令target remote localhost:1234将qemu虚拟机连接到ddd的控制台

自此就可以通过ddd的控制台用gdb的命令来查看源码的运行信息了。大家也可以将自己需要测试的程序编译好考到根文件系统中运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值