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

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端)

因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程

先在VMWare中安装一个Ubuntu 18 x86_64虚拟机

VMWare设置虚拟化:

启动x86_64 Ubuntu虚拟机,部分操作可能需要超级管理权限,设置下root密码:

sudo passwd root

 检测下当前环境是否支持虚拟化:

# 参考:https://linux.cn/article-9516-1.html
# 检查是否支持虚拟化
# 1.使用 egrep 命令查明你的CPU是否支持,输出要大于0
egrep -c 'vmx|svm' /proc/cpuinfo
# 2.使用 cpu-checker 工具检测
sudo apt install cpu-checker
kvm-ok

没问题后开始安装virt-manager相关的环境:

# 参考:https://blog.csdn.net/networken/article/details/136747410
sudo apt update -y
# qemu+kvm
sudo apt install -y qemu-kvm 
# libvirt
sudo apt install -y virt-manager libvirt-daemon-system libvirt-clients virtinst 
# bridge tool
sudo apt install -y bridge-utils

qemu-kvm - 为 KVM 管理程序提供硬件模拟的软件程序

virt-manager - 图形化的虚拟机管理工具,用于管理KVM、QEMU等虚拟机

libvirt-daemon-system - 将 libvirt 守护程序作为系统服务运行的配置文件

libvirt-clients - 用来管理虚拟化平台的软件

virtinst - 用来创建虚拟机的命令行工具

bridge-utils - 用来配置网络桥接的命令行工具

安装时如果遇到lvm2报错,执行:

# 参考:https://blog.csdn.net/watt1208/article/details/138967796
# 可能需要进入su执行
systemctl unmask lvm2-lvmetad.socket
systemctl restart lvm2-lvmetad.socket
systemctl unmask lvm2-lvmpolld.socket
systemctl restart lvm2-lvmpolld.socket
dpkg --configure lvm2

 默认只有管理权限才能访问kvm,普通用户添加访问权限:

sudo adduser <username> libvirt
sudo adduser <username> kvm

virt-manager装好后,去下载我们的Linux arm镜像,我用的Ubuntu-18.04.6-server-arm64.iso:

https://cdimage.ubuntu.com/ubuntu/releases/

解锁virt-manager的架构设置选项:

# 参考:https://www.cnblogs.com/ishmaelwanglin/p/17821825.html
sudo apt install -y qemu-system-arm  ovmf qemu-efi

终端命令或程序列表里打开virt-manager:

virt-manager

新建虚拟机:

参考:https://blog.csdn.net/luyixiaoqingge/article/details/136364652

点左上角开始安装后,一路默认安装

Disk设置选Yes:

因为配置较差,安装了几十分钟

这里选的SSH,又安装了几十分钟

装好后,关闭虚拟机,设置共享文件夹挂载路径:

重新开机后,设置 root 密码,在 root 权限下操作:

apt update -y
# 挂载前先安装 nfs-common 或者 nfs-utils
apt install -y nfs-common 
# 然后将之前设置的 shared 标记挂载到虚拟机指定目录
# 参考:https://blog.csdn.net/ww7109/article/details/133129777
mount -t 9p -o trans=virtio shared /demo

遇到文件或者文件夹权限问题(Permission denied),无脑chmod 777 加权限,外部内部都加上

有时挂载遇到报错(一般启动有ERROR信息就会遇到),重启下虚拟机

虚拟机是64位的,安装运行32位需要的库:

# 启用 32 位架构支持
dpkg --add-architecture armhf
apt update -y
# 安装此架构 C/C++ 标准库
apt install -y libc6:armhf libstdc++6:armhf
# 装完标准库后可能还不能运行带 so 动态库的程序,安装 multilib
# multilib 支持系统上同时编译和运行 32 位和 64 位程序
apt install -y gcc-multilib g++-multilib

用 ldd 查看 32 位程序提示 not a dynamic executable:

先找到 ldd 和 ld-linux 位置:

修改ldd的RTLDLISTL路径,或者复制一份ldd命名为ldd32,编辑ldd32文件把32位的ld-linux路径替换上去:

# cp /usr/bin/ldd /usr/bin/ldd32
# 原值 RTLDLIST=/lib/ld-linux-aarch64.so.1
RTLDLIST=/lib/ld-linux.so.3
# 或者修改原来的ldd,加引号,空格隔开
RTLDLIST="/lib/ld-linux-aarch64.so.1 /lib/ld-linux.so.3"

可以用vi编辑ldd文件,输入i进入编辑模式,编辑完ESC退出编辑,再输入:wq或者:wq!保存退出

执行ldd32:

挂载USB设备直接在virt-manager里设置,这里以一个USB硬盘为例:

会在设备列表里多一个设备信息:

在虚拟机里执行lsusb查看设备:

http://www.lryc.cn/news/506190.html

相关文章:

  • clickhouse-介绍、安装、数据类型、sql
  • 【shell】常用100个shell命令使用讲解
  • Git-分支(branch)常用命令
  • 谈谈es6 Map 函数
  • 微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列
  • 【Unity3D】无限循环列表(扩展版)
  • MacOS 命令行详解使用教程
  • redis集群安装部署 redis三主三从集群
  • 第十二课 Unity 内存优化_内存工具篇(Memory)详解
  • 达梦8-达梦数据的示例用户和表
  • 数据可视化-1. 折线图
  • 【现代服务端架构】传统服务器 对比 Serverless
  • 论文学习—VAE
  • AI 智能体(AI Agent)到底什么原理?能干什么事情
  • 【mysql】如何查看大表记录行数
  • Linux之网络配置
  • SpringBoot集成JWT和Redis实现鉴权登录功能
  • LabVIEW热电偶传感器虚拟仿真实验系统
  • Centos7 部署ZLMediakit
  • Docker搭建kafka环境
  • wsl2-ubuntu安装docker后无法拉取镜像
  • Invalid bound statement (not found) 错误解决
  • 深度学习的下一站:解锁人工智能的新边界
  • 搭建Tomcat(三)---重写service方法
  • 跟着AI 学AI开发二,本地部署自己的Chat GPT
  • XXE靶机漏洞复现通关
  • XS9922B 同轴RX芯片 四通道 多合一模拟高清解码器
  • 如何在谷歌浏览器中设置电子邮件通知
  • 利用Java获取淘宝商品详情API接口的深入指南引言
  • 3D工具显微镜的测量范围