Gentoo虚拟机安装时,内核选项的核心原则是:按虚拟化平台选择半虚拟化驱动,优先启用virtio、VMware或VirtualBox客户机支持,关闭物理机才需要的硬件驱动,并用initramfs兜住根文件系统。 照搬物理机内核配置,或者直接make defconfig一路到底,往往会让虚拟机启动时找不到根设备,或者网络、共享目录失灵。
Gentoo虚拟机安装内核选项怎么选?先抓住三条主线
虚拟机里的Gentoo内核,和裸机Gentoo内核不是一回事,裸机要面对千奇百怪的网卡、声卡、无线芯片;虚拟机硬件相对固定,驱动可以精准得多,选择内核选项时,先抓住三条主线。
虚拟机内核不是物理机内核的缩小版
- 虚拟机的磁盘控制器通常是virtio-blk、VMware PVSCSI、VirtualBox AHCI或LSI Logic。
- 虚拟机的网卡通常是virtio-net、vmxnet3、e1000或e1000e。
- 虚拟机的显卡、共享文件夹、时间同步依赖客户机工具驱动。
如果这些驱动没有内建到内核,或者没有打进initramfs,启动阶段就会报Unable to mount root fs,据Gentoo Handbook,内核配置和initramfs生成是安装过程中最容易出错的环节之一。
先收集虚拟机硬件信息
在Gentoo LiveCD或LiveUSB里,先别急着make menuconfig,用下面几条命令把虚拟机暴露的硬件记下来:
lspci -nnk:查看PCI设备、厂商ID和当前内核驱动。lsmod:查看LiveCD已经加载了哪些模块。lsblk -f:确认根分区对应的磁盘设备名。ip link:查看网卡名称和驱动。
在KVM/QEMU虚拟机里,你大概率会看到Virtio network device和Virtio block device;在VMware里会看到VMXNET3和PVSCSI;在VirtualBox里会看到VirtualBox Guest Service和Intel PRO/1000,把这些信息记下来,后面在menuconfig里直接搜驱动名。
内核配置入口与编译流程
进入内核源码目录,常用流程如下:
cd /usr/src/linuxmake menuconfig- 按搜索
VIRTIO、VMXNET3、VBOXGUEST等关键词 - 保存后执行
make -j$(nproc) make modules_installmake install- 生成initramfs:
genkernel --install initramfs或dracut --force - 更新引导:
grub-mkconfig -o /boot/grub/grub.cfg
如果使用genkernel,可以运行genkernel --menuconfig --install all,再在菜单里调整,多数情况下,虚拟机内核不需要

CONFIG_DEBUG_INFO,关掉它能明显缩短编译时间。
VMware和VirtualBox下Gentoo内核配置区别
这两个平台都支持Gentoo,但半虚拟化设备不同,业内专家指出,混淆两者的驱动选项,是虚拟机装Gentoo后网络不通的常见原因。
VMware平台:vmxnet3、pvscsi和VMCI
在VMware Workstation、ESXi或vSphere里,建议启用以下选项:
CONFIG_VMXNET3:VMXNET3万兆网卡驱动。CONFIG_VMWARE_PVSCSI:PVSCSI存储控制器。CONFIG_VMWARE_VMCI和CONFIG_VMWARE_VMCI_VSOCKETS:客户机与宿主机通信。CONFIG_VMWARE_BALLOON:内存气球驱动。CONFIG_FUSION和CONFIG_FUSION_SPI:如果使用LSI Logic控制器。CONFIG_EXT4_FS:根文件系统。CONFIG_VIRTIO相关:部分新版VMware也支持virtio,可按需启用。
如果安装open-vm-tools,还需要CONFIG_VMWARE_VMCI和CONFIG_VMXNET3,否则vmtoolsd可能无法正常上报IP和心跳。
VirtualBox平台:vboxguest、vboxsf和AHCI
在VirtualBox里,重点选项如下:
CONFIG_VBOXGUEST:VBoxGuest客户机驱动。CONFIG_VBOXSF_FS:共享文件夹文件系统。CONFIG_DRM_VBOXVIDEO:显卡驱动,用于调整分辨率。CONFIG_SATA_AHCI:默认SATA控制器。CONFIG_E1000和CONFIG_E1000E:Intel网卡驱动。CONFIG_PCNET32:旧版AMD PCnet网卡。
VirtualBox默认磁盘控制器是AHCI,网络是Intel PRO/1000 MT Desktop,如果你把磁盘改成virtio,需要额外启用CONFIG_SCSI_VIRTIO和CONFIG_VIRTIO_BLK,共享文件夹依赖vboxsf,不装客户机增强功能时,这个选项可以先关。
两个平台的内核选项对比
| 项目 | VMware | VirtualBox | KVM/QEMU |
|---|---|---|---|
| 网络驱动 | vmxnet3 | e1000/e1000e | virtio-net |
| 存储驱动 | pvscsi/LSI Logic | AHCI | virtio-blk/scsi |
| 客户机工具 | VMCI/balloon | vboxguest/vboxsf | virtio-balloon/9p |
| 显卡驱动 | vmwgfx | vboxvideo | virtio-gpu |
| 推荐策略 | 半虚拟化优先 | 默认设备优先 | virtio全套 |
云服务器安装Gentoo内核编译要开启哪些选项

