本文介绍了一个自动搭建openEuler虚拟机QEMU运行环境的脚本使用方法,本脚本能下载并安装各种依赖项,自动下载并编译安装QEMU 4.1.1和busybox 1.25.1,下载并安装对Linux 4.19.1进行ARM64交叉编译并用gdb进行调试的环境,该环境能帮助我们理解openEuler内核的运行,以及下载和QEMU环境下安装openEuler 1.0版。本脚本参考了前辈[1]在ARM32位环境下对Linux Kernel的交叉编译脚本,特此感谢!我们修改了QEMU、busybox和Linux kernel的版本和根文件系统搭建的方法,增加了依赖项,并将ARM交叉编译环境和gdb改为了64位,而且增加了openEuler的相关内容。

一、openEuler虚拟机运行环境搭建

环境准备:在VMware 15.1.0或VirtualBox 6.10上搭建Ubuntu 18.04虚拟机,建议分配硬盘大小120G,内存大小2G以上。

自动搭建脚本码云地址:

https://gitee.com/luo_yu_zhe/openEulerInstallation

运行脚本之前请手动更改下载源为国内源!否则下载较慢,更改源的方式见参考文献[3]。

A.   脚本运行流程

1.sudo ./prepare.sh

2.source ~/.bashrc

3.sudo ./build.sh, 做完这一步ARM64交叉编译环境、linux kernel 4.19.1、busybox和QEMU以及依赖项应该都装好了。

5.sudo ./start-qemu.sh进行无gdb调试linux kernel 4.19.1 或者sudo./start-qemu-gdb.sh之后另开一个窗口,aarch64-linux-gnu-gdb 进入gdb界面,再输入 target remote localhost:1234进入调试阶段,在gdb 窗口输入c就可以切换到qemu窗口运行。

sudo ./start-qemu.sh后:

开启gdb运行后:

B.   Prepare.sh 脚本功能介绍

该脚本用于下载并解压64位ARM交叉编译工具、QEMU-4.1.1和openEuler镜像,此外,它还会通过apt install 安装依赖项。该脚本会检查压缩包是否存在,若存在不会重复下载解压。

下载openEuler镜像:

下载并解压交叉编译gcc,设置环境变量:

安装依赖项:

下载并安装QEMU-4.1.1:

下载QEMU UEFI启动固件并生成img文件,大小可以分配:

 C.    Build.sh脚本功能介绍

下载并编译linux kernel 4.19.1,下载并编译busybox1.25.1,制作根文件系统。架构和版本可以通过文件开头的参数进行设置。

编译Linux内核4.19.1版:

把编译好的Image文件copy到目标文件夹:

下载并解压busybox:

编译安装busybox:

 制作根文件系统:

D.   qemu启动脚本介绍

start-qemu.sh:qemu普通启动。

start-qemu-gdb.sh:带gdb 启动。

start-euleros.sh:用qemu启动euleros镜像。

采用gdb模式启动的时候首先运行sudo./start-qemu-gdb.sh命令,然后重新启动一个terminal,运行aarch64-linux-gnu-gdb,输入端口号然后按c。

qemu常见选项[2]:

-hda file、-hdb file、-hdc file和-hdd file。

把文件当成hard disk 0、hard disk 1、hard disk 2和hard disk 3。

-append cmdline

将cmdline作为kernel commandline,所谓kernel command line就是在kernel启动的时候,用cmdline对内核进行配置。比如"root=/dev/hda",将/dev/hda设置成根文件系统。

-M machine

选择模拟的机器(我们可以输入-M?提到一个模拟的机器列表)

-fda file/-fdb file

使用file作为软盘镜像.我们也可以通过将/dev/fd0作为文件名来使用主机软盘。

-cdrom file

使用文件作为CD-ROM镜像(但是我们不可以同时使用'-hdc'和'-cdrom').我们可以通过使用'/dev/cdrom'作为文件名来使用主机的CD-ROM。

-boot [a|c|d]

由软盘(a),硬盘(c)或是CD-ROM(d).在默认的情况下由硬盘启动.

-snapshot

写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写回磁盘镜像文件。

-m megs

设置虚拟内存尺寸为megs M字节.在默认的情况下为128M。

-smp n

模拟一个有n个CPU的SMP系统.为PC机为目标,最多可以支持255个CPU。

-nographic

在通常情况下,Qemu使用SDL来显示VGA输出。使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序。模拟的串口将会重定向到命令行。所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核。

二、openEuler 系统安装说明

1.QEMU安装openEuler镜像

运行完sudo ./prepare.sh后,运行sudo./start_euleros.sh,运行该脚本会执行一下命令:

qemu-system-aarch64 -machine virt -cpucortex-a57 -m 1024 -bios ./QEMU_EFI.fd -cdrom openEuler-1.0-aarch64-dvd.iso-hda ./qemu_Euler.img -serial stdio

QEMU会读入openEuler的镜像文件然后进入安装流程。选择安装openEuler后,选择安装模式(选择test media选项),之后分别配置每个前面有”[!]”这个标记的选项,主要有installation destination, root password和user password 等,注意选择的时候是先输入选项对应的数字,确定之后按回车,然后再按c(continue)继续安装。以下是一个选择的流程,选项前面有[x]代表选中了该选项:

