/boot 分割槽空間不足時如何清理

vetains發表於2017-08-04

Linux 中 /boot 是存放系統啟動檔案的地方,安裝 ubuntu 時單獨分割槽給 200M 足夠,但是系統核心更新後,老的核心依然儲存在 /boot 分割槽內,幾次升級後,就會提示 /boot 空間不足。

我們只要刪掉老的核心,將空間釋放出來就可以了。

先檢視系統當前使用的什麼版本的核心 uname -a

$ uname -a
Linux ubuntu-ThinkPad-Edge 4.8.0-38-generic #41-Ubuntu SMP Wed Feb 8 14:27:17 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux



這裡顯示當前核心是 4.8.0-38

檢視系統中安裝已經安裝的核心 dpkg --get-selections | grep Linux-image

$ dpkg --get-selections | grep linux-image
linux-image-4.8.0-22-generic            deinstall
linux-image-4.8.0-34-generic            install
linux-image-4.8.0-37-generic            install
linux-image-4.8.0-38-generic            install
linux-image-extra-4.8.0-22-generic      deinstall
linux-image-extra-4.8.0-34-generic      install
linux-image-extra-4.8.0-37-generic      install
linux-image-extra-4.8.0-38-generic      install
linux-image-generic             install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 7

後面顯示 deinstall 的表示已經刪除了的, install 表示沒有刪除的
這時可以看到除了當前的 4.8.0-38 之外,還有 4.8.0-34 4.8.0.37 這幾個過期的版本

刪除這幾個版本 sudo apt-get remove linux-image-xxx 這裡的 xxx 就是上面過期版本的版本號

還有沒有刪除乾淨的內容可以用 sudo apt-get autoremove 來清理

執行完畢之後,可以看到 /boot 分割槽裡的空間又空出來了



在按照以上方法進行處理的時候,執行命令sudo apt-get purge 核心名稱  出現了以下錯誤:

正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹       
正在讀取狀態資訊... 完成       
下列軟體包將被【解除安裝】:
  linux-image-4.8.0-36-generic* linux-image-extra-4.8.0-36-generic
  linux-signed-image-4.8.0-36-generic*
升級了 0 個軟體包,新安裝了 0 個軟體包,要解除安裝 3 個軟體包,有 110 個軟體包未被升級。
有 7 個軟體包沒有被完全安裝或解除安裝。
解壓縮後將會空出 234 MB 的空間。
您希望繼續執行嗎? [Y/n] y
(正在讀取資料庫 ... 系統當前共安裝有 261630 個檔案和目錄。)
正在解除安裝 linux-image-extra-4.8.0-36-generic (4.8.0-36.36~16.04.1) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.8.0-36-generic /boot/vmlinuz-4.8.0-36-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.8.0-36-generic /boot/vmlinuz-4.8.0-36-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-36-generic

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.8.0-36-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: 處理軟體包 linux-image-extra-4.8.0-36-generic (--remove)時出錯:
 子程式 已安裝 post-removal 指令碼 返回錯誤狀態 1
在處理時有錯誤發生:
 linux-image-extra-4.8.0-36-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)


刪除舊的核心失敗,沒辦法,接著百度


子程式 已安裝 pre-removal 指令碼 返回了錯誤號 1或2 與 子程式 已安裝 post-installation 指令碼 返回了錯誤號 1或2

本篇文章主要介紹了"子程式 已安裝 pre-removal 指令碼 返回了錯誤號 1或2 與 子程式 已安裝 post-installation 指令碼 返回了錯誤號 1或2 ",主要涉及到子程式 已安裝 pre-removal 指令碼 返回了錯誤號 1或2 與 子程式 已安裝 post-installation 指令碼 返回了錯誤號 1或2 方面的內容,對於子程式 已安裝 pre-removal 指令碼 返回了錯誤號 1或2 與 子程式 已安裝 post-installation 指令碼 返回了錯誤號 1或2 感興趣的同學可以參考一下。

一、子程式 已安裝 pre-removal 指令碼 返回了錯誤號 1或2 解決辦法:

sudo gedit /var/lib/dpkg/status

找到Package: <package name>,比如Package: vsftpd

刪除這部分的描述,刪到下個Package: XXX前就好。存檔後,再進行操作就OK了。

二、子程式 已安裝 post-installation 指令碼 返回了錯誤號 1或2 解決辦法:

sudo rm /var/lib/dpkg/info/<package name>.*

比如sudo rm /var/lib/dpkg/info/vsftpd.*,存檔後,再進行操作就OK了

解決 在升級核心過程中安裝新版本核心系統依賴混亂問題,安裝時已存在,解除安裝不掉

子程式 已安裝 post-removal 指令碼 返回了錯誤號 1
在處理時有錯誤發生:



按照一的步驟進行操作

sudo gedit /var/lib/dpkg/status

找到Package: <package name>,比如Package: vsftpd刪除這部分的描述,刪到下個Package: XXX前就好


這裡我出錯的地方是: linux-image-extra-4.8.0-36-generic , 所以ctrl F 搜尋到這一行,

刪除Package  : linux-image-extra-4.8.0-36-generic  到下個Package: XXX前就好。

強烈建議刪除前先備份一下/var/lib/dpkg/status 這個檔案,不起作用的話還能恢復原來的狀態。



下來按照文章開頭的內容 就可以清理成功了。

相關文章