1. 程式人生 > >SUSE12SP3簡單粗暴安裝VirtualBox5.2過程

SUSE12SP3簡單粗暴安裝VirtualBox5.2過程

download true war machine 最好 erro miss down problem

環境組合:vmware workstation + SUSE12SP3 + VirtualBox-5.2-5.2.10_122088_openSUSE132-1.x86_64

最終解決辦法很簡單,只需要修改/etc/modprobe.d/10-unsupported-modules.conf文件,把allow_unsupported_modules的值從0修改為1,就可以暴力安裝,測試使用VirtualBox功能也正常——學習之用,不保證有沒有隱患。

# cat /etc/SuSE-release
SUSE Linux Enterprise Server 12 (x86_64)
VERSION = 12
PATCHLEVEL = 3

# rpm -qa|grep Virtual
VirtualBox-5.2-5.2.10_122088_openSUSE132-1.x86_64

需求來源:學習Docker的時候,其中用到VirtualBox來方便創建幾臺測試機

https://yeasy.gitbooks.io/docker_practice/content/swarm_mode/create.html

像這樣的命令

$ docker-machine create -d virtualbox manage

於是有了令人不適的一個開始:

從官網下來 https://www.virtualbox.org/wiki/Linux_Downloads 對應的版本(openSUSE13.2 AMD64),由於沒有提供SUSE Linux Enterprise Server 12對應版本,而我已經在SUSE12SP3的系統學著Docker的東西,懶得再裝openSUSE13.2的系統,所以碰碰運氣下載試試

  • openSUSE 13.2 ("Harlequin") / Leap 42 ("Malachite") i386 | AMD64

運氣果然是不好的,安裝rpm包就出現報錯

# rpm -ivh VirtualBox-5.2-5.2.10_122088_openSUSE132-1.x86_64.rpm
warning: VirtualBox-5.2-5.2.10_122088_openSUSE132-1.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 98ab5139: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:VirtualBox-5.2-5.2.10_122088_open################################# [100%]

Creating group ‘vboxusers‘. VM users must be member of that group!

vboxdrv.sh: failed: modprobe vboxdrv failed. Please use ‘dmesg‘ to find out why.

There were problems setting up VirtualBox. To re-start the set-up process, run /sbin/vboxconfig as root.

根據提示,dmesg查看毛線報錯提示都沒有。這個時候,就開始了百度/谷歌的旅程。網上也有很多人遇到類似的報錯,基本的解決辦法是將啟動模式改成UEFI,並關閉安全引導。

技術分享圖片

所以把我的workstation從10升級->12->14,以支持這個開關 選項->高級->固件類型。PS:只有vmware workstation10.X支持選項,最好用14。對於已安裝的虛擬機,固件類型從BIOS改為UEFI,啟動不了。所以還新裝多一個虛擬機用UEFI方式安裝SUSE12SP3。

然而這個方案對於我的環境沒有作用,依然是冷冰冰的“vboxdrv.sh: failed: modprobe vboxdrv failed. Please use ‘dmesg‘ to find out why.

怎麽辦呢?去/var/log下面找,看到有vbox-install.log文件,研究之後發現並沒有明顯報錯。也就是說,網上另外有人遇到gcc版本問題的也不是這個出錯的原因,因為make的過程都是成功,所以你別去試gcc降級的事情先,不妨先試試我這個辦法。而如果是提示kernel-default-devel沒安裝,那還是要裝上的。zypper install kernel-default-devel。

......

/vbox.0/vboxpci.ko /tmp/vbox.0/vboxpci.o /tmp/vbox.0/vboxpci.mod.o
make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.4.103-6.38-default/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 INSTALL_MOD_PATH= INSTALL_MOD_DIR=misc modules_install
make -C ../../../linux-4.4.103-6.38 O=/usr/src/linux-4.4.103-6.38-obj/x86_64/default/. modules_install
make -C /usr/src/linux-4.4.103-6.38-obj/x86_64/default KBUILD_SRC=/usr/src/linux-4.4.103-6.38 \
-f /usr/src/linux-4.4.103-6.38/Makefile modules_install
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \
echo >&2; \
echo >&2 " ERROR: Kernel configuration is invalid."; \
echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 " Run ‘make oldconfig && make prepare‘ on kernel src to fix it."; \
echo >&2 ; \
/bin/false)
mkdir -p /lib/modules/4.4.103-6.38-default/misc
make -f /usr/src/linux-4.4.103-6.38/scripts/Makefile.modinst
mkdir -p /lib/modules/4.4.103-6.38-default/misc ; cp /tmp/vbox.0/vboxpci.ko /lib/modules/4.4.103-6.38-default/misc ; true /lib/modules/4.4.103-6.38-default/misc/vboxpci.ko ; true /lib/modules/4.4.103-6.38-default/misc/vboxpci.ko || true && true /lib/modules/4.4.103-6.38-default/misc/vboxpci.ko
/bin/sh /usr/src/linux-4.4.103-6.38/scripts/depmod.sh /sbin/depmod 4.4.103-6.38-default ""

那要不就去看看vboxdrv.sh文件內容吧,既然報錯是它給出來的。VB的東西是在路徑/usr/lib/virtualbox下面,通過檢查vboxdrv.sh文件,通過報錯提示信息確定我遇到的報錯,只有下面這段代碼可能產生。

技術分享圖片

modprobe命令是linux用來裝卸內核模塊的命令,手工跑一下看它怎麽失敗了。

linux-qqvo:/usr/lib/virtualbox # modprobe vboxdrv
modprobe: ERROR: module ‘vboxdrv‘ is unsupported
modprobe: ERROR: Use --allow-unsupported or set allow_unsupported_modules 1 in
modprobe: ERROR: /etc/modprobe.d/10-unsupported-modules.conf
modprobe: ERROR: could not insert ‘vboxdrv‘: Operation not permitted

就是unsupported而已,作為一個直男我們不能輕易接受NO,也不喜歡繞過去。既然是正常不支持,那就簡單粗暴試試,如開頭所說,修改/etc/modprobe.d/10-unsupported-modules.conf文件,把allow_unsupported_modules的值從0修改為1,再運行 /sbin/vboxconfig 再無障礙。

# /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.

從此,Docker和VirtualBox就過上了幸福快樂的生活。

SUSE12SP3簡單粗暴安裝VirtualBox5.2過程