当前位置: 首页 > news >正文

【Linux】ARM服务器命令行安装虚拟机

在Arm服务器上安装虚拟机操作笔记

  • 一、基础环境准备
    • 1、环境准备
    • 2、检查KVM支持
    • 3、启动并启用libvirtd服务
    • 4、创建虚拟网络(可选)
    • 5、使用virt-manager创建虚拟机(支持KVM)
    • 6、管理虚拟机
    • 9、监控和日志
  • 二、软虚拟化替代方案
    • 1、查看虚拟机CPU可支持类型:
    • 2、创建虚拟硬盘
    • 3、使用命令行启动虚拟机并进行操作系统安装

一、基础环境准备

1、环境准备

确保你的Linux系统已经更新,并且安装了必要的依赖包。

sudo apt update
sudo apt upgrade -y
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

2、检查KVM支持

egrep -c '(vmx|svm)' /proc/cpuinfo

如果输出的结果大于0,说明你的CPU支持虚拟化。

3、启动并启用libvirtd服务

sudo systemctl enable libvirtd
sudo systemctl start libvirtd

4、创建虚拟网络(可选)

如果你需要虚拟机有外部网络访问,可以创建一个桥接网络。

sudo virsh net-start default
sudo virsh net-autostart default

5、使用virt-manager创建虚拟机(支持KVM)

安装virt-manager后,你可以使用GUI来创建和管理虚拟机。1、打开virt-manager。
2、点击“新建虚拟机”按钮。
3、选择安装介质(ISO文件或网络引导)。
4、设置虚拟机名称、内存、CPU等资源分配。
5、配置虚拟磁盘大小。
6、网络配置可以选择桥接或NAT模式。
7、最后,启动虚拟机,进行操作系统的安装。

命令行安装:
可以使用virt-install工具进行安装

sudo virt-install \
--name=vm_name \
--vcpus=2 \ #CPU核数
--memory=2048 \ #内存大小
--cdrom=/path/to/iso \  #镜像文件路径
--disk size=20 \ #磁盘大小
--os-type=linux \ #系统类型
--network network=default,model=virtio \ #网络,选择默认网桥
--graphics vnc,listen=0.0.0.0 \ 
--noautoconsole

6、管理虚拟机

使用以下命令来管理虚拟机:

列出所有虚拟机:

sudo virsh list --all

启动虚拟机:

sudo virsh start vm_name

关闭虚拟机:

sudo virsh shutdown vm_name

删除虚拟机:

sudo virsh undefine vm_name

9、监控和日志

使用virt-top工具可以监控虚拟机的资源使用情况。

sudo apt install virt-top
sudo virt-top

二、软虚拟化替代方案

如果你的CPU确实不支持硬件虚拟化,或者你无法启用此功能,仍然可以使用软件虚拟化技术,例如使用QEMU的全软件仿真模式来创建虚拟机,但性能会较低。

可以使用以下命令创建一个不依赖硬件虚拟化的虚拟机:
x86:

sudo qemu-system-x86_64 -cdrom /path/to/iso -m 1024 -hda myvirtualdisk.img

ARM:

qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 1024 -nographic -smp 2 \-kernel /path/to/kernel -append "console=ttyAMA0" -hda /path/to/disk.img

参数说明:

-machine virt: 指定虚拟机类型为通用ARM虚拟平台。
-cpu cortex-a57: 使用ARM Cortex-A57 CPU型号。
-m 1024: 分配1024MB内存。
-nographic: 不使用图形界面,直接在终端运行。
-smp 2: 分配2个CPU核心。
-kernel /path/to/kernel: 指定内核镜像的路径。
-append "console=ttyAMA0": 启动时附加的内核参数,指定控制台为串口。
-hda /path/to/disk.img: 指定虚拟硬盘的路径。

1、查看虚拟机CPU可支持类型:

使用以下命令列出QEMU支持的CPU类型:

qemu-system-aarch64 -cpu help

设备类型:

qemu-system-aarch64 -machine help

2、创建虚拟硬盘

创建一个50GB的虚拟硬盘文件,用于安装操作系统。

qemu-img create -f qcow2 /iso/img/mykylin.img 50G

执行结果:

root@FT-2000-pc:/iso# qemu-img create -f qcow2 /iso/img/mykylin.img 50G
Formatting '/iso/img/mykylin.img', fmt=qcow2 size=53687091200 cluster_size=65536 lazy_refcounts=off refcount_bits=16

