[新手课堂] 如何搭建鲲鹏开发环境

本文档从如下几个方式创造一个鲲鹏开发者环境,分别是:

1.   windows x86桌面上如何运行一个兼容ARMv8指令集的模拟环境。

2.   linux x86主机上如何运行一个兼容ARMv8指令集的模拟环境。

3.   linux x86主机上安装目标为鲲鹏服务器的交叉编译环境。

4.   通过华为云ECS RC3/RC6系列实例,一键式获取一个原生鲲鹏芯片环境。

一、windows x86桌面上如何运行一个兼容ARMv8指令集的模拟环境。

       首先需要安装一个软件QEMU。QEMU本身是一款用来完成硬件虚拟化及虚拟机托管的开源软件,他通过动态的二进制转换,模拟CPU,也可以通过KVM一起使用使得虚拟机的性能接近真实的计算机速度。

在主流的功能(虚拟机托管)之外,他还有一个重要的功能可以为user-level的进程执行CPU仿真,进而允许了为一种架构编译的程序在另外一种架构上面运行。

目标:在windows上创建一台模拟ARMv8指令集的虚拟机,虚拟机使用Ubuntu18.04作为操作系统。

    1. 准备工作

    1)  QEMU on win64软件包。官网地址https://www.qemu.org/download/

        软件包下载页https://qemu.weilnetz.de/w64/。我们选择其中较新的一个发布件https://qemu.weilnetz.de/w64/qemu-w64-setup-20190218.exe

    2)   Ubuntu18.04 for ARM64的操作系统引导光盘镜像文件http://cdimage.ubuntu.com/releases/18.04/release/ubuntu-18.04.2-server-arm64.iso

         操作系统可以换成自己需要的,理论上所有支持ARMv8指令集的操作系统都可以运行。如果你想使用的是一款虚拟机镜像则不需要参考详细步骤中通过光盘引         导安装这个章节,直接使用qemu-img程序,将虚拟机镜像直接转制成磁盘文件,就可以直接启动虚拟机,下面的楼层里会补充操作方法。

    3)   ARM64的BIOS bin文件,qemu-efi-aarch64_0~20180205.c0d9813c-2_all.deb。https://packages.ubuntu.com/bionic/qemu-efi-aarch64

    4)   本机安装7-zip或具备相同功能的解压缩软件。

    5)  由于QEMU是个纯命令行工具,截止目前,还没有已知的很理想的GUI工具,因此你需要在实际操作前先了解QEMU的使用方式。

    6)   预留100G左右本地磁盘空间。

    2. 本次实验前提说明

    1)  虚拟机的磁盘文件所在的目录为d:\qemu\vm\test_kunpeng\,并预先创建好该目录

    2)   虚拟机的BIOS bin所在的目录为d:\qemu\bios,并且预先创建好该目录。

    3)   ubuntu操作系统引导光盘绝对路径为d:\download\ubuntu-18.04.2-server-arm64.iso

    4)   qemu软件安装路径为c:\qemu

    3. 详细步骤

    1)  安装qemu软件。纯gui操作,step by step操作,不再详述。

    image.png

    2)  解压bios bin文件。

    使用7-zip或具备相同功能的解压缩工具,解压qemu-efi-aarch64_0~20180205.c0d9813c-2_all.deb软件包,提取其中的QEMU_EFI.fd至目录d:\qemu\bios

   image.png

   3)  使用windows cmd创建虚拟机的系统盘,40G,输入以下命令:


 c:\qemu\qemu-img.exe create D:\qemu\vm\test_kunpeng\hdd01.img 40G

    image.png

    4)  执行命令直接通过光盘引导启动虚拟机

    c:\qemu\qemu-system-aarch64.exe -m 2048 -cpu cortex-a72 -smp 2,cores=2,threads=1,sockets=1 -M virt -bios D:\qemu\bios\QEMU_EFI.fd -net nic,model=pcnet -device VGA -drive if=none,file=d:\download\ubuntu-18.04.2-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\qemu\vm\test_kunpeng\hdd01.img,id=hd0 -device virtio-blk-device,drive=hd0

       参数的含义大致如下:

qemu-system-aarch64.exe

二进制文件,提供模拟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

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

-bios xxx

指定bios bin所在的路径

-device xxx

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

-drive

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

-net

