环境说明

  • 不改动、已经调好的 IOMMU、vendor‑reset、libvirt、qemu

  • 单 RX580 显卡、无核显,全程 SSH 操作

  • Web 端口:9869,浏览器访问 http://你的IP:9869

添加官方源

sudo wget -q -O- https://downloads.opennebula.io/repo/repo.key | sudo gpg --dearmor -o /usr/share/keyrings/opennebula.gpg

报错

sudo echo "deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula" | sudo tee /etc/apt/sources.list.d/opennebula.list

deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula

shitou@shitou-To-be-filled-by-O-E-M:~$

直接

sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 05A05927906DC27C

sudo gpg --export 05A05927906DC27C | sudo tee /usr/share/keyrings/opennebula.gpg > /dev/null

下面确认源文件输出正确,

sudo gpg --export 05A05927906DC27C | sudo tee /usr/share/keyrings/opennebula.gpg > /dev/null

shitou@shitou-To-be-filled-by-O-E-M:~$ cat /etc/apt/sources.list.d/opennebula.list

deb [signed-by=/usr/share/keyrings/opennebula.gpg] https://downloads.opennebula.io/repo/7.4/Ubuntu/24.04 stable opennebula

然后更新apt

shitou@shitou-To-be-filled-by-O-E-M:~$ sudo apt update

如果还是报错

# 如果 keyserver 网络抽风(上面还报错),备用方案

> 
> wget 下载 key,直接生成 `opennebula.gpg`,不走 keyserver

```
sudo rm -f /usr/share/keyrings/opennebula.gpg
sudo wget -q https://downloads.opennebula.io/repo/repo.key -O /tmp/opennebula.key
sudo gpg --dearmor /tmp/opennebula.key
sudo mv /tmp/opennebula.key.gpg /usr/share/keyrings/opennebula.gpg
sudo rm /tmp/opennebula.key
sudo apt update
```

安装ALL- in-one 命令

sudo apt install opennebula opennebula-fireedge opennebula-gate opennebula-flow opennebula-node-kvm -y

表格

包名

作用

opennebula

核心调度、oned 主服务、数据库

opennebula‑fireedge

新版 Sunstone 网页 UI(9869 端口),替代旧 opennebula‑sunstoneGitHub

opennebula‑gate

VM 内部代理服务

opennebula‑flow

工作流、自动化编排

opennebula‑node‑kvm

本地 KVM 计算节点,all‑in‑one 必须装

启动并设置开机自启,

shitou@shitou-To-be-filled-by-O-E-M:~$ sudo systemctl enable --now opennebula opennebula-fireedge opennebula-gate opennebula-flow

[sudo] shitou 的密码:

Created symlink /etc/systemd/system/multi-user.target.wants/opennebula.service → /usr/lib/systemd/system/opennebula.service.

Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-fireedge.service → /usr/lib/systemd/system/opennebula-fireedge.service.

Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-gate.service → /usr/lib/systemd/system/opennebula-gate.service.

Created symlink /etc/systemd/system/multi-user.target.wants/opennebula-flow.service → /usr/lib/systemd/system/opennebula-flow.service.

查看状态,

shitou@shitou-To-be-filled-by-O-E-M:~$ sudo systemctl status opennebula

● opennebula.service - OpenNebula Cloud Controller Daemon

