CentOS 6 上的引导分区已满

CentOS 6 上的引导分区已满

我在使用 /boot 时遇到问题,yum update没有足够的可用空间来继续。我读过其他几篇文章,我发现最有帮助的回复表明解决问题的最安全、最有效的方法是使用 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

我最初的想法是删除所有不属于我的内核的内容,但我很犹豫,因为包清理并没有决定应该删除旧的内核。

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.conf,将installonly_limit=2原来的限制从 5 改为 5,希望能阻止将来发生这种情况。

答案1

如果您将其重新定位/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并更新您在测试期间输入的rootkernel和行。initrd
  2. 运行grub进入GRUB提示符。需要澄清的是,这是在 Cent OS 内完成的,而不是通过重新启动来完成。
  3. 与测试类似,输入root (hd0,5)(或任何分区应该是)
  4. setup (hd0),哪里高清0是 GRUB 安装其 MBR 阶段的磁盘。您可能正在使用磁盘 MBR 或分区的第一个扇区。不管是哪一个,就是这样高清0应该。

完成这些步骤后,GRUB 将显示一个菜单,该菜单将从您的新/boot.请注意,您的启动分区仍然完好无损。

您可以在此处阅读有关 GRUB 和 Cent OS 的更多信息:https://wiki.centos.org/HowTos/GrubInstallation请特别注意注意事项和警告部分。

相关内容