编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行。
$ cd busybox
$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabi-
$ make menuconfig
进入menuconfig之后,配置成静态编译
Busybox Settings ---->
Build Options ---->
[*] Build BusyBox as a static binary (no shared libs)
# make && make install
这个时候在busybox根目录下回有一个_install
目录,该目录存放了编译好的文件系统需要的一些命令合计
将_install 目录复制到linux-4.0 目录下。进入_install 目录,先创建etc、dev等目录。
# mkdir etc
# mkdir dev
# mkdir mnt
# mkdir -p etc/init.d/
在_install /etc/init.d/目录下新建一个rcS文件,并写入如下内容
mkdir -p /sys
mkdir -p /tmp
mkdir -p /proc
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
修改_install/etc/init.d/rcS 文件需要可执行权限,可以使用chmod命令来实现,比如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
$ cd linux-4.0
$ export ARCH=arm
$ export CROSS_COMPILE=arm-linux-gnueabi-
$ make vexpress_defconfig
$ make menuconfig
initramfs
,在 initramfs source file
中填入_install ,并把Default kernel command string
清空接着
General setup --->
[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
(_install) Initramfs source file(s)
Boot options --->
()Default kernel command string
Kernel Features --->
Memory split(3G/1G user/kernel split)--->
[*] High Memory Support
注意,(_install) Initramfs source file(s)
这个要通过enter键进入,输入_install
$ make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
$ make dtbs
qemu-system-arm -M vexpress-a9 -smp 4 -m 200M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic
这里的操作流程参考的是奔跑吧linux内核入门篇。大家想学习linux内核,可以去买奔跑吧linux内核 入门篇和奔跑吧linux内核。
这里给到作者笨叔叔的学习资料 github地址 这里有笨叔叔调教好的linux内核。这来有他的视频教程 视频地址 内核地址