AArch64 linux服务器,文件系统,内核,qemu-system-aarch64启动虚机

https://www.cnblogs.com/xidongyu/p/11638627.html

制作文件系统

编译内核源码生成镜像

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"

AArch64 linux服务器,文件系统,内核,qemu-system-aarch64启动虚机_第1张图片

RPM包安装

yum安装交叉编译工具

yum install -y binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu bison flex glib2 glib2-devel pixman-devel bc

手动安装glibc

yum库中没有glibc-aarch64,所以需要手动安装相应的包。在下载以下连个rpm包进行安装

glibc-aarch64-linux-gnu

glibc-aarch64-linux-gnu-devel

下载源码包

Linux源码

使用wget下载Linux源码()或者在CSDN上下载

busybox

qemu

qemu支持ARM64目前只能通过源码包形式安装

拷贝头文件

在编译时缺少一些头文件,可以将x86下的copy到aarch64下

cp -r /usr/include/rpc/* /usr/aarch64-linux-gnu/include/rpc/

安装

qemu

安装命令

#解压qemu安装包进入其目录执行以下命令 ./configure --target-list=aarch64-softmmu,aarch64-linux-user --enable-virtfs --enable-debug && make -j4 && make install

Linux

编译

#设置环境变量 export ARCH=arm64

export CROSS_COMPILE=aarch64-linux-gnu- #配置编译选项 make defconfig

make menuconfig #编译 make -j4

busybox

配置

执行make menuconfig命令进行配置,以下两个选项需要设置

Busybox Setting -> Build Options -> static binary(enable)

Networking Utilities -> inetd(disable)

Busybox Setting -> BusyBox installation prefix(../rootfs)

编译

make -j4 && make install

编译完成后在busybox的同级目录会生成一个rootfs目录

制作文件系统

进入rootfs,执行以下命令

mkdir dev etc mnt

mkdir -p etc/init.d

进入etc/init.d中创建文件rcS,在文件中加入以下内容,并修改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

在etc/ 目录下新建一个inittab文件,加入以下内容

::sysinit:/etc/init.d/rcS

::respawn:-/bin/sh

::askfirst:-/bin/sh

::ctrlaltdel:/bin/umount -a -r

在dev目录下执行以下命令

mknod console c 5 1

mknod null c 1 3

在rootfs目录执行以下命令

find . | cpio -o -H newc > rootfs.cpio

gzip -c rootfs.cpio > rootfs.cpio.gz

至此,rootfs中的rootfs.cpio.gz就是制作好的文件系统

虚拟机管理

虚拟机启动

qemu-system-aarch64 -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 512 -kernel Image -append "rdinit=/linuxrc console=ttyAMA0" -initrd rootfs.cpio.gz -device virtio-scsi-device

qemu-system-aarch64

二进制文件,提供模拟aarch64架构的虚拟机进程

-m 2048

分配2048MB内存

-M virt

模拟成什么服务器,我们一般选择virt就可以了,他会自动选择最高版本的virt

-cpu cortex-a72

模拟成什么CPU,其中cortex-a53\a57\a72都是ARMv8指令集的

-smp 2,cores=2,threads=1,sockets=1

2个vCPU,这2个vCPU由qemu模拟出的一个插槽(socket)中的2个核心,每个核心支持一个超线程构成。

-bios xxx

指定bios bin所在的路径

-device xxx

添加一个设备,参数可重复

-drive

添加一个驱动器,参数可重复

-net

添加网络设备

GDB调式

安装

下载GDB源码包, lasted version(suggestion)

编译&安装

./configure --target=aarch64-linux-gnu --program-prefix=aarch64-linux- --prefix=/usr/local/aarch64_gdb

make && make install

你可能感兴趣的:(AArch64,linux服务器)