VirtualBox

总结一下(为了方便其他遇到这些问题的人),如果你遇到 VERR_VM_DRIVER_VERSION_MISMATCH 错误,但你的内核驱动和 VirtualBox 用户空间版本相同,并且你正在运行 64 位内核和 32 位用户空间,请创建一个 64 位 chroot 环境

sudo debootstrap --arch amd64 sid /var/64 ftp://ftp.debian.org/debian

配置它

sudo ln /etc/hostname /var/64/etc/hostname
sudo ln /etc/environment /var/64/etc/environment
sudo ln /etc/passwd /var/64/etc/passwd
sudo ln /etc/group /var/64/etc/group
sudo ln /etc/shadow /var/64/etc/shadow
sudo ln /etc/sudoers /var/64/etc/sudoers
sudo ln /etc/localtime /var/64/etc/localtime
sudo ln /etc/timezone /var/64/etc/timezone
sudo ln /etc/resolv.conf /var/64/etc/resolv.conf
sudo ln /etc/apt/sources.list /var/64/etc/apt/sources.list

确保各种内容绑定到 chroot 环境;为此,请在你的 /etc/fstab 中添加行

/sys            /var/64/sys         none    bind                            0      0
/proc           /var/64/proc        none    bind                            0      0
/dev            /var/64/dev         none    bind                            0      0
/home           /var/64/home        none    bind                            0      0
/tmp            /var/64/tmp         none    bind                            0      0
/var/tmp        /var/64/var/tmp     none    bind                            0      0
/usr/src        /var/64/usr/src     none    bind                            0      0
/lib/modules    /var/64/lib/modules none    bind                            0      0

然后挂载它们

for i in /var/64/{sys,proc,dev,home,tmp,var/tmp,usr/src,lib/modules}; do sudo mount $i; done

chroot 进入该环境

sudo chroot /var/64 su - ${LOGNAME}

设置环境,以便你可以启动 X 应用程序

export XAUTHORITY=${HOME}/.Xauthority DISPLAY=:0

安装 VirtualBox(我假设你已经在 chroot 环境之外使用 m-a auto-install virtualbox-ose 构建了模块,这会从 apt 中提取 virtualbox-ose-source 并为你构建模块)

sudo touch /etc/init.d/udev
sudo apt-get install virtualbox-ose

将自己添加到 vboxusers 组并加载驱动程序

sudo adduser ${LOGNAME} vboxusers
sudo modprobe vboxdrv

从 ${HOME}/.VirtualBox 创建一个到 ~root/.VirtualBox 的符号链接

sudo ln -s ${HOME}/.VirtualBox ~root/.VirtualBox

对于桥接网络,创建两个脚本,用于启用和禁用 TAP 接口,并安装 brctl

sudo apt-get install uml-utilities bridge-utils
cat > vbox-ifup.sh <<EOF
#!/bin/bash
/usr/bin/sudo /sbin/ifconfig $2 up
/usr/bin/sudo /usr/sbin/brctl addif br0 $2
EOF
cat > vbox-ifdown.sh <<EOF
#!/bin/bash
/usr/bin/sudo /usr/sbin/brctl delif br0 $2
/usr/bin/sudo /sbin/ifconfig $2 down
EOF
chmod a+x vbox-ifup.sh vbox-ifdown.sh

然后使用类似以下命令启动 VirtualBox GUI:

sudo virtualbox &

并配置你的虚拟机连接到一个名为(例如)tap1 的主机接口。将启动和关闭脚本分别指向 vbox-ifup.sh 和 vbox-ifdown.sh。

在 chroot 外部,编辑 /etc/network/interfaces 并将桥接接口设为你的主要网络接口,并将以太网适配器添加为它的从属接口会有帮助

auto br0
iface br0 inet dhcp
      bridge_ports eth0
      bridge_fd 9
      bridge_hello 2
      bridge_maxage 12
      bridge_stp off

禁用以太网接口并启用桥接

sudo ifdown eth0
sudo ifconfig eth0 up
sudo ifup br0

至此,从 64 位 chroot 环境启动 VirtualBox 应该可以正常工作,并为虚拟机提供桥接访问。

哦对了,你还会想把 root 添加到 vboxusers 组,因为 VirtualBox 实际将以该用户运行

sudo adduser root vboxusers
最后修改于 18 年前 最后修改于 2008年01月08日 上午10:17:04
注意: 查看 TracWiki 获取使用维基的帮助。

© 2025 Oracle 支持 隐私 / 请勿出售我的信息 使用条款 商标政策 自动化访问礼仪