Ubuntu14.04安装qemu,运行linux-3.16+gdb调试

完全参考这个链接,记录一下

Ubuntu16.04 安装 qemu 运行 Linux 3.16 - 灰信网(软件开发博客聚合)

安装 qemu

sudo apt install qemu qemu-system-arm

安装交叉编译工具链
sudo apt install gcc-arm-linux-gnueabi

下载编译内核:用的是14.04,中间没有报错

wget --no-check-certificate https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz
xz -d linux-3.16.tar.xz
tar -xvf linux-3.16.tar


cd linux-3.16.82
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig
make zImage
make modules
make dtbs

把 bin 文件都放在一起:

mkdir bin
cp arch/arm/boot/zImage bin/
cp arch/arm/boot/dts/*ca9.dtb bin/
cp .config bin/

制作根文件系统

下载、编译和安装busybox

wget --no-check-certificate https://busybox.net/downloads/busybox-1.31.0.tar.bz2
tar -jxvf busybox-1.31.0.tar.bz2

cd busybox-1.31.0
make defconfig
make CROSS_COMPILE=arm-linux-gnueabimake install CROSS_COMPILE=arm-linux-gnueabi-

创建 rootfs 目录:

mkdir rootfs
mkdir rootfs/lib

拷贝 busybox 命令:

cp _install/* -r rootfs/

从工具链中拷贝运行库到 lib 下:

sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

创建4个tty终端设备

mkdir -p rootfs/dev
sudo mknod rootfs/dev/tty1 c 4 1
sudo mknod rootfs/dev/tty2 c 4 2
sudo mknod rootfs/dev/tty3 c 4 3
sudo mknod rootfs/dev/tty4 c 4 4

生成镜像:

dd if=/dev/zero of=rootfs.ext3 bs=1M count=32

格式化为 ext3 文件系统映像:

mkfs.ext3 rootfs.ext3

先挂载刚才的镜像,然后将文件拷贝到镜像中:

mkdir tmpfs
sudo mount -t ext3 rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs

启动QEMU :进入内核目录 linux-3.16.82,执行如下命令:

sudo qemu-system-arm -M vexpress-a9 -m 512M -dtb bin/vexpress-v2p-ca9.dtb -kernel bin/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd rootfs.ext3 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 

qemu退出

先按住“ctrl+a”,然后松开再按“x”键即可

gdb调试

参考链接如何在x86架构Linux上使用qemu+gdb调试aarch64的内核 - 知乎

cd linux-3.16.82
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-

/* 添加这两个编译选项 */
CONFIG_DEBUG_INFO=y
CONFIG_GDB_SCRIPTS=y

make vexpress_defconfig
make zImage

cp arch/arm/boot/zImage bin/

1、安装gdb

apt-get install gdb-multiarch

(报错信息如下) 

sudo apt-get -f install(即可安装成功)

2、启动内核

sudo qemu-system-arm -M vexpress-a9 -m 512M -dtb bin/vexpress-v2p-ca9.dtb -kernel bin/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd rootfs.ext3 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -S -gdb tcp::8889

 3、启动gdb

cd linux-3.16

gdb-multiarch vmlinux

set architecture arm

4、连接qemu的内核

target remote:8889

加断点运行

加打印信息

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值