ubuntu18.04搭建qemu内核调试环境(待续)
apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essentialhttps://download.csdn.net/download/qq_33160790/10562084
·
目录:
获取环境
Ubuntu中安装相关环境:
apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential
获取kernel源码和busybox源码:
linux
busybox
编译固件
最小根文件系统
由于根文件系统制作过程比较繁琐,所以直接使用已经制作好了的,这个采用静态编译的方法制作,将解压出来的_install放到内核目录下面即可。
根文件系统
内核
进入内核目录下,对菜单进行配置:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig
make menuconfig
填入根文件系统名字:
清空string字段:
用户空间、内核空间比选为3:1,并选择高端内存选项:
编译内核:
make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs
启动qemu
这条命令比较长,建议写成脚本
qemu-system-arm -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
效果:
挂载sd卡
dd if=/dev/zero of=sd.img bs=64 count=1M
mkfs.ext2 sd.img
qemu启动参数加上-sd sd.img即可。
内核挂载:
mount -t ext2 dev/mmcblk0 tmp
PS:建议在etc/init.d/rcS上加上这句,ramdisk内核需要重新编译一下
使用gdb
1.下载gdb,我选择7.8版本
gdb地址
2.安装gdb
tar xjf gdb-7.8.tar.gz
cd gdb-7.8/
./configure --target=arm-linux
make
make install
3.使用
进入内核目录运行qemu:
qemu-system-arm -s -S -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
在另一个终端启动gdb
arm-linux-gdb --tui vmlinux
target remote localhost:1234
b start_kernel
c
gdb命令说明
b
c
n
s
p
bt
info registers
更多推荐
已为社区贡献4条内容
所有评论(0)