添加网络设备

      此时,一个带图形界面的VM就启动起来了,不过画面中什么都没有。当然还有很多其他高级参数,大家可以去qemu官方网站学习。

    5)  安装Ubuntu操作系统

    先选择串口,弹出安装界面,后面按照Ubuntu官方指引进行安装,并等待安装完成。

     image.png

     image.png

     image.png

     image.png

    6)  系统再次启动

    下次启动虚拟机的时候,并不能再次使用前面的命令,否则又会使用光盘引导安装。我们需要将CDROM相关的参数移除。

    c:\qemu\qemu-system-aarch64.exe -m 2048 -cpu cortex-a72 -smp 2 -M virt -bios D:\qemu\bios\QEMU_EFI.fd -device VGA -device virtio-scsi-device -drive if=none,file=D:\qemu\vm\test_kunpeng\hdd01.img,id=hd0 -device virtio-blk-device,drive=hd0

    重新启动后可以看到这样的界面,至此,在windows上就成功搭建出一个鲲鹏开发者环境了。

    image.png

二、Linux 相关的OS上运行一个兼容ARMv8指令集的模拟环境

    1. 本质上和前文的windows桌面平台没有太大差别,这里列举一下差异点。

    1)  QEMU on Linux的安装方法:

    wget https://download.qemu.org/qemu-4.0.0.tar.xz
    tar xvJf qemu-4.0.0.tar.xz
    cd qemu-4.0.0
    ./configure
    make

    2)  通常Linux主机没有桌面,执行命令的时候可以加上-nographic参数使用纯文本的操作系统安装界面。也可以使用带桌面的Linux,与Windows的方法无区别。

    3)  网络的配置在Linux上有很多小技巧,可以尝试通过社区学习。


三、linux x86主机上安装目标为鲲鹏服务器的交叉编译环境

    1. 简介

    交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。本指南主要内容为在鲲鹏架构服务器环境下搭建鲲鹏的GCC编译环境,编译基于鲲鹏服务器/云服务器的应用软件。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的GCC相同。

    搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出鲲鹏架构下Linux系统所需的操作系统、应用程序等,然后再上传到鲲鹏服务器执行。

    2、环境    

类别

版本

配置

备注

鲲鹏测试服务器

CentOS7.5

鲲鹏通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB


x86编译服务器

CentOS7.5

2vCPUs|4GB|s3.large.2

 

1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html

2.本地服务器部署Centos7.5

x86编译服务器

Ubuntu16.04

2vCPUs|4GB|s3.large.2

1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html

2.本地服务器部署Ubuntu16.04

交叉编译器

arm-linux-gcc

 

5.5.0

https://releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch6    4-linux-gnu.tar.xz

    3、交叉编译器安装(x86服务器)

    1) 安装标准的C开发环境

     ubuntu执行以下命令:

 apt-get install build-essential

      Centos执行以下命令:

  yum groupinstall Development Tools

    2) 在/usr/local下建立名为ARM-toolchain的文件夹

  mkdir /usr/local/ARM-toolchain

    3)下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz,可以通过wget的形式下载


  cd /usr/local/ARM-toolchain
  wget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

    也可以从网页上下载后上传到/usr/local/ARM-toolchain目录下。交叉编译工具链的地址在https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/

    4)下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz完成后,解压

  tar -xvf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz

    4、配置环境变量

    1)修改配置文件,在配置文件的最后一行加入路径配置:

    Ubuntu:

   vim /etc/bash.bashrc

    添加如下内容

 PATH= /usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin:"${PATH}"

    Centos:

 vim /etc/profile

     添加如下内容

 export PATH=$PATH:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin

    2)环境变量生效与测试

    Ubuntu:

 source /etc/bash.bashrc

    Centos:

 source /etc/profile

   3)查看aarch64-gcc版本信息

   aarch64-linux-gnu-gcc -v

    image.png

    5. 测试

    1)  创建hello.c

    vim hello.c

 #include     
 int main(void)
 {
   printf("hello linux\n");
   return 0;
  }

    2)交叉编译    

 aarch64-linux-gnu-gcc -o kp-hello hello.c

    3)测试执行

    在x86服务器上测试,执行:

 chmod +x kp-hello;
 ./kp-hello

    页面显示:-bash: ./kp-hello: cannot execute binary file

    拷贝执行文件至鲲鹏云服务器

    执行:

 chmod +x kp-hello;
 ./kp-hello

    页面显示:hello linux 

    6、参考信息

     交叉编译指导: https://releases.linaro.org/components/toolchain/binaries/ 

                              https://blog.csdn.net/mars1743/article/details/20492285


四、通过华为云获取原生使用鲲鹏处理器的弹性云服务器ECS

目前ARM通用性云服务器,已经登录华为云-北京四区域并上线公测,有兴趣的小伙伴,可以前往北京四申请公测。目前已经提供了4类操作系统供大家使用,均支持快速发放。

        image.png

通过互联网使用的小伙伴们,绑定EIP就可以正常访问了,同时还可以享受mirrors.huaweicloud.com中众多开源社区镜像站的加速能力,急速安装常用软件。

如下所示,可以登录鲲鹏云服务器进行鲲鹏体验。

      image.png