主机运行操作系统,deepin15.1.1
http://www.deepin.org/
1.安装qemu
sudo apt-get install qemu-system-arm
2.安装arm编译工具
sudo apt-get install gcc-aarch64-linux-gnu
3.下载Linux内核
从https://www.kernel.org/下载,并解压缩
修改Makefile,
ARCH = arm64
CROSS_COMPILE = aarch64-linux-gnu-
安装依赖包
sudo apt-get install libncurses5-dev
复制默认配置文件
cp arch/arm64/configs/defconfig .config
再执行make menuconfig,退出,保存
make -j8
创建目录 qemu_a57
mkdir ~/qemu_a57
复制Image到 qemu_a57 目录
cp arch/arm64/boot/Image ~/qemu_a57
4.下载busybox
https://busybox.net/downloads/busybox-1.24.2.tar.bz2
同样修改Makefile,
ARCH ?= arm64
CROSS_COMPILE ?= aarch64-linux-gnu-
运行命令
make defconfig
make menuconfig
选中Busybox Settings --->Build Options --->Build BusyBox as a static binary (no shared libs)
运行命令
make busybox
make install
默认会把做好的文件系统放在_install目录下
5.制作根文件系统:
cd ~/qemu_a57
dd if=/dev/zero of=a57rootfs.ext4 bs=1M count=32
sudo mkfs.ext4 a57rootfs.ext4
mkdir a57rootdir
sudo mount -t ext4 a57rootfs.ext4 a57rootdir/ -o loop
sudo cp busybox-1.24.2/_install/* ~/qemu_a57/a57rootdir/ -r
cd ~/qemu_a57/a57rootdir
sudo mkdir dev etc lib proc sys tmp mnt
sudo vim etc/fstab
输入下面内容
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
创建init.d目录
sudo mkdir etc/init.d
sudo vim etc/init.d/rcS
输入如下内容
#!/bin/sh
mount -a
mdev -s
添加可执行权限
sudo chmod +x etc/init.d/rcS
卸载
cd ~/qemu_a57
sudo umount ~/qemu_a57/a57rootdir/
5.运行编译的内核
qemu-system-aarch64 -machine virt -cpu cortex-a57 -smp 8 -m 4096 -kernel Image -append "console=ttyAMA0 root=/dev/vda" -nographic -drive file=a57rootfs.ext4,if=none,id=blk -device virtio-blk-device,drive=blk
6.对内核可以稍微精简一下
make menuconfig配置时,Platform selection --->下,除ARMv8 software model (Versatile Express)外,其他都不选
7.备注
目前qemu可以支持的最高cortex版本应该就是cortex-a57,可以通过如下命令查看
qemu-system-aarch64 -machine virt -cpu help