openSUSE升級問題說明及處理方法
記錄下這次升級的流程:首先用yast管理安裝源,把所有的安裝源都從11.1的改成11.2,確保能夠直接獲得***的安裝包。里面最重要的就是11.2的update, oss, non-oss這三個源,另外,我還把維護當前軟件版本的源也都改成了11.2,如kde4, ati,virtualbox等,這樣升級完成后就不用再去升級這些軟件。然后要做的,就是升級zypper。
openSUSE升級Bash代碼
zypper refresh #刷新當前軟件源
zypper in zypper #從11.2的軟件源中,安裝zypper
zypper refresh #刷新當前軟件源
zypper in zypper #從11.2的軟件源中,安裝zypper更新zypper的時候,可能會更新很多包,不管它了,反正等會兒都是需要更新的。11.2使用的zypper有很多好處,首先就是默認的下載后端變成了aria2,這樣就能夠通過metalink下載,同時也支持多線程進行下載;其次,它支持設置成先下載完成所有包后再進行安裝,這個功能已經等了很長時間了,以前就遇到過因為網絡問題下載中斷,導致KDE更新了一般,無法啟動,這個設置能夠大大降低這樣的風險;還有當然就是支持跨版本升級了,以前看見debian的apt-get支持dist update,感覺這個功能非常好,沒有必要每次推出新的版本就去下載整張DVD光盤進行升級。
好了,更新完zypper之后,就可以進行跨版本升級了。
openSUSE升級Bash代碼
zypper dup -d #先完成所有需要升級的包的下載
zypper dup #使用已經下載好的包進行跨版本升級
zypper dup -d #先完成所有需要升級的包的下載
zypper dup #使用已經下載好的包進行跨版本升級在進行跨版本升級的時候,就更加怕出現更新中斷的情況,所以先下載所有需要更新的包是***的選擇了。我在更新的時候,下載這些包大概話費了1.5G的硬盤空間。這些包默認的路徑可以在zypper的配置文件中進行設置。
直接使用命令進行跨版本升級的***好處就是,在升級的過程中不會影響正常使用。等到所有包都更新完成后,就可以重新啟動電腦了。杯具從此開始。
因為原來使用的是PAE的內核,這次升級的時候不光升級了PAE內核,也安裝了default內核,看見介紹說desktop的內核對普通臺式機有優化,又安裝了desktop內核,這樣就有三個內核了,導致的直接后果就是/boot分區空間不足了。/boot分區的空間我是直接根據opensuse11.1在安裝時的推薦空間分配的,只有60多MB,不得已,把default內核刪除。
然后遇到的問題,就是顯卡驅動的問題,原來安裝顯卡驅動很順利,在包管理器中安裝完之后,在init 3中執行下sax2命令就可以了,這次再怎么嘗試都沒有用,進入桌面窗口移動的時候有明顯的脫影,使用glxgears盡然直接報錯:X Error of failed request: BadRequest (invalid request code or no such operation)。找了半天的原因,后來才發現,在ati的源里面的兩個名稱類似的包(ati-fglrxG01-kmp-desktop和ati-fglrxG02-kmp-desktop),提供的是相同路徑相同名稱的內核模塊,這兩個包是給不用芯片的顯卡使用的,最初的時候為了方便就全部選上了。去掉ati-fglrxG01-kmp-desktop之后,進行init3,執行:
openSUSE升級Bash代碼
sax2 -r -m 0=fglrx
sax2 -r -m 0=fglrx 之后,在進行圖形界面,顯示終于正常了,不過KDE的窗口設置提示不支持混成擴展,這個還是有點不爽,不過特效本來就不太使用,暫時不管了。
另一個重要的問題就是virtualbox了,更新了原來的包之后,virtualbox無法啟動。執行:
openSUSE升級Bash代碼
/etc/init.d/vboxdrv restart
/etc/init.d/vboxdrv restart 之后,發現提示:vboxguest: exports duplicate symbol RTMemExecFree (owned by vboxdrv),導致vboxnetflt這個內核模塊無法正常被插入內核。查了很多地方的都找不到原因,***在一個bbs中找到了個暫時的解決方法,需要使用:
openSUSE升級Bash代碼
insmod /lib/modules/2.6.31.12-0.1-desktop/updates/vboxnetflt.ko
insmod /lib/modules/2.6.31.12-0.1-desktop/updates/vboxnetflt.ko 平時使用的modprobe太過于智能,會根據modules.dep文件中的依賴關系來插入內核,而這個文件里面的依賴關系貌似有點問題,updates/vboxnetflt.ko: updates/vboxguest.ko updates/vboxdrv.ko,根據里面的依賴,vboxnetflt模塊依賴了vboxguest,應該是不需要的。當手工使用insmod的時候,不會去查詢這個依賴關系,所以能夠正常的加載這個模塊。暫時先用這么惡心的方法吧,看看會不會有更新來修復這個問題。
【編輯推薦】