zoukankan      html  css  js  c++  java
  • CentOS7使用Qemu模拟ARM64

    准备

    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源码(https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.77.tar.xz)或者在CSDN上下载
    下载

    busybox

    https://busybox.net/downloads/busybox-1.24.2.tar.bz2

    qemu

    qemu支持ARM64目前只能通过源码包形式安装
    https://download.qemu.org/qemu-4.1.0.tar.xz

    拷贝头文件

    在编译时缺少一些头文件,可以将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-a53a57a72都是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源码包GDB, lasted version(suggestion)

    编译&安装

    ./configure --target=aarch64-linux-gnu --program-prefix=aarch64-linux- --prefix=/usr/local/aarch64_gdb
    make && make install
    
  • 相关阅读:
    [对对子队]会议记录5.27(Scrum Meeting12)
    [对对子队]会议记录5.25(Scrum Meeting11)
    [对对子队]会议记录5.24(Scrum Meeting10)
    [对对子队]会议记录5.22(Scrum Meeting9)
    [对对子队]会议记录5.21(Scrum Meeting8)
    [对对子队]会议记录5.20(Scrum Meeting7)
    团队作业第六次——Beta冲刺日志集合
    团队作业第六次——Beta冲刺日志集合
    团队作业第五次——敏捷冲刺日志集合
    Beta冲刺答辩
  • 原文地址:https://www.cnblogs.com/xidongyu/p/11638627.html
Copyright © 2011-2022 走看看