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"

4iHAAAIDzyEX4f4mfxkEXnKwpAAAAAElFTkSuQmCC

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qemu-system-aarch64是一个运行ARM64架构的虚拟机的命令行工具。当我们在运行这个命令时,如果没有指定虚拟机类型,也没有默认设置,就会出现 "qemu-system-aarch64: no machine specified, and there is no default" 的报错信息。 这个报错的原因是因为在运行qemu-system-aarch64命令时,我们需要指定要运行的虚拟机的类型。虚拟机类型是根据具体的应用或需求来选择的,例如rpi3表示树莓派3型号的虚拟机,virt表示通用的虚拟机类型等等。如果没有指定虚拟机类型,qemu无法确定具体要运行哪个虚拟机,因此会出现这个错误。 解决这个问题的方法是在运行qemu-system-aarch64命令时,使用"-machine"参数来指定要运行的虚拟机类型。例如,如果我们想运行rpi3类型的虚拟机,命令可以修改为: "qemu-system-aarch64 -machine rpi3"。同时,也可以通过"-M"参数来指定虚拟机类型,例如: "qemu-system-aarch64 -M rpi3"。 此外,这个报错信息也提示我们当前没有默认设置的虚拟机类型。要设置默认虚拟机类型,可以使用"-machine"或"-M"参数,加上要设置的虚拟机类型,例如: "qemu-system-aarch64 -machine virt"。这样,当我们运行qemu-system-aarch64命令时,就默认使用指定的虚拟机类型。 综上所述,qemu-system-aarch64: no machine specified, and there is no default报错信息是因为运行qemu-system-aarch64命令时没有指定虚拟机类型,并且也没有默认设置。需要使用"-machine"或"-M"参数来指定当前要运行的虚拟机类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值