月份: 2021 年 12 月

安裝 VirtualBox 之 glibc 相容性問題

No Comments

在筆者的 5900hx mini pc 上,使用的是 ubuntu 20.04 版本。但因與 amd cpu/chipset 的支援程度問題,或其他原因,筆者越級(focal to jammy)更新 kernel 到更高的版本;5.11 to 5.15。這會帶來與新舊 kernel 有牽連的問題。當然可以再等待或許不日 focal 便已更新至 5.15 版。
其中帶出的問題,就是當安裝 virtualbox 當中,virtualbox 會使用系統的靜態函式庫(libc6;可能是透過讀取 kernel header 獲得編譯資訊)編譯平台相依的需求檔。安裝之後,virtualbox 會使用系統的動態函式庫。
問題將出現於新舊 kernel 使用的 libc6 版本不同,致 virtualbox 無法編譯成功斥或無法執行。
故,
已安裝 virtualbox,再升級 kernel,那麼既有的 virtualbox 便無法順利執行,因為將索求新版的 libc6。
同理升級 kernel 後,再安裝 virtualbox,那麼便無法安裝成功,因安裝過程中索求新版 libc6。
解法當然就是安裝新版的 glibc。從 2.31 to 2.34。不過,在其他系統程式或應用程式運行狀況下可能也就會發生對於 libc6 的相容性問題,但或許機率較小因為 glibc 原則上往前相容。
本章記錄安裝新版 glibc 片斷,一些用法註記,及爬文的連結。
註:virtualbox 6.1.28 才開始支援 kernel 5.14/5.15 版。及說明連結因越級 kernel 所造成的困擾。及說明連結

很重要,講在前頭!手動更新 glibc 是很危險的,筆者的工作電腦及 J1800 主機,兩台都是試成功的,但這台 5900HX 主機卻是試失敗的!失敗會怎麼樣嗎?抱歉,有些既存的應用程式便無法跑,此案例是 glibc 關聯到 locale,locale 關聯到 apt,所以筆者的 apt 沒辦法跑了,執行 reboot 也發生 kernel panic。我能力上唯一能做的一途就是整台 5900HX 下架重灌XD。。。所以此刻寫這段話,是整個網站又移回 J1800 主機上了。詳情於本文未補充之。此外基於此,後面又有幾篇文章可以寫了XD

20220104 補充

  • 開頭提到筆者的失敗案例補充如下,
  • 因為 5900HX 已上線壁咚了起來了,所以全是 SSH 遠端操作。
  • 安裝新版 libc6 2.34 版,在安裝的最後,會出現說明視窗指示使用者做選擇;選擇是否逐步確認運行中的 services 是否會 hang up。在此狀況下,當前筆者也沒有定論而只能譩測。在當時,筆者選擇 NO,指,我要逐步確認。印象中當時有可能是 gdm 和 cron 兩支 services,被提示出來因其有關聯於 glibc。記得應有順利終止此二 service 並出現提示符號。我便接著 reboot。誰知再來久久無法登入,想必是開機過程中當了,或是,如前述,可能是它出現提示並等待使用者介入決定下一步。故,此在遠端的我便無法看到任何訊息而只能去強制關機了。接下來,是可以登入了,但,應用程式如 apt,locale 就都出現執行錯誤。reboot 也 kernel panic。確定系統搞出缺陷了出問題了。因此,筆者認為,置換 glibc 會失敗就一定會失敗,遠端登入的,就最好選擇 YES,讓它自動判斷與運行,才不會當需要使用者介入卻又無法做出決定而中斷掉它造成問題。故,記得一定要選 YES,除非有螢幕可看它 dump 出的訊息以配合之才好選 NO 或 YES。至於,若 glibc 安裝失敗,對的沒錯,apt 都不能用了當然無法再回復成舊版的。又或是可以 chroot 來搶救不過這筆者就不懂怎麼做了。
  • 後續當然會發展出一些文章;請問,
  • 1. 主機使用公開的 ip 或網址,隨時都有人存取,我們如何避免外界進入我們正一開始重新安裝 wordpress 的畫面/任何人都可以安裝它並設定帳密便不費吹灰佔住了我們的主頁。這篇將補充在安裝 NGINX 一篇。
  • 2. wordpress 搬家,還是有要特別強調的注意事項,將補充在 wordpress 的備份還原一篇。
  • 3. 系統掛了,萬一無可避免地發生,那是天大的災難,我們如何。。。,不對(主題太廣大),應是說筆者分享備份系統的方法。
  • 4. 處理這事件,學到了 shell 處理字串的一些用法,將補充(轉貼)在 linux 指令收集那個頁面內。
  • 5. 當前我把網站移回我三台主機中最慢的一台 J1800 上,當然我也是要再測速一次以比對之;當前結論搞不好本網站就一直放在 J1800 上(因於頻寬);我就可以順暢地使用 5900HX 了XP,並也會測試關於限速的方法。
  • 6. 其他:certbot 的註記(安裝 NGINX),wifi/xz/acl 的註記(linux 指令),locale 的註記(安裝 ubuntu server)。

Categories: Linux

Tags:

PHP Code Snippets Powered By : XYZScripts.com