使用QEMU模拟搭建ARM开发平台(三)——添加SCSI和MTD以及NAND flash支持

本文详细介绍了如何使用QEMU模拟搭建ARM开发平台,包括交叉编译Linux内核、构建根文件系统、编译mtd-utils,以及添加对SCSI、MTD和NAND flash的支持。通过这些步骤,最终成功创建了一个可以在QEMU中运行的ARM Linux环境。
摘要由CSDN通过智能技术生成

使用versatile_defconfig编译的内核不能满足要求,现在,添加SCSI磁盘,MTD以及NAND flash的支持。

交叉编译linux内核

下载codesourcery的交叉编译工具链 https://sourcery.mentor.com/sgpp/lite/arm/portal/subscription?@template=lite, 选择目标OS为GNU/Linux。下载后解压,将/path/to/arm-2011.03/bin 添加到PATH中。

$ cd linux-2.6.39.2
$ make ARCH=arm versatile_defconfig
$ make ARCH=arm menuconfig

Kernel Features
  -> Use the ARM EABI to compile the kernel
  -> Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

编译完成后,会在arch/arm/boot/目录下生成zImage,可以使用qemu来测试编译的内核是否可以启动,如果没有安装qemu,则安装

# apt-get install qemu-system
$ qemu-system-arm -M versatilepb -kernel arch/arm/boot/zImage -nographic -append "console=ttyAMA0"

可以看到,内核能启动,但是由于没有根文件系统而panic。

构建根文件系统
$ mkdir rootfs

将codesourcery工具链中针对arm的lib库复制到根文件系统中,这一步是可选的,因为在下面将把busybox编译成静态链接的包。

$ cp -r /path/to/arm-2011.03/arm-none-linux-gnueabi/libc/lib rootfs

将库文件strip,减小大小,可选的。

$ cd rootfs/lib
$ arm-none-linux-gnueabi-strip *.so

提示libgcc_s.so不能识别,没关系,它是一个ASCII ld脚本,忽略即可。 现在,编译busybox-1.18.5

$ cd busybox-1.18.5
$ make ARCH=arm defconfig
$ make ARCH=arm menuconfig
Busybox Settings
--> Build Options
  --> Build BusyBox as a static binary (no shared libs)

如果不将busybox编译成静态链接程序,那么前面的复制lib工作就是必须的。

$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值