3、使用命令行启动虚拟机并进行操作系统安装

使用以下命令启动虚拟机,并从ISO镜像启动安装程序。

qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 4096 -smp 2 \-nographic -drive if=none,file=/iso/img/mykylin.img,id=hd0 \-device virtio-blk-device,drive=hd0 \-cdrom /iso/kylin/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso \-boot d -device virtio-net-device,netdev=net0 \-netdev user,id=net0,hostfwd=tcp::2222-:22

参数说明
-machine virt: 通用的ARM虚拟机平台,适用于多种ARM CPU架构,包括aarch64。
-cpu cortex-a57: 使用Cortex-A57 CPU模型,这是QEMU中常用的ARMv8-A CPU类型。
-m 4096: 分配4GB内存。
-smp 2: 分配2个CPU核心。
-nographic: 以命令行方式运行,不使用图形界面。
-drive if=none,file=/iso/img/mykylin.img,id=hd0: 连接50GB虚拟硬盘。
-device virtio-blk-device,drive=hd0: 使用Virtio驱动,提升磁盘性能。
-cdrom /iso/kylin/Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso: 使用ISO镜像文件进行安装。
-boot d: 从光盘启动,进行操作系统安装。
-device virtio-net-device,netdev=net0: 使用Virtio网络设备,提升网络性能。
-netdev user,id=net0,hostfwd=tcp::2222-:22: 设置用户模式网络,并将宿主机的2222端口映射到虚拟机的22端口(用于SSH连接)。

相关文章:

【Linux】ARM服务器命令行安装虚拟机

在Arm服务器上安装虚拟机操作笔记 一、基础环境准备1、环境准备2、检查KVM支持3、启动并启用libvirtd服务4、创建虚拟网络(可选)5、使用virt-manager创建虚拟机(支持KVM)6、管理虚拟机9、监控和日志 二、软虚拟化替代方案1、查看虚…...

Android 10.0 锁屏页面忘记锁屏密码情况下点击5次解锁图标弹出锁屏密码功能实现

1. 前言 在10.0的系统ROM定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求在锁屏密码页面在忘记解…...

Java-CompletableFuture工具类

CompletableFuture 是 Java 8 引入的一个强大的异步编程工具,它提供了对异步计算的高级支 持,包括组合多个任务的能力、处理结果、异常处理等。为了方便地使用 CompletableFuture,你 可以创建一个工具类来封装常用的操作。 CompletableFuture 工具类 下面是一个 Complet…...

C语言:递归

递归简单来说就是函数自己调用自己。 特点&#xff1a;一般代码比较简洁&#xff0c;没有出口。 例子1&#xff1a;用一个函数计算阶乘 #include<stdio.h>//不用递归 int fac(int n) {int val 1;for (int i 1; i <n;i){val * i;}return val; }//用递归 int fac1(…...

自动化测试框架pytest+allure+requests

最近复习了一下关于自动化测试的内容&#xff0c;结合[码尚教育] 相关的思路来对测试框架进行开发。 争取实现零代码来实现自动化测试环境的搭建 AutoTestFrame 介绍 AutoTestFrame是一个基于Python的自动化测试框架&#xff0c;旨在帮助测试人员快速、高效地完成测试任务。…...

Python 笔记 numpy.ndarray切片

NumPy 的 ndarray 类型提供了非常灵活的切片功能&#xff0c;可以方便地访问和操作数组中的元素。切片允许您通过指定索引来选择数组的一部分。下面是一些基本的切片操作及其解释。 一维数组的切片 对于一维数组&#xff0c;切片操作类似于 Python 列表的切片。 示例 impor…...

一、HTML5知识点精讲

一、HTML5介绍 html是用来描述网页的一种语言&#xff08;就是写网页的一种语言&#xff09;。 它和CSS&#xff0c;JS称为网页三要素。 HTML负责把元素简单呈现在网页上&#xff0c;是网页的身体CSS负责给网页元素添加各种样式&#xff0c;是网页的衣服JS负责实现各种动态、…...

【杂乱算法】前缀和与差分

前缀和 文章目录 前缀和一维应用 二维差分一维 二维扩展1、前缀和与哈希表 一维 一个数组prefix中&#xff0c;第i个元素表示nums[0]至nums[i-1]的总和&#xff0c;那么我们就称这个prefix数组是nums数组的前缀和。 prefix [ i ] ∑ j 0 i nums [ j ] \text{prefix}[i] \s…...

