qemu交叉编译arm内核_使用QEMU模拟搭建ARM开发平台(一):交叉编译Linux内核

安装需要的包,我的主机环境是debian squeeze/x86_64,首先需要安装交叉编译工具链,安装qemu模拟器,下载linux内核。

安装交叉编译工具链

将下列源添加到/etc/apt/sources.list或在/etc/apt/sources.list.d/目录下新建一个文件debian-arm-toolchain.list。

#

# -- Emdebian cross toolchains

#

# deb http://www.emdebian.org/debian/ unstable main

# deb http://www.emdebian.org/debian/ testing main

deb http://www.emdebian.org/debian/ squeeze main

然后,执行

#apt-get update

#apt-get install gcc-4.4-arm-linux-gnueabi

安装工具链的方法可以参考 http://wiki.debian.org/

安装qemu

#apt-get install qemu-system

下载linux内核

我下载的是linux-2.6.39.2.tar.bz2。存放在$HOME/目录下。

$cd $HOME

$tar xjf linux-2.6.39.2.tar.bz2

$make mrproper #保证原始干净环境

$make ARCH=arm versatile_defconfig #使用versatile平台默认配置

$make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all #编译

几分钟过后,arch/arm/boot/zImage即生成了,然后使用qemu模拟。之所以选择versatile平台,是因为qemu可以完全模拟。

$cp arch/arm/boot/zImage $HOME/versatile-zImage

$qemu-system-arm -M versatilepb -kernel versatile-zImage -m 128M

由于没有提供根文件系统,所以kernel会崩溃,由于找不到合适的root挂载项。下面制作一个最小的initramfs,使其可以正常运行。

$mkdir $HOME/versatile-initramfs

$cd $HOME/versatile-initramfs

$cat > init.c < #include

> #include

> int main(void)

> {

> printf("hello arm\n");

> while(1);

> return 0;

> }

> EOF

然后,编译并且将其打包成initramfs。

$arm-linux-gnueabi-gcc -static -o init init.c

$rm init.c

$find . | cpio -o -H newc | gzip > ../versatile-initrd

$qemu-system-arm -M versatilepb -kernel versatile-zImage -initrd versatile-initrd -m 128M

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值