How do I resize my /boot partition?
/boot has become 100% full somehow.
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)
How can I make the space allocated to /boot bigger?
There is a related question How do I free up more space in /boot? but that is not what I want to do.
Added.
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
Solution 1:
There are 2 parts to this:
-
Open a terminal and run
ls /boot
If boot is full of old kernels you can go remove happy on them, I recommend keeping the original, the latest and the one before latest. The lowest number is normally the shipping kernel, the highest number will be the latest.
-
To grow boot you first need to shrink another partition so you have free space. I would suggest using the GParted partition editor on a live Ubuntu USB to do this. First decrease the size of
/
or/home
depending on your setup. Then increase the size of/boot
.
Solution 2:
I assume this Linux machine is a VM.
Expand the SCSI device by 1GB on VM sphere centre or AWS, etc, so /dev/sda
gets an additional 1GB of space.
Reboot the server to single user mode. Use fdisk -l /dev/sda
to confirm the new size with additional 1GB.
Use fdisk /dev/sda
to create an sda3 partition with 1GB. Save the partition table. Ubuntu will require partprobe to update the partition table. Now run:
mkfs.ext4 /dev/sda3
umount /boot
dd if=/dev/sda1 of=/dev/sda3
e2fsck -y /dev/sda3
resize2fs /dev/sda3
e2fsck -y /dev/sda3
Now update /etc/fstab
(be sure to make a backup copy, just in case need to boot from CDROM/DVD to recover), update the line to mount /dev/sda3
on /boot
(and comment the line for /dev/sda1
)
Mount /boot
df -k
should see /boot
is 1GB now, but you need to make it the default boot device.
Use fdisk /dev/sda
, and press p
to print the partition table. You will see /dev/sda1
is the default boot device.
Use the a
command in fdisk
to disable /dev/sda1
as default boot device and again to enable /dev/sda3
as default boot device. p
to show partition table.
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
Reboot
After you've been online for sometime, if you feel you want to utilize the 200MB of /dev/sda1
, just recreate /dev/sda1
and put into any VG you want.