菜鸟科技网

efi分区命令有哪些?如何正确操作?

EFI (Extensible Firmware Interface) 系统分区是现代计算机(特别是采用 UEFI 启动的系统)所必需的一个小分区,它存储了引导加载程序(如 Windows Boot Manager 或 GRUB)、EFI 驱动程序和系统固件所需的数据。 将涵盖:

efi分区命令有哪些?如何正确操作?-图1
(图片来源网络,侵删)
  1. 识别 EFI 分区
  2. 创建 EFI 分区
  3. 格式化 EFI 分区
  4. 挂载和卸载 EFI 分区
  5. 在 EFI 分区中安装引导加载程序
  6. 重要注意事项

识别 EFI 分区

在操作之前,首先需要确认你的系统上 EFI 分区的位置和标识,它的文件系统类型是 FAT32,并且有一个特定的 GPT 分区类型标识符。

使用 lsblk 命令

lsblk 是一个非常直观的命令,可以列出所有块设备及其分区。

sudo lsblk -f

输出可能如下所示(sda 是你的硬盘):

NAME   FSTYPE FSVER LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 ntfs   ?     Windows     ...                                  ...      ...     /mnt/windows
├─sda2 vfat   FAT32 EFI-SYSTEM 1234-5678                            ...      ...     /boot/efi  <-- 这就是 EFI 分区
└─sda3 ext4   ?     Arch Linux ...                                  ...      ...     /

关键点:

efi分区命令有哪些?如何正确操作?-图2
(图片来源网络,侵删)
  • FSTYPE: vfat (这是 Linux 对 FAT32 文件系统的称呼)。
  • LABEL: EFI-SYSTEMEFI
  • MOUNTPOINT: 通常挂载在 /boot/efi/boot 目录下。

使用 fdiskgdisk 命令

这两个命令可以查看更底层的分区表信息。

使用 fdisk (对于 MBR 和 GPT):

sudo fdisk -l

在输出中,找到 Type 为 "EFI System" 的分区。

使用 gdisk (更推荐,专门用于 GPT):

efi分区命令有哪些?如何正确操作?-图3
(图片来源网络,侵删)
sudo gdisk -l /dev/sda

输出示例:

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: ...
...
Partition table: GPT
Disk identifier: ...
Device      Start        End    Sectors   Size Type
/dev/sda1    2048     1050623   1048576   512M EFI System  <-- 这里
...

如何确认分区类型? 使用 blkid 命令可以查看分区的详细信息,包括 GPT 类型 UUID。

sudo blkid /dev/sda2

输出中应该包含 PARTTYPE="C12A7328-F81F-11D2-BA4B-00A0C93EC93B",这就是 EFI 分区的标准 GPT 类型 ID。


创建 EFI 分区

如果你需要全新创建或调整分区,通常会使用 gdiskparted警告:此操作会删除分区内的所有数据,请务必谨慎!

使用 gdisk (推荐)

  1. 打开 gdisk

    sudo gdisk /dev/sda
  2. 使用命令 n 创建一个新分区。

    • 它会提示输入分区号,直接回车使用下一个可用编号。
    • 起始扇区:直接回车,让它自动选择(通常是 2048)。
    • 结束扇区:输入 +512M (推荐 512MB,足够使用) 或 +1G,你也可以输入扇区号。
    • 分区类型代码:输入 EF,这是 EFI System 的快捷代码。
    • 分区名称:可以输入 EFI 或直接回车。
  3. 使用命令 w 写入分区表并退出,系统会提示你确认,输入 Y

使用 parted (功能更强大)

  1. 打开 parted

    sudo parted /dev/sda
  2. 切换到 GPT 模式(如果还不是):

    (parted) mktable gpt
  3. 创建分区:

    (parted) mkpart primary fat32 1MiB 513MiB
  4. 设置分区类型为 EFI:

    (parted) set 1 esp on

    (这里的 1 是分区号,根据你的情况调整)

  5. 退出:

    (parted) quit

格式化 EFI 分区

创建分区后,需要将其格式化为 FAT32 文件系统。

假设你的 EFI 分区是 /dev/sda2

sudo mkfs.vfat -F 32 -n EFI /dev/sda2
  • mkfs.vfat: 用于创建 FAT 文件系统。
  • -F 32: 指定使用 FAT32 格式。
  • -n EFI: 为分区设置卷标为 EFI,方便识别。

挂载和卸载 EFI 分区

挂载

你需要创建一个挂载点,然后将分区挂载上去。

  1. 创建挂载点(/boot/efi 是标准路径):

    sudo mkdir -p /boot/efi
  2. 挂载分区:

    sudo mount /dev/sda2 /boot/efi
  3. 验证挂载是否成功:

    lsblk -f
    # 或者
    df -hT

你将看到 /dev/sda2 已经挂载在 /boot/efi 上。

卸载

当不再需要访问该分区时,应将其卸载。

sudo umount /boot/efi

如果遇到“设备忙”的错误,可能是因为有程序正在使用该分区,可以尝试使用 lsof 查找并关闭相关进程,或者强制卸载(不推荐,可能导致数据损坏):

sudo umount -l /boot/efi

在 EFI 分区中安装引导加载程序

这是 EFI 分区最重要的功能,以安装 GRUB 为例:

  1. 确保分区已挂载

    sudo mount /dev/sda2 /boot/efi
  2. 安装 GRUB 到 EFI 系统分区

    sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux --recheck
    • --target=x86_64-efi: 指定目标为 UEFI。
    • --efi-directory=/boot/efi: 指定 EFI 分区的挂载点。
    • --bootloader-id=ArchLinux: 设置引导加载程序的名称,在启动菜单中会显示。
    • --recheck: 强制重新检查设备。
  3. 生成 GRUB 配置文件

    sudo grub-mkconfig -o /boot/efi/EFI/ArchLinux/grub.cfg
    • 注意路径:/boot/efi/EFI/ArchLinux/--bootloader-id 指定的路径。

重要注意事项

  • 数据备份:在进行任何分区操作之前,务必备份所有重要数据! 分区格式化或调整大小都有可能导致数据丢失。
  • /boot/efi 的必要性:对于独立的 Linux 发行版(如 Arch Linux, Fedora),将 /boot 和 分开,并将 /boot 挂载到 /boot/efi 是一个常见的做法,对于双系统,Windows 通常会自动创建和管理自己的 EFI 分区(通常挂载在 /boot/efi/mnt/EFI/Microsoft)。
  • 不要随意删除:不要删除或格式化 EFI 分区,否则你的系统将无法启动。
  • 权限:挂载 EFI 分区后,你可能需要调整 /boot/efi 目录的权限,以确保普通用户可以访问(如果需要)。
    sudo chmod 755 /boot/efi
分享:
扫描分享到社交APP
上一篇
下一篇