Centos

CentOS 6 上的引導分區已滿

  • July 20, 2017

我在使用yum updatewhere /boot 沒有足夠的可用空間來繼續時遇到問題。我已經閱讀了其他一些文章,我發現最有用的回复表明解決問題的最安全和最有效的方法是使用 yum-utils 並執行 package-cleanup。不幸的是,該解決方案並沒有糾正我遇到的問題。我有 /boot 作為一個 100mb 的分區,我讀過它有足夠的空間。

我已經安裝yum-utils並且在執行時

package-cleanup --oldkernels --count=1

結果是:

Not removing kernel 2.6.32-642.13.1.e16 because it is the running kernel
No old kernels to remove

結果rpm -qa | grep kernel是:

kernel-devel-2.6.32-642.13.1.el6.i686
kernel-firmware-2.6.32-696.1.1.el6.noarch
dracut-kernel-004-409.el6_8.2.noarch
kernel-headers-2.6.32-696.1.1.el6.i686
kernel-2.6.32-696.1.1.el6.i686
kernel-2.6.32-642.13.1.el6.i686
libreport-plugin-kerneloops-2.0.9-33.el6.centos.i686
kernel-devel-2.6.32-696.1.1.el6.i686
abrt-addon-kerneloops-2.0.8-43.el6.centos.i686

我最初的想法是刪除所有不是我的核心的東西,但我很猶豫,因為 package-cleanup 並沒有決定應該刪除舊核心。

這樣做的ls -ls /boot結果是:

 113 -rw-r--r--. 1 root root   112760 Jan 11 15:26 config-2.6.32-642.13.1.el6.i686
 113 -rw-r--r--. 1 root root   112820 Apr 11 12:43 config-2.6.32-696.1.1.el6.i686
   2 drwxr-xr-x. 3 root root     1024 Dec 20  2016 efi
   2 drwxr-xr-x. 2 root root     1024 Apr 28 22:16 grub
23036 -rw-------. 1 root root 23494547 Jan 20 11:09 initramfs-2.6.32-642.13.1.el6.i686.img
23062 -rw-------. 1 root root 23521098 Apr 28 22:16 initramfs-2.6.32-696.1.1.el6.i686.img
4526 -rw-------. 1 root root  4613691 Apr 28 22:13 initrd-2.6.32-642.13.1.el6.i686kdump.img
  13 drwx------. 2 root root    12288 Dec 20  2016 lost+found
 209 -rw-r--r--. 1 root root   211920 Jan 11 15:26 symvers-2.6.32-642.13.1.el6.i686.gz
 210 -rw-r--r--. 1 root root   211993 Apr 11 12:43 symvers-2.6.32-696.1.1.el6.i686.gz
2023 -rw-r--r--. 1 root root  2061183 Jan 11 15:26 System.map-2.6.32-642.13.1.el6.i686
2026 -rw-r--r--. 1 root root  2064145 Apr 11 12:43 System.map-2.6.32-696.1.1.el6.i686
4051 -rwxr-xr-x. 1 root root  4128992 Jan 11 15:26 vmlinuz-2.6.32-642.13.1.el6.i686
4058 -rwxr-xr-x. 1 root root  4136928 Apr 11 12:43 vmlinuz-2.6.32-696.1.1.el6.i686

不太熟悉 /boot 目錄中的內容和/或可以安全刪除的內容。希望這可以幫助確定可以安全刪除的內容,並可以在將來幫助其他人。

我已經編輯了 /etc/yum.confinstallonly_limit=2的原始限制為 5,希望將來不會發生這種情況。

如果您將您的文件重新定位/boot到您的根文件系統中,您將獲得根文件系統所擁有的任何儲存量,並且不再受引導分區大小的限制。

調整引導載入程序 GRUB 是一項微妙的操作。在接下來的過程中,我通過不進行任何不容易恢復的更改來降低風險。該過程涉及重新定位/boot然後更新引導載入程序。

重定位 /boot

目前,/boot位於與根文件系統分開的分區上。重新定位它的一種安全方法是複製而不是移動文件:

umount /boot
mount /dev/sd?? /mnt
cp -av /mnt/* /boot/

複製文件涉及umount-ing /boot,將其掛載到其他位置,並將文件從掛載位置複製到/boot.

接下來,編輯/etc/fstab並註釋掉 mounts 的行/boot

更新引導載入程序

在實際更新引導載入程序之前,最好進行測試以確保 GRUB 可以從重新定位的文件引導:

  1. 打開/boot/grub/grub.conf並記下用於引導 Cent OS 核心的kernel和行。initrd您將手動輸入這些以進行測試。
  2. 重新啟動機器。
  3. 在 GRUB 螢幕上按“c”
  4. 在 GRUB 提示符處輸入find /boot/grub/stage1. 它應該列印出類似**(hd0,5)**的內容。這應該對應於根文件系統的磁碟和分區。
  5. 輸入root (hd0,5)(或之前列印的任何命令)
  6. 輸入kernel您寫下的行。就像是:kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda6
  7. 輸入initrd您寫下的行。就像是:initrd /boot/initrd-2.6.18-238.19.1.el5.centos.plusPAE.img
  8. 輸入boot以啟動核心。

如果一切順利,系統應該啟動舊/boot分區不應該掛載,您可以使用mount命令確認。

假設它有效,使引導載入程序永久更改:

  1. 編輯/boot/grub/grub.conf和更新您在測試期間輸入的rootkernelinitrd行。
  2. 執行grub進入 GRUB 提示符。為了澄清,這是在 Cent OS 中完成的,而不是通過重新啟動。
  3. 與測試類似,輸入root (hd0,5)(或任何應該的分區)
  4. 執行setup (hd0),其中hd0是 GRUB 安裝它的 MBR 階段的磁碟。可能是您正在使用磁碟 MBR 或分區的第一個扇區。不管它是什麼,這就是hd0應該的。

在這些步驟之後,GRUB 將顯示一個菜單,該菜單將從您的新/boot. 請注意,您的引導分區仍然完好無損。

你可以在這裡閱讀更多關於 GRUB 和 Cent OS 的資訊:https : //wiki.centos.org/HowTos/GrubInstallation 請特別注意註釋和警告部分。

引用自:https://unix.stackexchange.com/questions/377306