记录: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密码:

bash 复制代码
sudo passwd root

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

bash 复制代码
# 参考: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相关的环境:

bash 复制代码
# 参考: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报错,执行:

bash 复制代码
# 参考: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,普通用户添加访问权限:

bash 复制代码
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的架构设置选项:

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

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

bash 复制代码
virt-manager

新建虚拟机:

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

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

Disk设置选Yes:

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

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

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

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

bash 复制代码
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位需要的库:

bash 复制代码
# 启用 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路径替换上去:

bash 复制代码
# 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查看设备:

相关推荐
Once_day4 分钟前
Linux之rsyslog(4)属性配置
linux·服务器
waving-black7 分钟前
Linux中自定义服务开机自启nginx
linux·服务器·nginx
Lenyiin7 分钟前
《 Linux 修炼全景指南: 六 》软件包管理器
linux·运维·服务器
NiKo_W11 分钟前
Linux 重定向与Cookie
linux·运维·服务器·前端·网络·线程·协议
ytttr87315 分钟前
Rocky Linux 8.9配置Kubernetes集群详解,适用于CentOS环境
linux·kubernetes·centos
HLJ洛神千羽15 分钟前
Linux下程序设计综合实验报告——图书管理系统(黑龙江大学)
linux·运维·服务器
Arvin62744 分钟前
Ubuntu 22.04 Docker 安装指南
linux·ubuntu·docker
Arvin6271 小时前
Jenkins Jobs 备份与恢复
linux·运维·服务器
小旺不正经2 小时前
Linux介绍及常用命令
linux·运维·数据库
icy、泡芙2 小时前
移远 5G RG255AA-CN 调试
linux·单片机·5g