QEMU+ARM+Linux(1)

1.下载Linux kernel
官方地址太慢,用这个http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
下载的版本是4.18.11

2.参考qemu+uboot+kernel+nfs文件系统
将下载的文件解压,进入解压后的目录。

 export ARCH=arm
 export CROSS_COMPILE=arm-linux-gnueabi-
 make vexpress_defconfig
 make zImage -j8
 make modules -j8
 #make LOADADDR=0x60003000 uImage -j8
 make dtbs

make zImage -j8时出现告警:
<stdin>:1332:2: warning: #warning syscall io_pgetevents not implemented [-Wcpp]
看了这个系统调用的资料Linux Programmer’s Manual IO_GETEVENTS(2):发现这么两点:
(1)在ERROR中有一项:

ENOSYS io_getevents() is not implemented on this architecture.

(2)在COMFORMING TO中:

io_getevents() is Linux-specific and should not be used in programs that are intended to be portable.

难道在ARM上这个系统调用应该就不实现吗?应该不是吧。
换了4.8.1版本的内核,再按照上述命令编译,既无告警也无错误,那么就用4.8.1的好了,至于上述告警的原因以后再看。

3.在QEMU中启动Linux kernel

qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

报错:

qemu-system-arm: cannot set up guest memory 'vexpress.highmem': Cannot allocate memory

搜索了一下是因为分配的内存太大了,于是吧512M改为256M,仿真成功。
最后会出现 end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0),因为还没有文件系统。
Ctrl+a后按x结束仿真。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值