教你编译一个基于arm的Linux内核,并用qemu模拟器测试( 二 )

教你编译一个基于arm的Linux内核,并用qemu模拟器测试

文章插图
 
在“_install/etc”目录创建“inittab”文件,并写入以下内容:
::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r在“_install/dev”目录中创建如下设备节点 :
mknod console c 5 1mknod null c 1 3  完成上述设置后,在内核目录中编译内核 :
export ARCH=armexport CROSS_COMPILE=arm-linux-gnueabi-make vexpress_defconfigmake menuconfig
教你编译一个基于arm的Linux内核,并用qemu模拟器测试

文章插图
 
在内核目录下编译内核(此步骤时间较长)
make bzImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make dtbs 可能会出现“./usr/gen_initramfs_list.sh: 131: local: 1: bad variable name”的错误,原因是以前用的bash执行而现在使用sh 。
解决办法:131行改为 :
local dev="`LC_ALL=C ls -l "${location}"`"
教你编译一个基于arm的Linux内核,并用qemu模拟器测试

文章插图
 
编译完成后会有如下提示,并显示编译后内核的存储路径 。
教你编译一个基于arm的Linux内核,并用qemu模拟器测试

文章插图
 
4.运行 QEMU如下所示,输入 QEMU 启动命令,成功启动 QEMU,注意需指定 bzImage路径,并注意使用当前命令与 bzImage 路径的关系 。
qemu-system-arm -M vexpress-a9 -m 256M -kernel arch/arm/boot/zImage -Append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic  
  • 以上命令中参数含义如下;
  • -M:指定硬件芯片框架
  • -m:指定运行内存大小
  • -kernel:指定运行的内核镜像
  • -dtb:指定具体芯片的配置信息
  • -nographic:指定不使用图形界面
5.完成如下图可以看到,成功运行了我们刚刚编译的新内核
教你编译一个基于arm的Linux内核,并用qemu模拟器测试

文章插图
 
头条对markdown太不友好了~辛苦改了格式分享给大家,可能还是有点乱,大家可以点下方链接看我的知乎 。




推荐阅读