EFI系统分区迁移
前言
我是用的是Manjaro,由于当时/home目录的分区太小了,而Linux上扩展分区只能连续的分区中扩展,我的efi堵在了中间,所以就想把他迁移到另一个分区,顺利扩展/home目录分区。
步骤
以下是在同一个硬盘中迁移中的EFI系统分区的详细步骤:
- 打开终端,并使用以下命令卸载要迁移的EFI系统分区:
sudo umount /boot/efi
- 使用
lsblk
命令或其他分区工具查看硬盘的分区布局,确定要迁移的EFI系统分区及其设备文件名和UUID。 - 使用以下命令创建一个与要迁移的EFI系统分区大小相同的新分区:
sudo fdisk /dev/sda
n
p
<Enter>
<Enter>
<Enter>
t
<Enter>
1c
w
其中,/dev/sda
是硬盘的设备文件名,n
命令创建新分区,p
命令指定分区类型为主分区,t
命令更改分区类型,1
是要更改的分区编号,c
是EFI系统分区的类型代码,w
命令将更改写入硬盘。
- 格式化新分区为FAT32文件系统:
sudo mkfs.vfat -F32 /dev/sdaY
其中,/dev/sdaY
是新分区的设备文件名,Y
是新分区的编号。
- 挂载原始EFI系统分区和新分区:
sudo mount /dev/sdaX /mnt
sudo mount /dev/sdaY /mnt2
其中,/dev/sdaX
是要迁移的EFI系统分区的设备文件名,/dev/sdaY
是新分区的设备文件名,/mnt
和 /mnt2
是挂载点。
- 使用以下命令将原始EFI系统分区的内容复制到新分区:
sudo cp -a /mnt/. /mnt2/
其中,/mnt/
是原始EFI系统分区的挂载点,/mnt2/
是新分区的挂载点。
- 更新新分区的
/etc/fstab
文件,并将新分区的UUID添加到其中:
sudo blkid /dev/sdaY
其中,/dev/sdaY
是新分区的设备文件名,它将返回新分区的UUID。
打开 /etc/fstab
文件,将新分区的UUID添加到其中,例如:
UUID=<new_partition_uuid> /boot/efi vfat umask=0077 0 2
其中,<new_partition_uuid>
是新分区的UUID,/boot/efi
是新分区的挂载点,vfat
是新分区的文件系统类型,umask=0077
表示使用安全的挂载选项,0
表示在备份时不需要备份该分区,2
表示在启动时需要挂载该分区。
同时注意把原/boot/efi的挂载分区注释掉。使用新的分区就行。
- 卸载原始EFI系统分区和新分区:
sudo umount /mnt
sudo umount /mnt2
- 使用以下命令将新分区挂载为EFI系统分区:
sudo mount /dev/sdaY /boot/efi
现在,您已经成功地将Manjaro中的EFI系统分区迁移到同一个硬盘中的新分区上。请重启系统以确保新分区能够正常工作。
修改fstab和grub分区设置
由于efi引导分区改变,所以在系统引导和加载时需要修改配置,如下
修改fstab文件,将boot分区的UUID修改为新的boot分区的UUID
$ vim /etc/fstab
同时grub引导程序中仍然使用就得boot分区,所有也需要进行修改
sudo grub-install /dev/sda
sudo grub-mkconfig -o /boot/grub/grub.cfg