linux 下VirtualBox 无法启动虚拟机

最近由于需要捣鼓了一下vbox虚拟机,在安装和使用虚拟机的过程中遇到了较多的问题,不过万幸是一一解决了。
注意:

  1. 软件下载

    下载特定版本的软件 ubuntu14.04 下载对应版本的deb 安装包文件
    如果不知道ubuntu的版本代号,通过lsb_release -a 查询

    Distributor ID:	Ubuntu
    Description:	Ubuntu 14.04.5 LTS
    Release:	14.04
    Codename:	trusty
    
  2. 驱动安装
    ubuntu 下Virtual Box安装完成后,在选定完成虚拟镜像后,特别容易出现/sbin/vboxconfig 的问题
    如果直接使用/sbin/vboxconfig可以安装成功,那么就可以直接安装vbox的驱动。如果安装失败,特别是出现如下状况,需要你查看dmesg来查看更多信息
    dmesg的日志如下
    [ 626.729373] vboxdrv: version magic '3.13.0-163-generic SMP mod_unload modversions ' should be '3.13.0-163-generic SMP mod_unload modversions retpoline '
    通过日志,使用/sbin/vboxconfig编译出的版本和原来的版本不对? 那问题出现在哪?
    编译器问题,我的ubuntu的在安装完成后,后面升级了gcc,ubuntu使用的是默认版本的gcc编译,不同版本的gcc编译出的驱动可能会存在细微的差异.
    通常这种问题,核心问题就是使用的VirtualBox使用gcc编译出的驱动与内核不匹配,只需要两者的gcc版本匹配,那么就可以正常使用,那么两种解决方案
    1. 如下所示配置成与当前内核匹配的gcc版本
    2. 卸载当前的内核版本,然后使用系统默认的gcc版本
  • 配置gcc
    1. 可以通过命令cat /proc/version查看当前内核版本编译时使用的gcc版本,然后配置对应版本的gcc.
    注:下方是本人自己的配置,我之前配置过可选的gcc版本,所以可以使用下面的命令.
    
    配置可选软件版本方法:配置软件版本
    XXX@XXXXXX:/etc/alternatives$ sudo update-alternatives --config gcc
    有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
    
      选择       路径            优先级  状态
    ------------------------------------------------------------
      0            /usr/bin/gcc-4.8   100       自动模式
      1            /usr/bin/gcc-4.8   100       手动模式
    * 2            /usr/bin/gcc-4.9   60        手动模式
    
    要维持当前值[*]请按回车键,或者键入选择的编号:0
    update-alternatives: using /usr/bin/gcc-4.8 to provide /usr/bin/gcc (gcc) in 自动模式
    XXX@XXXXXX:/etc/alternatives$ sudo update-alternatives --config g++
    有 2 个候选项可用于替换 g++ (提供 /usr/bin/g++)。
    
      选择       路径            优先级  状态
    ------------------------------------------------------------
      0            /usr/bin/g++-4.8   100       自动模式
      1            /usr/bin/g++-4.8   100       手动模式
    * 2            /usr/bin/g++-4.9   60        手动模式
    
    要维持当前值[*]请按回车键,或者键入选择的编号:0
    update-alternatives: using /usr/bin/g++-4.8 to provide /usr/bin/g++ (g++) in 自动模式
    XXX@XXXXXX:/etc/alternatives$ gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.5-4ubuntu8~14.04.2' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 4.8.5 (Ubuntu 4.8.5-4ubuntu8~14.04.2) 
    XXX@XXXXXX:/etc/alternatives$ sudo /sbin/vboxconfig 
     Adding system startup for /etc/init.d/vboxdrv ...
       /etc/rc0.d/K80vboxdrv -> ../init.d/vboxdrv
       /etc/rc1.d/K80vboxdrv -> ../init.d/vboxdrv
       /etc/rc6.d/K80vboxdrv -> ../init.d/vboxdrv
       /etc/rc2.d/S20vboxdrv -> ../init.d/vboxdrv
       /etc/rc3.d/S20vboxdrv -> ../init.d/vboxdrv
       /etc/rc4.d/S20vboxdrv -> ../init.d/vboxdrv
       /etc/rc5.d/S20vboxdrv -> ../init.d/vboxdrv
     Adding system startup for /etc/init.d/vboxballoonctrl-service ...
       /etc/rc0.d/K65vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc1.d/K65vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc6.d/K65vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc2.d/S35vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc3.d/S35vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc4.d/S35vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
       /etc/rc5.d/S35vboxballoonctrl-service -> ../init.d/vboxballoonctrl-service
     Adding system startup for /etc/init.d/vboxautostart-service ...
       /etc/rc0.d/K65vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc1.d/K65vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc6.d/K65vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc2.d/S35vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc3.d/S35vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc4.d/S35vboxautostart-service -> ../init.d/vboxautostart-service
       /etc/rc5.d/S35vboxautostart-service -> ../init.d/vboxautostart-service
     Adding system startup for /etc/init.d/vboxweb-service ...
       /etc/rc0.d/K65vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc1.d/K65vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc6.d/K65vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc2.d/S35vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc3.d/S35vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc4.d/S35vboxweb-service -> ../init.d/vboxweb-service
       /etc/rc5.d/S35vboxweb-service -> ../init.d/vboxweb-service
    vboxdrv.sh: Stopping VirtualBox services.
    vboxdrv.sh: Starting VirtualBox services.
    vboxdrv.sh: Building VirtualBox kernel modules.
    vboxdrv.sh: Starting VirtualBox services.
    
  • 卸载内核配置gcc
    1. 使用命令sudo dpkg --get-selections |grep linux查看已经安装的内核版本,然后通过命令sudo apt-get autoremove XXX卸载多余的内核
    xxx@xxx-OptiPlex-3020:~$ sudo dpkg --get-selections |grep linux
    [sudo] password for min: 
    binutils-arm-linux-gnueabi			install
    cpp-4.7-arm-linux-gnueabi			install
    cpp-arm-linux-gnueabi				install
    fonts-linuxlibertine				install
    gcc-4.7-arm-linux-gnueabi			install
    gcc-4.7-arm-linux-gnueabi-base			install
    gcc-arm-linux-gnueabi				install
    libselinux1:amd64				install
    libselinux1:i386				install
    linux-firmware					install
    linux-generic					install
    linux-headers-3.13.0-163			install
    linux-headers-3.13.0-163-generic		install
    linux-headers-3.13.0-164			install
    linux-headers-3.13.0-164-generic		install
    linux-headers-generic				install
    linux-image-3.13.0-161-generic			deinstall
    linux-image-3.13.0-162-generic			deinstall
    linux-image-3.13.0-163-generic			install
    linux-image-3.13.0-164-generic			install
    linux-image-4.4.0-138-generic			deinstall
    linux-image-4.4.0-31-generic			deinstall
    linux-image-extra-3.13.0-161-generic		deinstall
    linux-image-extra-3.13.0-162-generic		deinstall
    linux-image-extra-3.13.0-163-generic		install
    linux-image-extra-3.13.0-164-generic		install
    linux-image-extra-4.4.0-138-generic		deinstall
    linux-image-extra-4.4.0-31-generic		deinstall
    linux-image-extra-virtual			install
    linux-image-generic				install
    linux-libc-dev:amd64				install
    linux-libc-dev-armel-cross			install
    linux-signed-generic				install
    linux-signed-image-3.13.0-161-generic		deinstall
    linux-signed-image-3.13.0-162-generic		deinstall
    linux-signed-image-3.13.0-163-generic		install
    linux-signed-image-3.13.0-164-generic		install
    linux-signed-image-generic			install
    linux-sound-base				install
    linux-source					install
    linux-source-3.13.0				install
    pptp-linux					install
    syslinux					install
    syslinux-common					install
    syslinux-legacy					install
    util-linux					install
    XXX@XXX-OptiPlex-3020:~$ sudo apt-get autoremove linux-image-extra-3.13.0-164-generic linux-headers-3.13.0-164-generic linux-headers-3.13.0-164
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列软件包将被【卸载】:
      linux-generic linux-headers-3.13.0-164 linux-headers-3.13.0-164-generic
      linux-headers-generic linux-image-extra-3.13.0-164-generic
      linux-image-extra-virtual linux-image-generic linux-signed-generic
      linux-signed-image-3.13.0-164-generic linux-signed-image-generic
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 10 个软件包,有 0 个软件包未被升级。
    解压缩后将会空出 232 MB 的空间。
    您希望继续执行吗? [Y/n] Y
    (正在读取数据库 ... 系统当前共安装有 438938 个文件和目录。)
    正在卸载 linux-generic (3.13.0.164.174) ...
    正在卸载 linux-signed-generic (3.13.0.164.174) ...
    正在卸载 linux-headers-generic (3.13.0.164.174) ...
    正在卸载 linux-headers-3.13.0-164-generic (3.13.0-164.214) ...
    正在卸载 linux-headers-3.13.0-164 (3.13.0-164.214) ...
    正在卸载 linux-signed-image-generic (3.13.0.164.174) ...
    正在卸载 linux-signed-image-3.13.0-164-generic (3.13.0-164.214) ...
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.13.0-164-generic
    Found initrd image: /boot/initrd.img-3.13.0-164-generic
    Found linux image: /boot/vmlinuz-3.13.0-163-generic
    Found initrd image: /boot/initrd.img-3.13.0-163-generic
    Found memtest86+ image: /boot/memtest86+.elf
    Found memtest86+ image: /boot/memtest86+.bin
    done
    正在卸载 linux-image-extra-virtual (3.13.0.164.174) ...
    正在卸载 linux-image-generic (3.13.0.164.174) ...
    正在卸载 linux-image-extra-3.13.0-164-generic (3.13.0-164.214) ...
    run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    run-parts: executing /etc/kernel/postinst.d/dkms 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    update-initramfs: Generating /boot/initrd.img-3.13.0-164-generic
    run-parts: executing /etc/kernel/postinst.d/pm-utils 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    run-parts: executing /etc/kernel/postinst.d/update-notifier 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.13.0-164-generic /boot/vmlinuz-3.13.0-164-generic
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.13.0-164-generic
    Found initrd image: /boot/initrd.img-3.13.0-164-generic
    Found linux image: /boot/vmlinuz-3.13.0-163-generic
    Found initrd image: /boot/initrd.img-3.13.0-163-generic
    Found memtest86+ image: /boot/memtest86+.elf
    Found memtest86+ image: /boot/memtest86+.bin
    done
    
  1. usb链接

    virtual box 本身不支持usb链接,如果你需要使用vitualbox的usb链接,需要到官网下载对应的增强包,通过增强包安装usb2.0,usb3.0功能
    virtualbox extension pack Ubuntu增强功能包,不过该功能包也需要和对应的版本匹配
    在官网中找到增强包下载地址:
    在这里插入图片描述

你可能感兴趣的:(Linux操作系统)