国内不少用户会在KVM云主机上安装Gentoo,云服务器安装Gentoo内核编译要开启哪些选项,其实和本地KVM虚拟机高度相似,但更强调精简和远程可维护性。
KVM/QEMU云主机的virtio清单
云主机通常使用KVM,建议把以下选项编译进内核或做成模块:
CONFIG_VIRTIO_PCI、CONFIG_VIRTIO_BLK、CONFIG_VIRTIO_NETCONFIG_SCSI_VIRTIO、CONFIG_VIRTIO_CONSOLECONFIG_VIRTIO_BALLOON、CONFIG_VIRTIO_INPUTCONFIG_HW_RANDOM_VIRTIOCONFIG_PARAVIRT、CONFIG_KVM_GUEST、CONFIG_PARAVIRT_CLOCKCONFIG_9P_FS、CONFIG_NET_9P_VIRTIO,用于共享目录
如果根分区在virtio磁盘上,CONFIG_VIRTIO_BLK不能做成模块后不放进initramfs,否则内核启动时无法挂载根,简单做法是直接内建:在menuconfig里把<M>改成<>。
引导与根文件系统
云主机一般没有本地控制台,选错内核选项后只能通过VNC或救援模式恢复,生成initramfs时,确认包含:
virtio_blkvirtio_pciext4或xfsdm_mod,如果使用LVMmd_mod,如果使用软RAID
可以用lsinitramfs /boot/initramfs-.img | grep virtio检查,若输出为空,说明initramfs没带上virtio驱动。
国内镜像与编译加速
国内用户可以把Gentoo镜像源换成清华或中科大,减少下载时间:
GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo"
编译时用make -j$(nproc),但内存较小的云主机要降低并行任务数,比如1核1G的实例,用make -j1比make -j4更稳,避免OOM。
低成本Gentoo虚拟机内核裁剪方案
低成本Gentoo虚拟机内核裁剪方案,核心思路是做减法,而不是做加法,虚拟机没有无线网卡、蓝牙、声卡、摄像头,这些驱动全部可以关掉。
用lspci和lsmod做减法
先运行lspci -nnk,把每个设备对应的驱动列出来,再运行lsmod,看LiveCD实际加载了哪些模块,只保留这些模块及其依赖,其余全部关闭,常见可关选项包括:
CONFIG_WLAN、CONFIG_BT、CONFIG_SOUNDCONFIG_DRM_I915、CONFIG_DRM_AMDGPU等物理显卡驱动,如果虚拟机不需要USB直通
CONFIG_USB_SUPPORT
CONFIG_DEBUG_INFO、CONFIG_FTRACE
必开与可关选项
必开项通常只有几类:
- 存储:virtio-blk、AHCI、pvscsi之一
- 网络:virtio-net、vmxnet3、e1000之一
- 文件系统:ext4、xfs或btrfs
- 虚拟化:
CONFIG_HYPERVISOR_GUEST、CONFIG_PARAVIRT - 时钟:
CONFIG_PARAVIRT_CLOCK,避免时间漂移
可关项则包括所有物理机专用驱动、冗余文件系统、调试符号、不用的网络协议,据统计,合理裁剪后,内核编译时间可以缩短较大比例,具体取决于宿主机CPU核心数。
常见坑:漏掉存储驱动
最常见的错误,是在menuconfig里把CONFIG_VIRTIO_BLK选成<M>,但又没有生成initramfs,或者initramfs里没有包含它,启动时内核会提示VFS: Cannot open root device,另一个坑是只启用了CONFIG_VIRTIO,忘了CONFIG_VIRTIO_PCI,导致virtio设备根本不被识别,配置完成后,用grep -E 'VIRTIO|VMXNET3|VBOX|PVSCSI' .config快速复查。
Gentoo虚拟机内核选项常见问答
Gentoo虚拟机安装时可以直接用make defconfig吗?
可以,但不推荐直接使用。make defconfig会生成一个通用配置,包含大量物理机驱动和调试选项,编译时间长,启动时也可能加载无关模块,更稳妥的做法是运行make defconfig后,再用make menuconfig按虚拟机平台裁剪,或者从LiveCD的/proc/config.gz提取配置:zcat /proc/config.gz > .config,然后make olddefconfig。
VMware和VirtualBox下Gentoo内核配置区别大吗?
区别集中在网络、存储和客户机工具三处,VMware优先选vmxnet3、pvscsi、VMCI;VirtualBox优先选e1000、AHCI、vboxguest,如果只装一个平台,按对应驱动配置即可,如果同一个内核要在多个平台启动,可以把这些驱动都编译成模块,再通过initramfs自动加载,不过内核体积会变大。
Gentoo虚拟机内核编译后启动失败,如何快速定位?
先看GRUB里内核和initramfs路径是否正确,启动失败时,记录屏幕最后几行错误,如果是Unable to mount root fs,回到LiveCD,挂载根分区,检查/usr/src/linux/.config里存储驱动是否内建,以及initramfs是否包含对应模块,如果是网络不通,用lspci -nnk确认网卡驱动是否加载,再用dmesg | grep -i eth查看识别情况,多数启动失败都可以通过补上virtio、vmxnet3或vboxguest驱动解决。