环境:
ubuntu-kylin 或者 ubuntu-14.04,
/boot单独分区
工具:
ubuntu的liveCD。
问题:
由于当初安装的时候,看网上说/boot很小,100M足以,于是单独分区,分了100M,结果实际上装好以后,我的/boot只有88M(因为分区时和装好后系统对于容量的计算方法不同)。
这就带来一个问题,ubuntu过个两三天就会有一些更新,每次都有有内核更新,每次提示/boot太小,不能更新,很是麻烦。
所以我需要把/boot扩大。
/boot没有单独分区的不会存在这个问题。
大致需要如下几步:
数据备份,重新分区,数据恢复,修复引导。
数据备份:
我的分区依次是:/boot,/,/home,swap. 分区与目录的对应关系是(/dev/sdaX表示分区,请根据自己实际情况):
/dev/sda5=>/boot
/dev/sda6=>/
/dev/sda7=>/home
所以要扩大/boot,就需要把/分出一部分,所以这两个分区上的数据都需要备份,就备份到/home下吧。
用liveCD启动登入系统,把/boot,/,/home这三个分区挂载上去:
sudo mount /dev/sda6 /mnt sudo mount /dev/sda5 /mnt/boot sudo mount /dev/sda7 /mnt/home
然后用tar命令把进行数据备份,注意硬盘上的/proc,/sys,/tmp,lost+found这4个目录不用备份。
/mnt/home是要放备份数据的分区,也不要把它自身备份。
不能用cp进行简单的拷贝备份,否则恢复数据的时候,很多重要文件的属性会变化。
cd /mnt/boot sudo tar -cvf /mnt/home/boot.tar * cd /mnt sudo tar -cvf /mnt/home/rootdir.tar bin cdrom lib media opt root sbin usr vmlinuz boot dev etc initrd.img mnt run srv var
重新分区:
首先确认一下刚才备份时挂载的几个分区都已经卸载了。
然后使用fdisk重新分区。
sudo fdisk /dev/sda
重新分区以后,/dev/sdaX会有变化,需要注意这个地方。
现在分区的对应关系变成了这样:
/dev/sda6=>/home
/dev/sda7=>/boot
/dev/sda8=>/
把新分的两个分区用mkfs进行格式化:
sudo mkfs /dev/sda7 sudo mkfs /dev/sda8
数据恢复:
由于刚才的分区,导致/dev/sdaX有变化,需要重新确认谁是谁(主要是根据容量区分,也可以试着挂载上,看里面有那些文件来区分)
重新挂载分区,进行数据恢复(如果这时候不能挂载,重启一下系统,再次进入liveCD)
sudo mount /dev/sda8 /mnt sudo mount /dev/sda7 /mnt/boot sudo mount /dev/sda6 /mnt/home
正确挂载/boot,/,/home后,使用tar进行数据恢复。
sudo tar -xvf /mnt/home/rootdir.tar -C /mnt sudo tar -xvf /mnt/home/boot.tar -C /mnt/boot
修复引导:
此时如果进行重启,发现系统不能启动,连系统都找不到,需要进行引导修复。
所以现在不去重启,而是引导修复,
请看教程:使用liveCD修复grub引导
最后一步:
现在重启,从硬盘启动,发现能找到linux系统,但是不能启动,屏幕提示你进入单用户模式。
这时为什么不能启动?因为我们重新分区了,分区的UUID变化了,linux不能正确挂载分区了,需要修复/etc/fstab。
把里面的/boot,/ 这两个分区对应的UUID改正确,然后退出单用户模式,继续启动。
一切正常了。