解决Fedora 自己编译的内核不能运行Virtualbox的问题。
生活随笔
收集整理的這篇文章主要介紹了
解决Fedora 自己编译的内核不能运行Virtualbox的问题。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Fedora作為linux發行版的地溝油...有時候是比較坑爹的。
???????? Fedora有1個很出名特點,就是更新很快很激進, 本來這個是優點啦, 但是它連內核也更新的超快, 基本上2周更新一次內核, 后果就是你要不斷清理就內核.. 這個還是小事。
???????? 用過virtualbox的都知道, virtualbox是1個虛擬機軟件, 它不必須根據當前的內核版本緊密配合, 對應的產物就是virtualbox模塊。?? virtualbox的模塊有很多個, 例如最重要的vboxdrv, 還有vboxnetadp? vboxnetflt 等等, fedora 為這些模塊做成了1個包,就叫kmod-Virtualbox,? 如果安裝這個包, 就相當于安裝完virtualbox的所有模塊了。
??????? 聽上去挺方便啊, 問題就是1套模組只能對應源里的1個內核, 也就是說你用yum update 讓fedora幫你更新內核之后, 原來的kmod模組就不能用了, 所以virtualbox就不能打開虛擬機了。就會彈出1個提示, 讓你用root權限執行1條語句修復:
/etc/sysconfig/modules/VirtualBox.modules
???????? 這條語句實際上是讓virtualbox重新匹配正確的kmod模組, 但是問題是當前系統的kmod系統版本已經跟不上更新后的內核版本了啊, 所以執行這條語句只會返回一條找不到對應模組的提示。
???????? 正確方法是先安裝對應內版本的kmod模組,? 怎么安裝? uname -r 查看當前內核的版本, 然后用yum search kmod-virtualbox 搜索源里的對應版本。找到后就安裝它。 然后再執行上面的命令。這就修復了。
????????
?
???????????? 如上圖。 有很多個版本的kmod啊, 分別對應每1個版本的內核。 修復后個人建議你把舊內核和舊kmod模組都卸載了。節省空間。 至于為什么fedora更新內核的時候不自動幫用戶更新kmod呢。。。你以為地溝油白叫的啊...
???????? 好了, 如果用戶每更新一次內核順手更新一次kmod就應該ok了吧?? 是的, 但是由于fedora內核更新實在太快, 快到至于源里的kmod版本跟不上。。。所有很多時候更新內核的前兩天就不能用virtualbox了..
??????? 更大的問題來了, 如果有人手賤自己編譯內核, 例如我....?? 那么這個自編譯內核版本是不同于源里任1個內核的, 也就是說源里沒有對應你自己編譯內核的kmod模組。
??????? 那么是不是代表自編譯內核的virtualbox沒法用了。
??????? 我在網上google.? 發現ubuntu的方法挺簡單的, 也提供了幾個很好用的工具。
??????? 具體參靠這里:http://linux.chinarcz.com/kernel/32420.htm
??????? 其實解決方法只有1個, 就是在當前的內核下自己編譯安裝kmod模組...
??????? Ubuntu提供的module-assistant工具很強大, 它能幫你準備編譯環境, 編譯成deb安裝包, 有了deb包后安裝和卸載都很容易了。
??????? 問題是fedora沒有這個工具。。。。。
?????? 好吧, 雖然沒i有工具, 但是源里是一樣的, 下面就人手一步步來啦:
================================================================================================
?????? 第一步,就是獲取kmod的源代碼, 源里一找,居然馬上找到了,
????? 這里強烈建議不要用別的地方的源代碼, 因為源里的kmod代碼版本是跟源里的virtualbox一致的(地溝油不抽的話)...
???? 第二步就是安裝了:
?????? yum install VirtualBox-kmodsrc
?? 然后去/usr/src/ 里一找, 居然沒有,,? 尼瑪裝到哪里去了... 安裝時完全沒提示啊
?? 在/ 里用find . -name "*kmodsrc*" 也找不到, 說明它安裝時換名字了。。?
?? 去google一搜, 居然沒有這個源代碼的使用信息...? 太坑了吧~
??? 只好卸載它, 然后隨便在1個地方新建1個文件, 例如~/test.txt
??? 然后再安裝一次
??? 用find / -newer ~/test.txt 來找。。找到了 他在:
??
???? /usr/share/VirtualBox-kmod-4.2.8/VirtualBox-kmod-4.2.8.tar.xz??? 這里,? 尼瑪位置太奇葩了吧~
??? 第三步: copy 出來解壓
???? 隨便copy到1個地方, /home里更好, 解壓后得到源文件
見到里面有8個文件夾, 分別對應個模塊的源代碼..
?? 第四步: 確認你的系統缺少什么模塊:
再執行一次
?/etc/sysconfig/modules/VirtualBox.modules
見到提示:
[root@TFPC vboxdrv]# /etc/sysconfig/modules/VirtualBox.modules
modinfo: ERROR: Module vboxdrv not found.
modinfo: ERROR: Module vboxnetflt not found.
modinfo: ERROR: Module vboxnetadp not found.
所以實際上就只需要編譯vboxdrv vobxnetflt vboxnetadp 呢3個模塊就ok了。
第五步: 編譯安裝
進入 vboxdrv,? ls一下見到Makefile了,
執行:
make
好快就編譯完,
然后:
sudo make install?? (這個一步會將編譯出的模塊放到/lib/modules/內核版本/? 下面)
如法炮制對付另外兩個模塊,
安裝完3個模塊后, 執行
?/etc/sysconfig/modules/VirtualBox.modules
這次沒有錯誤信息, 重新打開virtualbox, 虛擬機能打開了!
第六步: 如何卸載?
我查看Makefile, 其實沒有卸載這個選項的, 其實也無需卸載,
因為這3個模塊只會被你這個當前版本的內核使用,
你下次再編譯一次內核,那么所有的模塊都會在
/lib/modules/新內核版本/? 中
再編譯一次kmod的模塊到這個folder下就ok了
只有原來的/lib/modules/舊內核版本/?? 你完全可以把它們和舊內核一齊干掉。
???????? Fedora有1個很出名特點,就是更新很快很激進, 本來這個是優點啦, 但是它連內核也更新的超快, 基本上2周更新一次內核, 后果就是你要不斷清理就內核.. 這個還是小事。
???????? 用過virtualbox的都知道, virtualbox是1個虛擬機軟件, 它不必須根據當前的內核版本緊密配合, 對應的產物就是virtualbox模塊。?? virtualbox的模塊有很多個, 例如最重要的vboxdrv, 還有vboxnetadp? vboxnetflt 等等, fedora 為這些模塊做成了1個包,就叫kmod-Virtualbox,? 如果安裝這個包, 就相當于安裝完virtualbox的所有模塊了。
??????? 聽上去挺方便啊, 問題就是1套模組只能對應源里的1個內核, 也就是說你用yum update 讓fedora幫你更新內核之后, 原來的kmod模組就不能用了, 所以virtualbox就不能打開虛擬機了。就會彈出1個提示, 讓你用root權限執行1條語句修復:
/etc/sysconfig/modules/VirtualBox.modules
???????? 這條語句實際上是讓virtualbox重新匹配正確的kmod模組, 但是問題是當前系統的kmod系統版本已經跟不上更新后的內核版本了啊, 所以執行這條語句只會返回一條找不到對應模組的提示。
???????? 正確方法是先安裝對應內版本的kmod模組,? 怎么安裝? uname -r 查看當前內核的版本, 然后用yum search kmod-virtualbox 搜索源里的對應版本。找到后就安裝它。 然后再執行上面的命令。這就修復了。
????????
?
???????????? 如上圖。 有很多個版本的kmod啊, 分別對應每1個版本的內核。 修復后個人建議你把舊內核和舊kmod模組都卸載了。節省空間。 至于為什么fedora更新內核的時候不自動幫用戶更新kmod呢。。。你以為地溝油白叫的啊...
???????? 好了, 如果用戶每更新一次內核順手更新一次kmod就應該ok了吧?? 是的, 但是由于fedora內核更新實在太快, 快到至于源里的kmod版本跟不上。。。所有很多時候更新內核的前兩天就不能用virtualbox了..
??????? 更大的問題來了, 如果有人手賤自己編譯內核, 例如我....?? 那么這個自編譯內核版本是不同于源里任1個內核的, 也就是說源里沒有對應你自己編譯內核的kmod模組。
??????? 那么是不是代表自編譯內核的virtualbox沒法用了。
??????? 我在網上google.? 發現ubuntu的方法挺簡單的, 也提供了幾個很好用的工具。
??????? 具體參靠這里:http://linux.chinarcz.com/kernel/32420.htm
??????? 其實解決方法只有1個, 就是在當前的內核下自己編譯安裝kmod模組...
??????? Ubuntu提供的module-assistant工具很強大, 它能幫你準備編譯環境, 編譯成deb安裝包, 有了deb包后安裝和卸載都很容易了。
??????? 問題是fedora沒有這個工具。。。。。
?????? 好吧, 雖然沒i有工具, 但是源里是一樣的, 下面就人手一步步來啦:
================================================================================================
?????? 第一步,就是獲取kmod的源代碼, 源里一找,居然馬上找到了,
????? 這里強烈建議不要用別的地方的源代碼, 因為源里的kmod代碼版本是跟源里的virtualbox一致的(地溝油不抽的話)...
???? 第二步就是安裝了:
?????? yum install VirtualBox-kmodsrc
?? 然后去/usr/src/ 里一找, 居然沒有,,? 尼瑪裝到哪里去了... 安裝時完全沒提示啊
?? 在/ 里用find . -name "*kmodsrc*" 也找不到, 說明它安裝時換名字了。。?
?? 去google一搜, 居然沒有這個源代碼的使用信息...? 太坑了吧~
??? 只好卸載它, 然后隨便在1個地方新建1個文件, 例如~/test.txt
??? 然后再安裝一次
??? 用find / -newer ~/test.txt 來找。。找到了 他在:
??
???? /usr/share/VirtualBox-kmod-4.2.8/VirtualBox-kmod-4.2.8.tar.xz??? 這里,? 尼瑪位置太奇葩了吧~
??? 第三步: copy 出來解壓
???? 隨便copy到1個地方, /home里更好, 解壓后得到源文件
見到里面有8個文件夾, 分別對應個模塊的源代碼..
?? 第四步: 確認你的系統缺少什么模塊:
再執行一次
?/etc/sysconfig/modules/VirtualBox.modules
見到提示:
[root@TFPC vboxdrv]# /etc/sysconfig/modules/VirtualBox.modules
modinfo: ERROR: Module vboxdrv not found.
modinfo: ERROR: Module vboxnetflt not found.
modinfo: ERROR: Module vboxnetadp not found.
所以實際上就只需要編譯vboxdrv vobxnetflt vboxnetadp 呢3個模塊就ok了。
第五步: 編譯安裝
進入 vboxdrv,? ls一下見到Makefile了,
執行:
make
好快就編譯完,
然后:
sudo make install?? (這個一步會將編譯出的模塊放到/lib/modules/內核版本/? 下面)
如法炮制對付另外兩個模塊,
安裝完3個模塊后, 執行
?/etc/sysconfig/modules/VirtualBox.modules
這次沒有錯誤信息, 重新打開virtualbox, 虛擬機能打開了!
第六步: 如何卸載?
我查看Makefile, 其實沒有卸載這個選項的, 其實也無需卸載,
因為這3個模塊只會被你這個當前版本的內核使用,
你下次再編譯一次內核,那么所有的模塊都會在
/lib/modules/新內核版本/? 中
再編譯一次kmod的模塊到這個folder下就ok了
只有原來的/lib/modules/舊內核版本/?? 你完全可以把它們和舊內核一齊干掉。
總結
以上是生活随笔為你收集整理的解决Fedora 自己编译的内核不能运行Virtualbox的问题。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu/Fedora 编译内核教程
- 下一篇: linux 编译内核几个常见问题解决方法