Arduino调试ESP32常见问题 exit status 1

问题1&#xff1a;代码上传&#xff08;烧录&#xff09;报Failed uploading: uploading error: exit status 1大概率原因&#xff1a;没有安装对应的驱动&#xff0c;我的ESP32驱动是CH340点击这里下载CH340 下载后打开&#xff0c;若出现乱码不用在意&#xff0c;点击第一个按…...

“决胜面试:高频题目与算法策略一览”

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

Node-RED的安装

最近对Node-RED比较感兴趣&#xff0c;因为在上OpenHarmony课程的时候&#xff0c;一直想找一个可以通过MQTT控制设备的低代码客户端解决方案。第一次指导Node-RED是在试用聆思开发板的时候&#xff0c;它的云端就是使用的Node-RED。 在安装Node-RED之前&#xff0c;请确保您的…...

java中的Collections

Java 的集合框架(Collections Framework)提供了一组标准的数据结构接口和类,用于存储和操作数据。Java 集合类位于 java.util 包中,主要包括以下几个核心接口和实现类。 1. 核心接口 1.1. Collection 接口 Collection 是集合框架的根接口,但它本身并不提供任何直接实现…...

linux Qt QkeyEvent及驱动键盘按键捕获

基于正点原子 QT中有专门的类处理键盘事件的类QKeyEvent 1.include “QKeyEvent” 查看它的说明中的描述 也就是说接受按键事件在keyPressEvent和keyReleaseEvent这两个函数&#xff0c;继续查看 重构这个函数 查看输入的QKeyEvent类&#xff0c;发现有一个方法key返回哪一个按…...

【GH】【EXCEL】P6: Shapes

文章目录 componentslinepicture components line picture Picture A Picture object Input parameters: Worksheet (Generic Data) A Worksheet, Workbook, Range Object, Excel Application, or Text Worksheet NameName (Text) An optional object nameLocation (Point) A p…...

google浏览器chrome用户数据(拓展程序,书签等)丢失问题

一、问题背景 我出现这个情况的问题背景是&#xff1a;因为C盘块满了想清理一部分空间&#xff08;具体看这&#xff1a;windows -- C盘清理_c盘softwaredistribution-CSDN博客&#xff09;&#xff0c;于是找到了更改AppDatta这个方法&#xff0c;但因为&#xff0c;当时做迁移…...

数据结构——链式队列和循环队列

目录 引言 队列的定义 队列的分类 1.单链表实现 2.数组实现 队列的功能 队列的声明 1.链式队列 2.循环队列 队列的功能实现 1.队列初始化 (1)链式队列 (2)循环队列 (3)复杂度分析 2.判断队列是否为空 (1)链式队列 (2)循环队列 (3)复杂度分析 3.判断队列是否…...

数据库死锁解决方法,学费了吗?

避免死锁&#xff1a;尽量设计良好的数据库结构&#xff0c;避免出现死锁的情况。可以使用合适的事务隔离级别&#xff0c;以及良好的并发控制策略。 死锁检测和回滚&#xff1a;当检测到死锁时&#xff0c;可以使用死锁检测算法来确定死锁的存在&#xff0c;并回滚其中一个或…...

API网关之Apache ShenYu

Apache ShenYu&#xff08;原名Soul&#xff09;是一个开源的API网关&#xff0c;旨在支持高性能、跨语言和云原生架构。它为管理和控制客户端与服务之间的数据流提供了一种高效且可扩展的解决方案。 文档见 Apache ShenYu 介绍 | Apache ShenYu 以下是Apache ShenYu的详细介…...

ECMA Script 6

文章目录 DOM (Document Object Model)BOM (Browser Object Model) let 和 const 命令constObject.freeze方法跨模块常量全局对象的属性 变量的结构赋值数组结构赋值对象解构赋值字符串解构赋值数值和布尔值的解构赋值函数参数解构赋值圆括号的问题 解构赋值的用途 字符串的扩展…...

如何在不破产的情况下训练AI模型

在当今的人工智能领域,训练复杂的AI模型——特别是大型语言模型(LLM)——需要巨大的算力支持。对于许多中小型企业来说,高昂的成本常常成为一个难以逾越的障碍。然而,通过采用一些策略和最佳实践,即使是在资源有限的情况下,也能有效地训练出高质量的AI模型。本文将介绍几…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...