Loaded: loaded (/usr/lib/systemd/system/opennebula.service; enabled; prese>

Active: active (running) since Thu 2026-09-10 09:49:46 CST; 19s ago

Process: 13235 ExecStartPre=/usr/share/one/pre_cleanup (code=exited, status>

Main PID: 13236 (oned)

Tasks: 97 (limit: 16884)

Memory: 348.9M (peak: 435.9M)

CPU: 5.041s

CGroup: /system.slice/opennebula.service

├─13236 /usr/bin/oned -f

├─13239 ruby /usr/lib/one/mads/one_hm.rb -p 2101 -l 2102 -b 127.0.>

├─13263 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 kvm -p

├─13280 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 lxc

├─13297 ruby /usr/lib/one/mads/one_vmm_exec.rb -t 15 -r 0 kvm

├─13316 ruby /usr/lib/one/mads/one_tm.rb -t 15 -d dummy,lvm,shared>

├─13339 ruby /usr/lib/one/mads/one_auth_mad.rb --authn ssh,x509,ld>

├─13354 ruby /usr/lib/one/mads/one_datastore.rb -t 15 -d dummy,fs,>

├─13371 ruby /usr/lib/one/mads/one_market.rb -t 15 -m http,s3,one,>

├─13388 ruby /usr/lib/one/mads/one_ipam.rb -t 1 -i dummy,aws,equin>

├─13402 ruby /usr/lib/one/mads/one_sched.rb -t 15 -p rank -o one_d>

├─13417 /usr/lib/one/mads/onemonitord "-c monitord.conf"

├─13418 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 kvm

├─13431 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 lxc

└─13444 ruby /usr/lib/one/mads/one_im_exec.rb -r 3 -t 15 -w 90 qemu

9月 10 09:49:39 shitou-To-be-filled-by-O-E-M systemd[1]: Starting opennebula.se>

9月 10 09:49:46 shitou-To-be-filled-by-O-E-M systemd[1]: Started opennebula.ser>

shitou@shitou-To-be-filled-by-O-E-M:~$

shitou@shitou-To-be-filled-by-O-E-M:~$ ```

查看初始密码,

sudo cat /var/lib/one/.one/one_auth

oneadmin:otJomjiupev0

shitou@shitou-To-be-filled-by-O-E-M:~$

如果 ufw 防火墙开着,放行端口:

# 切换到oneadmin用户,生成密钥
sudo su - oneadmin
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试免密ssh连本机hostname
ssh $(hostname)


shitou@shitou-To-be-filled-by-O-E-M:~$
sudo cat /var/lib/one/.one/one_auth
oneadmin:otJomjiupev0


shitou@shitou-To-be-filled-by-O-E-M:~$ sudo ufw allow 9869/tcp
防火墙规则已更新
规则已更新(v6)
端口错误,

新版端口 是2616

3. 校验 KVM 计算节点环境(重点,你之前 libvirt 环境)

# 检查虚拟化
grep -E 'vmx|svm' /proc/cpuinfo
# 检查libvirt
sudo systemctl status libvirtd
sudo virsh net-list --all

注意:OpenNebula 会接管 libvirt,你之前的default NAT 网络可以保留,后面在 OpenNebula 里新建虚拟网络。


4. 把本机添加为 OpenNebula 计算主机(All-in-one 必须做)

  1. 登录 http://IP:9869 Sunstone 面板

  2. 左侧菜单【主机】→【添加主机】

  3. 主机名填本机 hostname,驱动选 KVM

  4. 勾选自动探测,提交

提交后看状态,如果是绿色 ON 代表计算节点正常就绪;红色就是 KVM/libvirt 权限问题。

5. 存储规划(对应你机器:sda 系统盘,sdb 465G 裸盘)

  • OpenNebula 自带本地存储:默认放在 /var/lib/one/datastores(sda)

  • 空闲盘 /dev/sdb:可以新建块存储数据存储,给虚拟机做数据盘,不要放系统镜像,避免占满 sda

面板【存储】→【数据存储】新建,类型选块 / 文件

6. 网络规划(复用你 libvirt default NAT)

两种选择:

  1. NAT 模式(最简单,和 virsh default 一样,虚拟机上网)

  2. 桥接模式(虚拟机直接局域网 IP,适合后面 Windows 虚拟机)

7. 和你之前单显卡直通的关联

OpenNebula 底层还是调用 libvirt+QEMU,单显卡 VFIO 直通的配置,在 OpenNebula 的虚拟机模板里同样可以添加 PCI 透传设备,不需要重新写 xml,只是在云平台层面管理。