2013-05-06

Ubuntu 移除舊版本 Linux 核心

阿舍最近在整理硬碟的時候,發現,阿舍的電腦在歷經多次升級和更新後,已經有一堆的 Linux 核心版本被儲存在硬碟裡了,雖然,每個版本的檔案都還算 OK,不過,很多版本的檔案加起來,就有點可觀了,而且,阿舍幾乎不會特別的去用到之前版本的 Linux 核心,所以,阿舍就想來把它給清一清哩 !

紅色框框裡的這二個版本是不可移除的
阿舍查了一下,算是不難的工作,不過,也沒有像阿舍想的那樣,直接去把舊版的 Linux 核心給刪掉就可以了哩 ! ==!,還是得透過 apt-get 來做才行,不過,在刪除之前,首先,要先用下面這行指令來查一下有那些已安裝的 Linux 核心版本,然後,把它給記下來。(下面的指令除了可以用來查已安裝的 Linux 核心版本,也可以用來已安裝的套件清單,操作方式請參考這裡。)

dpkg --get-selections | grep linux-image

要注意的是,並不是所有出現的 Linux 核心版本都是可以刪除的,其中,至少有二個版本是不可以去動的,一個是現在正在用的版本,另一個則是叫做「linux-image-generic」的東西,所以,在開始移除舊版的 Linux 核心之前,還要先用下面這一行指令來查一下目前所使用的 Linux 核心版本哩 !

uname -r

該查的都查出來之後,接下來,就可以用「apt-get purge」指令來一一移除剛剛查出來的舊版 Linux 核心了,以阿舍用上面第一行的指令來找到第一個要刪除的是「linux-image-2.6.38-10-generic」核心版本為例,阿舍就可以用下面的這行指令來移除它。

sudo apt-get purge linux-image-2.6.38-10-generic

重複上面這行指令來將要移除的舊版 Linux 核心一一都移除之後,再來,就要用下面這一行指令來更新一下 Grub2 的選單,阿舍記得,雖然,之前版本的 Grub2 會在開機選單上列出所有已安裝的 Linux 核心選項,不過,新版的 Grub2 就不會有這種情形了,不過,還是更新一下會比較安全哩 !

sudo update-grub2

以上,就是用來移除舊版 Linux 核心的操作步驟,雖然沒什麼大太的果難度,不過,如果像阿舍一樣,有十幾個版本要移除的話,一個一個版本的移除,就會讓人覺得有點麻煩哩 ! 所以,應該要有更方便和簡單的方式才對,因此,阿舍就找到有位善心人士試出,用下面這行指令就可以一次移除所有舊版的 Linux 核心,有需要的人可以試試哩 !

sudo apt-get remove $(dpkg -l|egrep '^ii  linux-(im|he)'|awk '{print $2}'|grep -v `uname -r`)

阿舍有試了一下,是真的有用,還滿方便的,不過,其中,阿舍有一台電腦在跑上面的這行指令時,有遇到要先執行一次下面這行指令的情況,阿舍執行後,再跑一次上面的這行指令就可以順利來移除所有舊版的 Linux 核心了哩 !

sudo dpkg --configure -a

要注意的是,上面這行指令只移除舊版的 Linux 核心,而沒有更新 Grub2,所以,還是要自己執行一次更新 Grub2 的指令才行的哩 ! ^^=

延伸閱讀
Ubuntu 清除歷史和最近開啟檔案的記錄

參考資料

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

3 則留言 :

anton 提到...

apt-get remove 會殘留東西,好像改用 apt-get purge 會好一點??

Arthur 提到...

Hello,

阿舍的習慣是,都先用 apt-get remove 來移除安裝,然後,再用 apt-get autoremove 和 apt-get purge 及 apt-get autoclean 來清理 ...

不過,那時在寫這篇時,沒寫到哩 ~~ 呵 !

供參囉 ! ... ^^=

Kelvin 提到...

一鍵移除有bug是若同時存在 linux-headers-xxx-generic 跟 linux-headers-xxx,那指令會移除linux-headers-xxx,但系統相依性連同generic也會被移除,導致就算最新版本也被砍掉了。

改良後連同autoremove跟purge一起變為
apt autoremove $(dpkg -l|egrep '^ii linux-(im|he)'|awk '{print $2}'|grep -v `uname -r | egrep -o [0-9\.\-]+[0-9]`) --purge

張貼留言

歡迎留言提問和討論 .... 😁