如何调整我的/boot分区大小?

/boot 不知怎么的已经满了100%。
df -k
Filesystem              1K-blocks     Used Available Use% Mounted on
/dev/mapper/ubuntu-root 191078052 31758960 149612804  18% /
udev                      3997520        8   3997512   1% /dev
tmpfs                     1602244      856   1601388   1% /run
none                         5120        0      5120   0% /run/lock
none                      4005600     1792   4003808   1% /run/shm
none                       102400       28    102372   1% /run/user
/dev/sda1                  233191   218740      2010 100% /boot


mount
/dev/mapper/ubuntu-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
/dev/sda1 on /boot type ext2 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
vmware-vmblock on /run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
gvfsd-fuse on /run/user/foo/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=foo)

如何扩大分配给/boot的空间?
有一个相关的问题如何在/boot中释放更多空间?,但那不是我想做的。 补充。
Disk /dev/sda: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders, total 390721968 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007f9dc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501758   390721535   195109889    5  Extended
/dev/sda5          501760   390721535   195109888   8e  Linux LVM

Disk /dev/mapper/ubuntu-root: 198.8 GB, 198784843776 bytes
255 heads, 63 sectors/track, 24167 cylinders, total 388251648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/ubuntu-root doesn't contain a valid partition table

Disk /dev/mapper/ubuntu-swap_1: 1006 MB, 1006632960 bytes
255 heads, 63 sectors/track, 122 cylinders, total 1966080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/ubuntu-swap_1 doesn't contain a valid partition table

6@Takkat 我是在问如何扩大\boot的容量,而不是如何释放其中的空间。 - Simd
3启动分区通常足够大。我猜你安装了其他的Linux内核。试一下使用sudo apt-get autoremove命令。如果这个方法不奏效,你可以用dpkg -l linux命令查看你安装了哪些东西。 - Thomas15v
如果您在sda上有2个分区(引导和LVM),要么您有相邻的空闲空间并调整/boot分区的大小,要么您需要缩小LVM分区。请更新您的答案并提供您的分区布局。 - Salem
2个回答

这有两个部分:

  1. 打开终端并运行ls /boot

    如果/boot目录中存满了旧内核,你可以删除其中的一些。我建议保留原始内核、最新内核和倒数第二新的内核。最小的编号通常是出厂时的内核,最大的编号是最新的。

  2. 要扩大/boot目录的空间,首先需要缩小另一个分区以释放空间。我建议使用GParted分区编辑器在Ubuntu的实时USB环境下进行操作。首先减小/或/home分区的大小,然后增加/boot目录的大小。


27您也可以尝试运行apt-get autoremove命令清理/boot中的旧内核文件以释放空间。 - Justin Jenkins
4@JustinJenkins,我在其他地方也看到过这个建议,但是apt-get autoremove并不能自动删除我的旧内核。作为一种解决办法,我定期手动删除它们,但我真的很想知道为什么apt-get autoremove对我来说不起作用。有什么指导吗? - BlueBomber
22@BlueBomber,尝试使用"apt-get --purge autoremove"命令,其中的--purge选项可能是你所需要的。 - Mister_Tom
@JustinJenkins 那真的帮了我很多,mister_tom --Purge 提供了额外的空间,我们一起清理了将近450 mb。 - Clain Dsilva
这是一个完美的解决方案,适用于将/boot作为独立分区且空间不足的用户。 - user645245
autoremove命令对我也不起作用。哪些文件是旧内核?是以abi-开头的那些吗? - MikeSchem
9即使使用了“--purge”选项,自动删除对我来说也没有任何作用。 我不明白为什么Ubuntu默认安装只创建了512MB的/boot分区,只有足够容纳两个内核,然后尝试保留旧内核,没有足够空间安装新内核,最终在升级时崩溃。 这显然太愚蠢了,而且这种情况已经持续了十年之久。 我就是无法理解。 - odigity

我假设这台Linux机器是一个虚拟机。
在VM sphere centre或AWS等平台上,将SCSI设备扩展1GB,以便给/dev/sda增加额外的1GB空间。
重启服务器进入单用户模式。使用fdisk -l /dev/sda确认新的大小增加了1GB。
使用fdisk /dev/sda创建一个1GB的sda3分区。保存分区表。Ubuntu需要使用partprobe来更新分区表。现在运行:
mkfs.ext4 /dev/sda3
umount /boot
dd if=/dev/sda1 of=/dev/sda3
e2fsck -y /dev/sda3
resize2fs /dev/sda3
e2fsck -y /dev/sda3

现在更新/etc/fstab(确保备份副本,以防需要从CDROM/DVD启动恢复),更新行以将/dev/sda3挂载到/boot(并注释掉/dev/sda1的行)。
挂载/bootdf -k应该看到/boot现在是1GB,但您需要将其设置为默认的引导设备。
使用fdisk /dev/sda,按p打印分区表。您将看到/dev/sda1是默认的引导设备。
使用fdisk中的a命令将/dev/sda1禁用为默认的引导设备,然后再次启用/dev/sda3作为默认的引导设备。按p显示分区表。
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048      411647      204800   83  Linux
/dev/sda2          411648    20971519    10279936    5  Extended
/dev/sda3   *    20971520    23068671     1048576   83  Linux
/dev/sda5          413696    20971519    10278912   8e  Linux LVM

重启

在您上线一段时间后,如果您觉得想要利用 200MB 的 /dev/sda1,只需重新创建 /dev/sda1 并放入您想要的任何 VG。


在Ubuntu 16.04上完美运行。非常感谢! :) - Dominik Hadl
我在VMware上为/boot添加了一个完全独立的4GB硬盘。在22.04上工作正常,不过第一个e2fsck命令应该是e2fsck -f -y /dev/sdXX,然后才能进行调整大小。否则会失败,并提示你运行强制检查。 - undefined