Friday, April 12, 2019

移除一些舊版的snap packages來增加disk space

找到一篇不錯的文章,可以幫助user去移除一些也許已經用不到的舊版snap packages,這點對我來說蠻實用的,因為我的系統透過snap裝了蠻多軟體,而且預設上snap會針對每個軟體同時存著三個版本(如果有軟體本身有升級過好幾次),好處是萬一將來發現升級上來的軟體有bug,之後可以馬上revert package,但缺點就是比較浪費硬碟空間。(你可以想像系統同時間裝了三份相同的軟體)













比較一下執行script前與後的使用空間:
Before:












After:












真的差蠻多的~ 萬一系統空間不足時,建議可以先清理一下snap舊版的軟體。

Wednesday, April 03, 2019

解決Virtualbox無法在Secure boot下使用的問題

其實我的X1 Carbon 6th在Ubuntu 18.04遇到這個問題有些日子了,但總覺得沒有必需立馬解決它。

這個現象的主要原因是Virtualbox的dkms並不是預設Secure boot認得的firmware,所以當你想要運行Virtualbox時會碰到這個問題,kernel會一直無法掛載vboxdrv。

















解決的方法有兩種:

  • 回到BIOS/UEFI去關閉Secure boot。
  • 讓Secure boot保持運行,然後手動去註冊Virtualbox相關的kernel module。

這裡我選擇讓Secure boot保持運行並且產生MOK(Machine Owner Key)keys註冊到Secure boot,以下就來實作吧!

Steps:

  • 建立signing keys:

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"

  • 註冊Virtualbox相關的modules:


sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv) 
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxnetflt)


  • 註冊keys到Secure boot:

sudo mokutil --import MOK.der
這個時候系統會要求你輸入一組密碼,先記起來等一下跑Enroll MOK utility時會用到。
  • Reboot system+運行MOK:
Enroll MOK -> Continue -> Yes -> Input password -> Reboot system again
這邊有個例子提供上述步驟的screenshots可以參考https://sourceware.org/systemtap/wiki/SecureBoot

  • 重新掛載vboxdrv與vboxnetflt: 

sudo modprobe vboxdrv
sudo modprobe vboxnetflt

  • 啟動Virtualbox


成功了!現在系統可以跑Virtualbox了。