我在使用 /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 可以从重新定位的文件引导:
- 打开
/boot/grub/grub.conf
并记下用于引导 Cent OS 内核的kernel
和行。initrd
您将手动输入这些内容以进行测试。 - 重新启动机器。
- 在 GRUB 屏幕上按“c”
- 在 GRUB 提示符下输入
find /boot/grub/stage1
.它应该打印出类似的东西(hd0,5). 这应该与根文件系统的磁盘和分区相对应。 - 输入
root (hd0,5)
(或之前打印的任何命令) - 输入
kernel
您记下的行。就像是:kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda6
- 输入
initrd
您记下的行。就像是:initrd /boot/initrd-2.6.18-238.19.1.el5.centos.plusPAE.img
- 输入
boot
启动内核。
如果一切顺利,系统应该启动,并且/boot
不应安装旧分区,您可以使用mount
命令确认这一点。
假设它有效,使引导加载程序永久更改:
- 编辑
/boot/grub/grub.conf
并更新您在测试期间输入的root
、kernel
和行。initrd
- 运行
grub
进入GRUB提示符。需要澄清的是,这是在 Cent OS 内完成的,而不是通过重新启动来完成。 - 与测试类似,输入
root (hd0,5)
(或任何分区应该是) - 跑
setup (hd0)
,哪里高清0是 GRUB 安装其 MBR 阶段的磁盘。您可能正在使用磁盘 MBR 或分区的第一个扇区。不管是哪一个,就是这样高清0应该。
完成这些步骤后,GRUB 将显示一个菜单,该菜单将从您的新/boot
.请注意,您的启动分区仍然完好无损。
您可以在此处阅读有关 GRUB 和 Cent OS 的更多信息:https://wiki.centos.org/HowTos/GrubInstallation请特别注意注意事项和警告部分。