第一期-自动搭建openEuler虚拟机QEMU运行环境

本文详细介绍了如何使用脚本自动搭建openEuler虚拟机的QEMU运行环境,包括环境准备、脚本功能解析以及openEuler系统安装步骤。脚本涵盖了从下载依赖到编译QEMU、Linux内核和busybox的过程,同时提供了gdb调试支持。通过此方法,读者可以快速创建一个用于openEuler研究和开发的QEMU环境。

作者:罗宇哲,中国科学院软件研究所智能软件研究中心

本文介绍了一个自动搭建openEuler虚拟机QEMU运行环境的脚本使用方法,本脚本能下载并安装各种依赖项,自动下载并编译安装QEMU4.1.1和busybox 1.25.1,下载并安装对Linux 4.19.1进行ARM64交叉编译并用gdb进行调试的环境,该环境能帮助我们理解openEuler内核的运行,以及下载和QEMU环境下安装openEuler1.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以及依赖项应该都装好了。

  4. 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运行后:

openEuler 系统中使用 QEMU 搭建虚拟机,可以通过手动配置或使用自动化脚本的方式完成。以下是基于已有信息的详细步骤说明: ### 安装 QEMU 及其依赖项 首先确保系统中安装了 QEMU 所需的依赖库: ```bash dnf install -y libglib2-devel pixman-devel libcap-ng-devel libattr-devel ``` 然后下载 QEMU 源码包并解压: ```bash wget https://download.qemu.org/qemu-6.1.0.tar.xz tar -xvf qemu-6.1.0.tar.xz cd qemu-6.1.0 ``` 配置 QEMU 构建选项,启用必要的功能: ```bash ./configure --target-list=arm-softmmu,aarch64-softmmu --enable-virtfs ``` 编译并安装 QEMU: ```bash make && make install ``` ### 启动 ARM64 虚拟机 如果你已经拥有一个 ARM64 的虚拟机镜像,可以直接使用 `qemu-system-aarch64` 命令来启动虚拟机。以下是一个基本的启动命令示例: ```bash qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd ``` 此命令将启动一个没有图形界面的 ARM64 虚拟机,其中 `-M virt-4.0` 指定了虚拟机的机器类型,`-cpu cortex-a57` 设置了 CPU 类型,`-nographic` 禁用了图形输出,`-kernel zImage` 指定了内核镜像,`-initrd initrd` 则指定了初始 RAM 磁盘。 ### 使用共享文件夹和网络 为了增强虚拟机的功能,可以添加共享文件夹和网络支持。例如,使用 9P 文件系统共享主机上的目录: ```bash qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-9p-device,fsdev=fs1,mount_tag=aa -fsdev local,security_model=passthrough,id=fs1,path=/tmp ``` 此命令中的 `-device virtio-9p-device` 和 `-fsdev local` 参数用于设置共享文件夹,`path=/tmp` 表示主机上的共享目录。 对于网络支持,可以使用 TAP 设备来提供虚拟机访问外部网络的能力: ```bash qemu-system-aarch64 -M virt-4.0 -cpu cortex-a57 -nographic -kernel zImage -initrd initrd -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=/etc/qemu-ifup -m 2G ``` 这里的 `-device virtio-net-device` 和 `-netdev tap` 参数用于设置网络接口,`script=/etc/qemu-ifup` 指定了网络初始化脚本。 ### 自动化脚本 如果希望简化搭建过程,可以考虑使用自动化脚本来完成 QEMU 和相关工具的安装与配置。这些脚本通常会处理依赖项的下载和安装,以及 QEMU 和 busybox 的编译安装,甚至包括 Linux 内核的交叉编译调试环境的搭建。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值