300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建

qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建

时间:2023-09-01 02:01:47

相关推荐

qemu交叉编译arm内核_arm qemu (1) 内核启动调试环境搭建

初衷是想在qemu中调试linux内核。本文是基于现有的条件搭建一个开发环境。这里有几个先决条件:

1,qemu支持特定的CPU版本

2,linux kernel 中最好有相应的default_config,这样会省去不少工作量

最终我选了linux-2.6.38.6,CPU结构暂时选择versatilepb(后继改为AT91)

定制qemu

qemu中支持多种架构的CPU,其实我感兴趣的只是arm部分。下载qemu源码,然后进行编译使用。做这个步骤主要是为了后继在qemu增加AT91系列CPU的支持。

下载源码

用git同步过来就好了。qemu git 源:

/qemu/qemu.git

功能定制

编译整个qemu时间不短,所以尽可能减少编译时间吧,只选择自己想要的功能。详细的可以通过./configure --help来查看

arch@archdev:/mnt/git/qemu$ ./configure --help

Usage: configure [options]

Options: [defaults in brackets after descriptions]

Standard options:

--help print this message

--prefix=PREFIX install in PREFIX [/usr/local]

--interp-prefix=PREFIX where to find shared libraries, etc.

use %M for cpu name [/usr/gnemul/qemu-%M]

--target-list=LIST set target list (default: build everything)默认会编译所有qemu工具

Available targets: aarch64-softmmu alpha-softmmu

--target-list-exclude=LIST exclude a set of targets from the default target-list

Advanced options (experts only):

--cross-prefix=PREFIX use PREFIX for compile tools []

--cc=CC use C compiler CC [cc]

--iasl=IASL use ACPI compiler IASL [iasl]

--host-cc=CC use C compiler CC [cc] for code run at

build time

--cxx=CXX use C++ compiler CXX [c++]

--objcc=OBJCC use Objective-C compiler OBJCC [cc]

--extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS

--extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS

--extra-ldflags=LDFLAGS append extra linker flags LDFLAGS

--cross-cc-ARCH=CC use compiler when building ARCH guest test cases

--cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests

...

...

这里我只对arm部分的感兴趣,所以最后的命令是:

$ ./configure --target-list=arm-softmmu --disable-git-update

$ make

编译生成:arm-softmmu/qemu-system-arm,arm-softmmu 这个目录加到PATH中,方便使用。效果如下代码:

$ qemu-system-arm --version

QEMU emulator version 4.0.92 (v4.1.0-rc2-dirty)

Copyright (c) - Fabrice Bellard and the QEMU Project developers

$

编译过程中可能遇到缺少库,安装上就行了。ERROR: glib-2.40 gthread-2.0 is required to compile QEMU

kernel源码编译

如果连接失效,请去官网下载。

安装的话只要解压到YOUR_PREFERD_PATH就行了。加入YOUR_PREFERD_PATH到PATH中,方便使用。 然后输入 arm-linux-gcc -v ,如果能显示到版本就代表成功了。

交叉编译工具可能错误:-bash: /mnt/git/gcc-arm/bin/arm-none-eabi-gcc: No such file or directory 这是在64bit机器上运行32bit程序出现的报错。解决:

sudo apt-get install gcc-multilib

启动

遇到的问题是启动停留在这个打印,没有后继:Uncompressing Linux... done, booting the kernel.

首先要在编译内核时选中:

[] Kernel low-level debugging functions

[] Early printk

然后在qemu参数中配置kernel print的输出位置。

qemu-system-arm -M versatilepb -kernel /mnt/git/linux-2.6.38.6/arch/arm/boot/zImage -nographic -serial file:output.txt -append "console=ttyAMA0"

-serial file:output.txt: 这个配置会将启动信息放输入到output.txt。

console=ttyAMA0

这里并没有配置root 和文件系统。

END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。