转自鲲鹏社区

历史上,windows与intel的大联盟共同创造了昵称为“wintel”的庞大帝国,直到现在,业界绝大多数程序员选择的工作平台仍然是windows桌面操作系统。对于大多数行业新技术的接触,也从新技术如何在自己的桌面运行“hello,world”开始。

那么我们今天就从三个段落来讲述如何创造一个属于自己的鲲鹏开发者环境,分别是:

  1. windows x86桌面上如何运行一个兼容Armv8指令集的模拟环境。
  2. linux x86主机上如何运行一个兼容Armv8指令集的模拟环境。
  3. 通过华为云ECS KC1系列实例,一键式获取一个原生鲲鹏开发者环境。

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

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

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

我们今天先讲讲,如何在windows上创建一台模拟Armv8指令集的虚拟机,虚拟机使用Ubuntu18.04作为操作系统。

准备工作

  1. QEMU on win64软件包。官网地址软件包下载页,我们根据如下路径选择其中较新的一个发布件:qemu-w64-setup-20190218.exe
  2. Ubuntu18.04 for Arm64的操作系统引导光盘镜像文件:官网地址,根据如下路径找到文件: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。软件包下载地址
  4. 本机安装7-zip或具备相同功能的解压缩软件。
  5. 由于QEMU是个纯命令行工具,至少知道目前,还没有已知的很理想的GUI工具,因此你需要在实际操作前先了解QEMU的使用方式。
  6. 预留100G左右本地磁盘空间、

一些假设

  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

详细步骤

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

2. 解压bios bin文件。

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

3. 使用windows cmd创建虚拟机的系统盘,40G

输入以下命令:

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

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

输入以下命令:

参数的含义大致如下:

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

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

-bios xxx

指定bios bin所在的路径

-device xxx

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

-drive

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

-net

添加网络设备

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

  1. 安装Ubuntu操作系统

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

  1. 系统再次启动

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

重新启动后可以看到这样的界面

那么到这里,我们在windows上就成功搭建出一个鲲鹏开发者环境了。

Linux 相关的OS上运行一个兼容Armv8指令集的模拟环境。

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

  1. QEMU on Linux的安装方法:

  1. 通常Linux主机没有桌面,执行命令的时候可以加上-nographic参数使用纯文本的操作系统安装界面。也可以使用带桌面的Linux,就和Windows的方法没有区别了。
  2. 网络的配置在Linux上有很多小技巧,可以尝试通过社区学习。

目前鲲鹏弹性云服务器KC1,已经正式转商,有兴趣的小伙伴,可以前往华为云官网ECS产品主页进行购买。目前已经提供了4类操作系统供大家使用,均支持lazyloading。

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

看,眨眼间我就拥有一台原生使用华为鲲鹏920的云服务器了。

作者:太一

【鲲鹏来了】手把手教你创造一个属于自己的鲲鹏开发者环境相关推荐

  1. 手把手教你搭建一个学习Python好看的 Jupyter 环境

    又到摆脱重复工作,换个心情,然而并没有软用的时间了.这次,教大家如何搭建一个好看的jupyter环境. 安装Jupyter 先来展示一下我的环境 python: 3.5.* macos: 10.12. ...

  2. 手把手教你写一个生成对抗网络

    成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy) 那么,什么是 GANs? 用 Ian Goodfellow 自己的话来说: " ...

  3. 手把手教你搭建一个中式菜谱知识图谱可视化系统

    手把手教你搭建一个中式菜谱知识图谱可视化系统 中式菜谱知识图谱 1.系统功能 2.先来看看效果 实体间关联关系及实体信息显示 不同类型实体开关显示 搜索功能展示 3.系统实现流程 3.1 数据爬取 3 ...

  4. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  5. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  6. 第五十八期:从0到1 手把手教你建一个区块链

    近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构建一个自己的区块链. 作者:Captain编译 近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构 ...

  7. 手把手教你写一个spring IOC容器

    本文分享自华为云社区<手把手教你写一个spring IOC容器>,原文作者:技术火炬手. spring框架的基础核心和起点毫无疑问就是IOC,IOC作为spring容器提供的核心技术,成功 ...

  8. 手把手教你撸一个Web汇率计算器

    手把手教你撸一个Web汇率计算器 前言 前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask.Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化We ...

  9. 手把手教你写一个Matlab App(一)

    对于传统工科的学生用的最多的编程软件应该就是matlab,其集成度高,计算能力强,容易上手,颇受大众青睐.今天挖的这个新坑,主要是分享用matlab app designer设计GUI界面的一些方法和 ...

最新文章

  1. mysql数据库未启动失败_mysql数据库启动失败
  2. Linux 操作命令记录
  3. 一天学完spark的Scala基础语法教程七、数组(idea版本)
  4. 【uoj#139】[UER #4]被删除的黑白树 贪心
  5. Spring Cloud Gateway介绍(二)
  6. 关于 ABAP 调试器里的 16 进制值的显示问题
  7. java输出值_java参数传递(超经典)(强烈建议自己先写出程序的输出值)
  8. Ubuntu下wxWidgets学生公寓管理编程,sqlite3的用法(mysql数据库),窗体,下面是部分添加和删除功能,其他功能可以联系我。。...
  9. 两台电脑如何实现共享文件
  10. 计蒜客-最大子阵列 / NYOJ题目44-子串和
  11. 论文写作1:论第一篇SCI写作时的降重方法总结
  12. 主板检测卡c5_主板检测卡代码大全
  13. 【安全热点】阿里巴巴月饼门,观点两极化,孰对孰错?
  14. labwindows panel设置透明度方法
  15. c语言自定义函数返回值的作用,C语言自定义函数
  16. 常用URLscheme整理+不同场景下打开URLscheme的方法(adb/安卓原生/按键精灵/auto.js/uniapp/easyclick)
  17. stm32 火灾自动报警及联动控制源码_火灾自动报警系统和消防联动系统的区别
  18. 如何对关键词密度设置
  19. 新房装修选电视机还是投影仪?装修投影仪避坑指南
  20. 附加类型”XXXX“的实体失败,因为相同类型的其他实体已具有相同的主键值。在使用 “Attach“ 方法或者将实体的状态设置为 “Unchanged“ 或 “Modified“

热门文章

  1. SLAM Cartographer(4)对象Node
  2. java 模拟电梯_java模拟电梯运行简单实现,swing界面
  3. java jdbc代码_javajdbc代码解决
  4. 单元格宽度_excel单元格如何设成正方形或者1mm的正方形
  5. lambda 复制数组
  6. c#使用椭圆签名算法制作软件序列号
  7. kettle资源库配置
  8. QT 格式化字符串功能
  9. codeforces 149E . Martian Strings kmp
  10. Android程序版本更新--通知栏更新下载安装(转)