如何在 UEFI 系统上删除单独的 /boot 分区?

如何在 UEFI 系统上删除单独的 /boot 分区?

安装 Ubuntu 时,我毫无理由地创建了一个单独的/boot分区。现在我想将该分区用于其他用途,并将启动文件移至主分区。

我尝试了这个答案,但是现在我的系统启动到 GRUB 的提示符下。

答案1

这个答案是一个很好的起点,但它对于 UEFI 系统来说还不够。

这是对我有用的分步指南。

该答案假定以下分区名称:

Device      Purpose
-------------------------
/dev/sda2   EFI partition
/dev/sda5   /boot
/dev/sda6   /

需要带有 Ubuntu 或其他 Linux 发行版的可启动媒体(实时 USB 等)。在执行以下步骤之前请先进行备份。

  1. 从 Ubuntu 媒体启动并打开终端 ( Ctrl+ Alt+ T)。成为 root 用户:

    sudo su
    
  2. 挂载//boot和 EFI 分区的文件系统:

    cd /mnt
    mkdir efi boot os
    mount /dev/sda2 efi
    mount /dev/sda5 boot
    mount /dev/sda6 os
    
  3. 将分区的内容复制/boot到分区/boot上的目录中:/

    cp -r boot/* os/boot
    
  4. 防止 Ubuntu/boot自动挂载。还请记下根分区的 UUID。/etc/fstab在您喜欢的编辑器中打开:

    gedit os/etc/fstab
    

    以下是我的情况(保存评论):

    UUID=df89aab6-941d-4ffa-9681-e16fc94641d3 /               ext4    errors=remount-ro 0       1
    UUID=f7c32b17-a2f1-4eb3-a8e7-414b6a228a72 /boot           ext4    defaults        0       2
    UUID=2252-1B80  /boot/efi       vfat    umask=0077      0       1
    UUID=a80bb662-d531-408b-bc23-b47f28c44ec4 /home           ext4    defaults        0       2
    /swapfile   none    swap    sw  0   0
    

    我注释掉了挂载的第二行/boot。我还复制了/分区的 UUID,我们稍后会用到它。

  5. 更新 EFI 分区上的 GRUB 配置。此步骤对于 UEFI 系统来说至关重要。

    cd /mnt/efi/EFI/ubuntu
    cp grub.cfg grub.cfg.bak
    gedit grub.cfg
    

    我的grub.cfg看起来像这样:

    search.fs_uuid f7c32b17-a2f1-4eb3-a8e7-414b6a228a72 root hd1,gpt5 
    set prefix=($root)'/grub'
    configfile $prefix/grub.cfg
    

    我必须更新:1. UUID,2. 分区号和 3. 前缀。修改后的文件如下所示:

    search.fs_uuid df89aab6-941d-4ffa-9681-e16fc94641d3 root hd1,gpt6 
    set prefix=($root)'/boot/grub'
    configfile $prefix/grub.cfg
    

    请注意,它与我获得的 UUID 相同/etc/fstab,并且我必须将其添加/boot到前缀中。

  6. 重启硬盘进入 Ubuntu。它应该可以正常启动。确保/boot没有挂载 -grep /boot /etc/mtab应该不会输出任何内容。格式化旧/boot分区(不要将其与当前分区混淆/boot,后者是常规目录)并刷新 GRUB 配置:

    sudo mkfs.ext4 /dev/sda5
    sudo update-grub
    
  7. 再次重新启动,确认操作系统已启动,然后对前启动分区执行任何您想要的操作。

相关内容