【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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章