A.选择 Use text mode 选项

B.选择Root password选项并配置

 配置完之后我们可以发现大部分之前有[!]的选项之前都变成了[x]。

C.    配置安装目的地

选择大小:

选择使用空间:

VMware:

VirtualBox:

选择Partition方式:

VMware:

VirtualBox:

D.   配置用户账户,输入b完成配置 

E.安装完成

到这一步需要按一下回车然后输入之前设定的用户名和密码才行。

然后就和linux的操作基本一样了~有一个问题是每次运行都要安装一次,所以装好之后最好能保存一个虚拟机快照。

参考文献

[1]https://github.com/xianjimli/qemu-arm-linux.git

[2]https://blog.csdn.net/ustc_dylan/article/details/5385691

[3]https://blog.csdn.net/qq_35451572/article/details/79516563

自动搭建openEuler虚拟机QEMU运行环境相关推荐

  1. UEFI开发历程1—edk2开发环境的搭建以及在虚拟机QEMU运行OVMF固件

    一.开发工具准备(下面是开发环境搭建部分) 1.下载Visual Studio,打开Visual Studio Installer,选择Comunity版本,工作负载的选择如图1-1所示,安装. 图1 ...

  2. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  3. 如何搭建html运行环境,搭建基于express框架运行环境的方法步骤

    一.Express简介 Express提供了一个轻量级模块,把Node.js的http模块功能封装在一个简单易用的接口中.Express也扩展了http模块的功能,使你轻松处理服务器的路由.响应.co ...

  4. 搭建Keras,TensorFlow运行环境

    搭建Keras,TensorFlow运行环境 ImportError: DLL load failed,找不到指定的模块 Python环境安装(基本环境是win10+CPU) 安装环境是个需要&quo ...

  5. ubuntu搭建【python】运行环境

    [实施工程师]ubuntu搭建[python]运行环境 目录 [实施工程师]ubuntu搭建[python]运行环境 下载[pycharm]包 ​解压[pycharm]包 执行[pycharm]安装 ...

  6. macos 环境下搭建 windbg 虚拟机双机调试环境

    「求职」阿哈哈哈广告来了,博主本人,23届落魄web安全,在线求职,本科学历有一段大厂实习,有缺人的大佬么或者有内推的大佬给个机会吧,求求啦,可以微信联系我给您简历:ocean888-_- 文章底下有 ...

  7. 【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境

    文章目录 前言 一.下载 FFMPEG 二.拷贝可执行文件 三.拷贝动态库文件 四.运行 ffmpeg 命令 总结 前言 Android 中需要使用到 FFMPEG , 先在 Windows 中搭建一 ...

  8. 宝塔linux_Linux虚拟机上快速搭建宝塔 部署PHP运行环境

    废话不多说 直接上干货. 宝塔: 宝塔面板 - 简单好用的Linux/Windows服务器运维管理面板​www.bt.cn 系统:vm安装的centos虚拟机 安装命令:yum install -y ...

  9. tomcat php centeros,linux(center OS7)安装JDK、tomcat、mysql 搭建java web项目运行环境...

    一.安装JDK 1.卸载旧版本或者系统自带的JDK (1)列出所有已安装的JDK rpm -qa | grep jdk (2)卸载不需要的JDK yum -y remove 安装包名称 2.下载并解压 ...

最新文章

  1. 在线作图|如何绘制带分组的散点图
  2. ConcurrentHashMap源码分析(2)——JDK1.8的实现
  3. Zabbix的web界面基本操作
  4. 1. 金融数学中的随机变分法-Wiener空间与Wiener泛函
  5. 中国航天将与人工智能技术携手 未来可期
  6. 用jquery选取表行
  7. javascript变量提升/函数提升
  8. C/C++语言的学习策略
  9. Please make sure you have the correct access rights and the repository exists.
  10. C语言 - 判断素数的函数
  11. 好用的android高清播放器,高清播放器哪个好用(推荐4款4K高清画质播放器)
  12. matlab 仿真wsn,wsn仿真matlab
  13. sql获得当前时间 与 SQL 比较时间大小
  14. php实现根据身份证获取年龄的函数
  15. mac m1 obs录制麦克风+桌面音频
  16. ISO27001测试题
  17. Tomcat:JAVA_HOME should point to a JDK not a JRE解决
  18. jQuery--复制节点clone()详解
  19. 常用限流方案的设计和实现
  20. 正在读《密码王朝》,却忍不住先说两句

热门文章

  1. mysql benchmark 测试工具_BenchmarkSQL数据库基准测试工具
  2. 专利交底书模板_技术交底书该谁来写?
  3. php服务器估算,使用zabbix API估算服务器磁盘空间可用天数
  4. 【错误】【vscode】'#' not expected here
  5. 根据压缩后的行列数和sourcemap反向定位源码
  6. iOS原生实现二维码扫描
  7. CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
  8. mongodb-java-driver基本用法
  9. C语言keywordstatic的绝妙用途
  10. 一起来用Websocket(二):Websocket协议详细分析