Gentoo 安装虚拟机,先搞清楚你要的是哪条路
在 Gentoo 上装虚拟机,主流做法是走 KVM + QEMU + libvirt + virt-manager 这条原生虚拟化路线,内核开启 KVM 与 VirtIO 相关选项、emerge 装好 qemu 和 libvirt、把当前用户加进对应权限组、启动 libvirtd 服务,之后就能用图形界面或 virsh 命令行创建虚拟机,整个流程不需要重启系统。
Gentoo 的哲学是“你来决定系统长什么样”,所以装虚拟机的过程比 Ubuntu 那种一行 apt 装完要啰嗦一些,但换来的是内核干净、性能接近原生,下面按实际操作顺序拆开讲。
gentoo 上装虚拟机需要哪些内核配置
这一步是 Gentoo 和其他发行版最大的差别,也是新手最容易卡住的地方,KVM 不是用户态程序,它必须是内核模块或者直接编进内核。
先确认 CPU 虚拟化支持
在动内核之前,先看硬件给不给面子:
grep -E 'vmx|svm' /proc/cpuinfo
Intel 平台出现 vmx、AMD 平台出现 svm 才算支持,如果没有输出,先去主板 BIOS/UEFI 里打开 Intel VT-x 或 AMD-V(SVM Mode),部分笔记本还藏在高级菜单里。
内核选项怎么勾
用 make menuconfig 进入配置,重点在 Virtualization 菜单下:
- 启用
CONFIG_VIRTUALIZATION CONFIG_KVM选 M 或 Y- Intel 平台勾
CONFIG_KVM_INTEL,AMD 平台勾CONFIG_KVM_AMD CONFIG_VIRTIO_MENU下的VIRTIO_PCI、VIRTIO_BLK、VIRTIO_NET、VIRTIO_CONSOLE全部启用CONFIG_TUN启用,NAT 网络需要它- 如果打算做显卡直通,还要开
CONFIG_VFIO系列
追求稳定可以把 KVM 相关编成模块(M),方便升级内核后单独 modprobe,编完记得 make && make modules_install && make install,然后更新引导。
不想每次手动记选项,可以在 /etc/kernel/config.d/ 下放配置片段,配合 installkernel 自动合并,内核升级时就不会丢配置。
重启后验证:
lsmod | grep kvm
看到 kvm_intel 或 kvm_amd 挂在 kvm 上就成功了。
Gentoo 用 virt-manager 管理虚拟机教程
内核搞定后,软件层反而是最省心的部分,这里的关键是 USE 标志,Gentoo 会因此多编译一会儿,但编出来的东西正好够用。
emerge 之前的 USE 配置
在 /etc/portage/package.use/ 下建个文件,写入:
app-emulation/qemu qemu_softmmu_targets_x86_64 spice usbredir virtfs app-emulation/libvirt qemu virt-network app-emulation/virt-manager gtk
QEMU 默认会编译一大堆架构的模拟器,qemu_softmmu_targets_x86_64 只保留 x86_64,能省下大量编译时间,这一点对 Gentoo 用户来说算常识。
emerge --ask app-emulation/qemu app-emulation/libvirt app-emulation/virt-manager
依赖里会带上 dnsmasq、iptables 之类的东西,据 Gentoo 官方文档说明,virt-network 这个 USE 标志决定是否启用 libvirt 自带的 NAT 网络,不启用的话默认网络起不来。
权限与服务启动
把你自己加进需要的组,不然后面 virt-manager 会一直报权限错误:
usermod -aG libvirt,kvm,qemu 你的用户名
注意要重新登录才生效,接着启动服务,OpenRC 和 systemd 写法不同:
# OpenRC rc-update add libvirtd default rc-service libvirtd start # systemd systemctl enable --now libvirtd
再激活默认 NAT 网络:
virsh net-start default virsh net-autostart default
网络与存储:桥接和存储池的实操
虚拟机能跑起来之后,这部分的差异才会体现出来,NAT 网络开箱即用,但虚拟机对外不可见;桥接能让虚拟机在局域网里拥有独立 IP,配置稍微麻烦一点。
桥接网络的配置路径
Gentoo 走的是 OpenRC 的 netifrc 体系,先装 net-misc/bridge-utils,然后建 /etc/conf.d/net:
config_br0="192.168.1.50/24" routes_br0="default via 192.168.1.1" bridge_br0="eth0"
再建一个软链接 /etc/init.d/net.br0 指向 net.lo,加进默认运行级别,配置文件比较长,改动时务必确保能通过物理控制台或 IPMI 恢复,否则容易把自己锁在外面。
如果用的是 systemd-networkd 或 NetworkManager,配置方式完全不同,按你系统实际的管理栈来。
存储池别用默认路径硬扛
libvirt 默认镜像目录是 /var/lib/libvirt/images,放在根分区上,跑几台虚拟机就容易把 / 撑满,更稳妥的做法是单独划一个分区或挂载大盘,然后定义新存储池:
virsh pool-define-as vmpool dir --target /data/vms virsh pool-build vmpool virsh pool-start vmpool virsh pool-autostart vmpool
磁盘格式上,qcow2 支持快照和动态扩容,是大多数场景的首选;要求极致 IO 再考虑裸设备或 raw。
创建第一台虚拟机,两种方式都行
图形界面用 virt-manager,本地登录桌面后直接启动即可,也可以在另一台机器上用 SSH 远程连接:virt-manager -c qemu+ssh://用户@主机/system。
命令行方式更适合服务器环境,一条命令能跑起一台临时机器:
qemu-system-x86_64 -enable-kvm -cpu host -smp 4 -m 8192 \ -drive file=/data/vms/test.qcow2,if=virtio \ -cdrom gentoo-install-amd64.iso -boot d
-cpu host 把宿主机 CPU 特性透传给虚拟机,if=virtio 用 VirtIO 磁盘驱动,这两项对性能影响最直接。
创建时几个参数值得留意:内存别超过宿主机可用内存的七成,CPU 核心数不超过物理核心数,否则宿主机和虚拟机一起卡。
Gentoo KVM 与 VirtualBox 性能对比怎么选
有人习惯 VirtualBox,因为它跨平台、界面友好,但在 Gentoo 这种滚动更新的源码发行版上,VirtualBox 的模块要跟着内核版本重编,每次内核升级都得 emerge @module-rebuild,忘记一次就用不了。
| 对比项 | KVM + QEMU | VirtualBox |
|---|---|---|
| 性能 | 接近原生,VirtIO 驱动效率高 | 有额外虚拟化层开销 |
| 内核耦合 | 主线内核自带,升级无感 | 外部模块,需随内核重编 |
| 图形界面 | virt-manager,功能齐全 | 自带完整 GUI |
| 快照与克隆 | qcow2 快照,灵活 | 自带快照功能,易用 |
| 授权 | 全部开源免费 | 本体免费,扩展包有授权限制 |
| 适合场景 | 服务器、开发测试、长期运行 | 桌面轻量试用、Windows 客户机 |
行业共识认为,长时间运行、追求 IO 性能的场景应该选 KVM;只是偶尔装个系统试试、又不想折腾内核的,VirtualBox 更省事,价格上两者都是零成本,真正的成本是你维护内核模块的时间。
常见问题 Q&A:Gentoo 安装虚拟机
低配置电脑能跑 Gentoo 虚拟机吗
能跑,但要看配置,宿主机 8GB 内存分 2 到 4GB 给虚拟机,跑个精简 Linux 没问题,真正拖后腿的是机械硬盘和只有双核的 CPU,虚拟机启动和编译都会很慢,这种场景下建议关闭虚拟机图形界面,用 SSH 连接,能省下大量资源,另外确认 CPU 支持硬件虚拟化,纯软件模拟的性能差距相当大。
国内 Gentoo 虚拟机镜像下载慢怎么办
Gentoo 官方 ISO 和 stage 文件在国内直连确实慢,可以换用国内高校或云厂商提供的镜像站,/etc/portage/make.conf 里的 GENTOO_MIRRORS 同步改掉,emerge 下载源码包的速度会明显改善,虚拟机里装的客户机系统也一样,装 Debian、Ubuntu 时优先选国内镜像源。
Gentoo 安装虚拟机后启动报 KVM 权限错误怎么排查
先看 /dev/kvm 是否存在:ls -l /dev/kvm,不存在说明内核模块没加载或 CPU 虚拟化没开;存在但权限是 root:root 且当前用户不在组里,就会报 Permission denied,把用户加进 kvm 和 libvirt 组,重新登录,再确认 libvirtd 服务处于运行状态,多数情况就能解决。
整套流程走下来,Gentoo 装虚拟机的门槛主要集中在内核配置那一步,剩下的软件安装和网络配置和其他发行版区别不大,内核选项勾对、VirtIO 驱动用上,你得到的就是一台性能损耗很小的虚拟化环境,后续升级内核也不会像 VirtualBox 那样反复折腾。