Qemu + Linux + Rootfs
1. Ubuntu环境
编译Linux需要在Linux下进行,需要先有一个Ubuntu或者其他的Linux环境,我使用的是64位Ubuntu 16.04
2.下载 Linux 源码.
请访问: https://www.kernel.org/pub/linux/kernel/v4.x/
选择一个版本,然后保存到本地
3. 解压Linux源码
$tar xvf linux-4.1.49.tar.gz
4. 编译
本地PC环境:
Ubuntu 16.04 64位
4.1 编译x86_64版本
$make menuconfig
会提示如下窗口,你可以对kernel进行定制化
你可以点击Exit退出
$make
最终编译成功,会产生 zImage文件 arm/x86/boot目录下
[email protected]:~/Workspace/project/linux-4.1.49-pc/arch/x86_64/boot$ ls -la
total 8
drwxrwxr-x 2 nap nap 4096 Apr 24 02:43 .
drwxrwxr-x 3 nap nap 4096 Apr 24 02:43 ..
lrwxrwxrwx 1 nap nap 22 Apr 24 02:43 bzImage -> ../../x86/boot/bzImage
[email protected]:~/Workspace/project/linux-4.1.49-pc/arch/x86_64/boot$
x86_64 is same to x86
About how to run this Linux, please see 5.1
4.2 编译arm版本
$export PATH=/home/rueco/workspace/open-source/toolchains/aarch32/bin:$PATH
$export ARCH=arm
$export CROSS_COMPILE=arm-linux-gnueabihf-
$make vexpress_defconfig
$make uImage LOADADDR=0x60003000
$make
前提条件:
你需要安装交叉编译器, 交叉编译器有很多种, 我选择了linaro的交叉编译器
你需要解压到 /home/reck/workspace/open-source/toolchains/aarch32/bin, 这里假设你的用户名是 rueco, 根据你的用户名进行调整
5 如何运行linux kernel
你可以使用Qemu运行kernel, 你需要首先安装Qemu. 详见我的另一篇关于Qemu使用的文章。
5.1 x86_64
qemu-system-x86_64 -kernel u-boot -m 256M -nographic5.2 arm
qemu-system-arm -M vexpress-a9 -kernel u-boot -m 256M -nographic
无论使用上述哪种方式,你都会遇到下面的错误:
至此, 你应该具有调试Kernel的能力