【openwrt】如何编译和运行一个arm linux 内核

如何编译和运行一个arm linux 内核

1. 准备工具

  • linux4.0 内核
  • busybox工具包

2. busybox手工编译一个最小的文件系统

cd busybox
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make menuconfig 

进入menuconfig之后,配制成静态编译。
在这里插入图片描述
在make & make install 编译完成后,在busybox根目录下会有一个“install”目录,该目录存放了编译好的文件系统需要的一些命令集合。
把_install目录复制到linux-4.0目录下。进入_install目录,先创建etc,dev等目录。

mkdir proc
mkdir dev
mkdir mnt
mkdir -p etc/init.d/

在_install/etc/init.d/目录下新建一个rcS文件,并写入如下内容。

mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mkdir -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

chmod +x _install/etc/init.d/rcS
在_install/etc目录下新建一个fstab文件,并写入如下内容:

proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0

在_install/etc目录下新建一个inittab文件,并写入如下内容:

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

在_install/dev 目录下新建如下设备节点,这时需要root权限。

cd _install/dev/
sudo mknod console c 5 1
sudo mknod null c 1 3

3.编译内核

cd linux-4.0
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig

配置initramfs,在initramfs source file 中填入_install,并把 Default kernel command string 清空。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
配置memory split 为“3G/1G user/kernel split”,并打开高端内存。
在这里插入图片描述

make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs

4.运行QEMU虚拟机

运行QEMU虚拟机模拟4核Cortex-A9的Versatile Express开发平台。

qemu-system-arm -M vexpress-a9 -smp 4 -m 200M -kernel arch/arm/boot/zImage arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章