centos使用qemu搭建ARM64運行環境

準備工作

(1) linux 內核源碼, 從github上獲取

git clone https://github.com/torvalds/linux
make kernelversion

(2) 交叉編譯工具,從linaro官網(www.linaro.org)上獲取
在這裏插入圖片描述
在這裏插入圖片描述
解壓後設置環境變量即可

xz -d gcc-linaro-xxx.tar.xz
tar -xvf gcc-linaro-xxx.tar
export PATH=$PATH:/yourpath

(3) 安裝QEMU ,支持arm64需要源碼安裝https://www.qemu.org/

yum install gtk2-devel
./configure –target-list=aarch64-softmmu 
make && make install

安裝完成後,有qemu-system-aarch64命令即可

內核代碼編譯

進入下載好的內核源碼目錄

export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
make menuconfig
make -j4

製作文件系統

(1)下載安裝busybox : https://busybox.net/

make menuconfig

settings->build options->build static library(enable)

make
make install

(2) 製作根文件系統

mkdir rootfs 
cp busybox/_install/* rootfs/ -rf 
cd rootfs/_install
mkdir dev etc 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
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

在_inistall/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

在_inistall/etc/ 目錄下新建一個inittab文件:

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

在_install/dev目錄下新建節點:

mknod console c 5 1 
mknod null c 1 3 

返回上層目錄,壓縮

cd ../.. 
find . | cpio -o -H newc > rootfs.cpio 
gzip -c rootfs.cpio > rootfs.cpio.gz

QEMU啓動ARM64虛擬機

qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -m 2048 -smp 2 -kernel linux/arch/arm64/boot/Image -initrd rootfs.cpio.gz -append "rdinit=/linuxrc console=ttyAMA0"

啓動成功後,查看內核版本

/ # uname -r
4.20.0-rc4-00007-gef78e5e

關閉虛擬機

另起一個超級終端,輸入

killall -9 qemu-system-aarch64

參考文章

《奔跑吧linux內核》第六章

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