• ubuntu-14.04中/boot分区不足的解决办法


    环境:
    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改正确,然后退出单用户模式,继续启动。
    一切正常了。


  • 相关阅读:
    [Swift]关键字:class与staitc的区别
    [Swift]LeetCode1171. 从链表中删去总和值为零的连续节点 | Remove Zero Sum Consecutive Nodes from Linked List
    [Swift]LeetCode1172. 餐盘栈 | Dinner Plate Stacks
    [Swift]LeetCode1170. 比较字符串最小字母出现频次 | Compare Strings by Frequency of the Smallest Character
    [Swift]LeetCode1169. 查询无效交易 | Invalid Transactions
    [Swift]LeetCode1167. 连接棒材的最低费用 | Minimum Cost to Connect Sticks
    [Swift]LeetCode1166.设计文件系统 | Design File System
    [Swift]LeetCode1165. 单行键盘 | Single-Row Keyboard
    [Swift]LeetCode1168. 水资源分配优化 | Optimize Water Distribution in a Village
    METRO风格
  • 原文地址:https://www.cnblogs.com/zhaojk2010/p/4591848.html
Copyright © 2020-2023  润新知