活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Manjaro安装时没有ESP分区的解决方法与UEFI引导问题详解以及如何正确创建EFI系统分区确保系统正常启动

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-1 01:00:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. ESP分区与UEFI引导基础

1.1 什么是ESP分区

ESP(EFI System Partition)是一个FAT32格式的分区,用于存储UEFI固件加载的引导程序、驱动程序和系统工具。它是UEFI(统一可扩展固件接口)引导模式下的必要组成部分,取代了传统BIOS中的MBR(主引导记录)引导方式。

ESP分区通常包含以下内容:

• UEFI引导加载程序(如GRUB、systemd-boot等)
• 操作系统引导文件
• UEFI应用程序和驱动程序

1.2 UEFI引导系统的工作原理

UEFI引导系统与传统BIOS引导有显著不同:

1. 启动过程:传统BIOS:BIOS → MBR → 活动分区 → 引导加载程序(如GRUB)→ 操作系统内核UEFI:UEFI固件 → ESP分区中的.efi文件 → 引导加载程序 → 操作系统内核
2. 传统BIOS:BIOS → MBR → 活动分区 → 引导加载程序(如GRUB)→ 操作系统内核
3. UEFI:UEFI固件 → ESP分区中的.efi文件 → 引导加载程序 → 操作系统内核
4. 优势:支持大于2TB的硬盘支持GPT分区表,提供更可靠的分区结构更快的启动速度安全启动功能图形化用户界面
5. 支持大于2TB的硬盘
6. 支持GPT分区表,提供更可靠的分区结构
7. 更快的启动速度
8. 安全启动功能
9. 图形化用户界面

启动过程:

• 传统BIOS:BIOS → MBR → 活动分区 → 引导加载程序(如GRUB)→ 操作系统内核
• UEFI:UEFI固件 → ESP分区中的.efi文件 → 引导加载程序 → 操作系统内核

优势:

• 支持大于2TB的硬盘
• 支持GPT分区表,提供更可靠的分区结构
• 更快的启动速度
• 安全启动功能
• 图形化用户界面

1.3 为什么ESP分区对Manjaro安装至关重要

在UEFI系统上安装Manjaro时,ESP分区是必需的,原因如下:

1. 引导要求:UEFI固件需要从ESP分区加载引导程序
2. 兼容性:没有ESP分区,系统可能无法正确识别或启动
3. 系统更新:ESP分区存储了关键的引导文件,系统更新时可能需要修改这些文件
4. 多系统引导:如果计划安装多个操作系统,ESP分区可以容纳多个操作系统的引导程序

2. Manjaro安装时没有ESP分区的常见原因

2.1 硬盘分区表类型不匹配

• MBR分区表:较旧的硬盘可能使用MBR分区表,而UEFI系统通常需要GPT分区表
• 混合模式:某些系统可能在BIOS兼容模式(CSM)下运行,导致安装程序无法正确识别UEFI环境

2.2 安装介质或设置问题

• 非UEFI启动安装介质:如果安装介质(如USB驱动器)是以Legacy BIOS模式启动的,安装程序可能不会创建ESP分区
• 安装程序识别错误:在某些情况下,Manjaro安装程序可能无法正确识别UEFI环境

2.3 预装Windows系统的影响

• 已存在ESP分区:如果系统预装了Windows,可能已经存在ESP分区,但Manjaro安装程序可能无法正确识别或使用它
• 隐藏分区:Windows系统的ESP分区可能被隐藏或未正确挂载

2.4 硬件兼容性问题

• 老旧硬件:某些较老的硬件可能不完全支持UEFI标准
• 制造商特定实现:一些制造商可能有非标准的UEFI实现

3. 检测系统是否使用UEFI引导

在尝试解决ESP分区问题之前,首先需要确认系统是否确实使用UEFI引导模式。

3.1 在Linux Live环境中检测

可以使用以下命令检测系统引导模式:
  1. # 检查系统是否以UEFI模式启动
  2. ls /sys/firmware/efi
  3. # 如果该目录存在,则系统是以UEFI模式启动的
  4. # 如果不存在,则可能是Legacy BIOS模式
复制代码

3.2 使用efibootmgr工具
  1. # 安装efibootmgr(如果尚未安装)
  2. sudo pacman -S efibootmgr
  3. # 列出当前的UEFI引导项
  4. sudo efibootmgr -v
复制代码

3.3 检查磁盘分区表类型
  1. # 检查磁盘分区表类型(以/dev/sda为例)
  2. sudo fdisk -l /dev/sda
  3. # 查看输出中是否包含"GPT"标识
  4. # 或者使用parted工具
  5. sudo parted /dev/sda print
复制代码

4. 解决没有ESP分区问题的方法

4.1 方法一:使用GParted创建ESP分区

在安装Manjaro之前,可以使用GParted分区编辑器创建ESP分区:

1. 从Manjaro安装介质启动,选择”Try Manjaro”进入Live环境
2. 打开GParted分区编辑器
3. 选择要安装Manjaro的磁盘
4. 如果磁盘使用MBR分区表,需要先转换为GPT:注意:转换分区表会删除所有数据,请提前备份在GParted中选择”Device” > “Create Partition Table” > “gpt”
5. 注意:转换分区表会删除所有数据,请提前备份
6. 在GParted中选择”Device” > “Create Partition Table” > “gpt”
7. 创建ESP分区:右键点击未分配空间,选择”New”设置大小为至少100MB(推荐512MB-1GB)设置文件系统为”fat32”在”Flags”中勾选”boot”和”esp”
8. 右键点击未分配空间,选择”New”
9. 设置大小为至少100MB(推荐512MB-1GB)
10. 设置文件系统为”fat32”
11. 在”Flags”中勾选”boot”和”esp”
12. 创建其他所需分区(如根分区/、交换分区等)
13. 应用所有更改
14. 启动Manjaro安装程序,在分区步骤中选择手动分区,并指定刚创建的ESP分区作为EFI系统分区

• 注意:转换分区表会删除所有数据,请提前备份
• 在GParted中选择”Device” > “Create Partition Table” > “gpt”

• 右键点击未分配空间,选择”New”
• 设置大小为至少100MB(推荐512MB-1GB)
• 设置文件系统为”fat32”
• 在”Flags”中勾选”boot”和”esp”

4.2 方法二:使用Manjaro安装程序的分区工具

Manjaro安装程序(通常为Calamares)提供了内置的分区工具:

1. 从Manjaro安装介质启动
2. 开始安装过程,直到分区步骤
3. 选择”Manual”(手动)分区选项
4. 如果磁盘没有ESP分区:选择磁盘,点击”New Partition Table”创建GPT分区表创建ESP分区:大小:至少100MB(推荐512MB-1GB)文件系统:fat32挂载点:/boot/efi标志:boot, esp
5. 选择磁盘,点击”New Partition Table”创建GPT分区表
6. 创建ESP分区:大小:至少100MB(推荐512MB-1GB)文件系统:fat32挂载点:/boot/efi标志:boot, esp
7. 大小:至少100MB(推荐512MB-1GB)
8. 文件系统:fat32
9. 挂载点:/boot/efi
10. 标志:boot, esp
11. 创建根分区(/)和其他所需分区
12. 继续安装过程

• 选择磁盘,点击”New Partition Table”创建GPT分区表
• 创建ESP分区:大小:至少100MB(推荐512MB-1GB)文件系统:fat32挂载点:/boot/efi标志:boot, esp
• 大小:至少100MB(推荐512MB-1GB)
• 文件系统:fat32
• 挂载点:/boot/efi
• 标志:boot, esp

• 大小:至少100MB(推荐512MB-1GB)
• 文件系统:fat32
• 挂载点:/boot/efi
• 标志:boot, esp

4.3 方法三:使用命令行工具创建ESP分区

对于更高级的用户,可以使用命令行工具创建ESP分区:

1. 打开终端
2. 使用parted工具创建GPT分区表和ESP分区:
  1. # 以/dev/sda为例,请根据实际情况替换
  2. sudo parted /dev/sda
  3. # 创建GPT分区表
  4. mklabel gpt
  5. # 创建ESP分区(从1MB开始,大小为512MB)
  6. mkpart ESP fat32 1MiB 513MiB
  7. # 设置ESP分区标志
  8. set 1 boot on
  9. set 1 esp on
  10. # 创建根分区(从513MB开始,使用剩余空间)
  11. mkpart primary ext4 513MiB 100%
  12. # 退出parted
  13. quit
  14. # 格式化ESP分区为FAT32
  15. sudo mkfs.fat -F32 /dev/sda1
  16. # 格式化根分区为ext4
  17. sudo mkfs.ext4 /dev/sda2
复制代码

1. 挂载分区并开始安装:
  1. # 创建挂载点
  2. sudo mkdir /mnt/manjaro
  3. # 挂载根分区
  4. sudo mount /dev/sda2 /mnt/manjaro
  5. # 创建ESP挂载点
  6. sudo mkdir /mnt/manjaro/boot/efi
  7. # 挂载ESP分区
  8. sudo mount /dev/sda1 /mnt/manjaro/boot/efi
复制代码

1. 启动Manjaro安装程序,在分区步骤中选择”Manual”并指定已挂载的分区

5. 正确创建EFI系统分区的详细步骤

5.1 确定ESP分区的合适大小

ESP分区的大小取决于系统需求:

• 最小大小:100MB(足够存储基本的引导文件)
• 推荐大小:512MB(提供足够空间存储多个操作系统的引导文件)
• 较大配置:1GB(如果计划使用多个操作系统或需要存储额外的UEFI应用程序)

5.2 ESP分区的位置和类型

• 位置:建议将ESP分区放在磁盘的开头部分(前几个分区之一)
• 类型:FAT32是UEFI规范要求的文件系统类型
• 分区类型GUID:C12A7328-F81F-11D2-BA4B-00A0C93EC93B(这是ESP分区的标准GUID)

5.3 使用gdisk创建ESP分区

gdisk是一个强大的GPT分区表编辑工具:
  1. # 安装gdisk
  2. sudo pacman -S gdisk
  3. # 启动gdisk(以/dev/sda为例)
  4. sudo gdisk /dev/sda
  5. # 创建新的GPT分区表(如果需要)
  6. Command: o
  7. # 创建ESP分区
  8. Command: n
  9. Partition number: [默认值]
  10. First sector: [默认值]
  11. Last sector: +512M
  12. Hex code or GUID: EF00
  13. Changed type of partition to 'EFI System'
  14. # 创建根分区
  15. Command: n
  16. Partition number: [默认值]
  17. First sector: [默认值]
  18. Last sector: [默认值,使用剩余空间]
  19. Hex code or GUID: [默认值,8300]
  20. # 写入更改并退出
  21. Command: w
  22. Do you want to proceed? (Y/N): Y
复制代码

5.4 格式化ESP分区

创建ESP分区后,需要正确格式化:
  1. # 格式化ESP分区为FAT32(假设ESP分区为/dev/sda1)
  2. sudo mkfs.fat -F32 -v -I /dev/sda1
  3. # 创建挂载点
  4. sudo mkdir -p /mnt/manjaro/boot/efi
  5. # 挂载ESP分区
  6. sudo mount /dev/sda1 /mnt/manjaro/boot/efi
复制代码

6. 安装Manjaro并配置UEFI引导

6.1 使用Manjaro安装程序进行安装

1. 启动Manjaro安装程序
2. 选择语言、键盘布局等基本设置
3. 在分区步骤:选择”Manual”分区选项选择之前创建的ESP分区,设置挂载点为/boot/efi选择根分区,设置挂载点为/如果需要,创建并配置其他分区(如/home、swap等)
4. 选择”Manual”分区选项
5. 选择之前创建的ESP分区,设置挂载点为/boot/efi
6. 选择根分区,设置挂载点为/
7. 如果需要,创建并配置其他分区(如/home、swap等)
8. 继续安装过程,直到完成

• 选择”Manual”分区选项
• 选择之前创建的ESP分区,设置挂载点为/boot/efi
• 选择根分区,设置挂载点为/
• 如果需要,创建并配置其他分区(如/home、swap等)

6.2 手动安装和配置引导加载程序

如果选择手动安装或需要修复引导问题:
  1. # 安装基础系统
  2. sudo pacstrap /mnt/manjaro base base-devel linux linux-firmware
  3. # 生成fstab文件
  4. sudo genfstab -U /mnt/manjaro >> /mnt/manjaro/etc/fstab
  5. # 切换到新系统
  6. sudo arch-chroot /mnt/manjaro /bin/bash
  7. # 安装必要的软件包
  8. pacman -S grub efibootmgr
  9. # 安装GRUB到ESP分区
  10. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Manjaro
  11. # 生成GRUB配置文件
  12. grub-mkconfig -o /boot/grub/grub.cfg
  13. # 退出chroot环境
  14. exit
  15. # 卸载分区
  16. sudo umount -R /mnt/manjaro
  17. # 重启系统
  18. sudo reboot
复制代码

6.3 使用systemd-boot作为引导加载程序

systemd-boot是一个简单的UEFI引导管理器,可以作为GRUB的替代方案:
  1. # 在chroot环境中安装systemd-boot
  2. bootctl --path=/boot/efi install
  3. # 创建引导条目
  4. nano /boot/efi/loader/entries/manjaro.conf
  5. # 添加以下内容(根据实际情况调整):
  6. title   Manjaro Linux
  7. linux   /vmlinuz-linux
  8. initrd  /initramfs-linux.img
  9. options root=/dev/sda2 rw
  10. # 创建默认配置
  11. nano /boot/efi/loader/loader.conf
  12. # 添加以下内容:
  13. default manjaro.conf
  14. timeout 4
  15. # 退出chroot环境并重启
  16. exit
  17. sudo umount -R /mnt/manjaro
  18. sudo reboot
复制代码

7. 修复现有的UEFI引导问题

7.1 重建ESP分区

如果系统已经安装但没有ESP分区或ESP分区有问题:

1. 使用Live USB启动系统
2. 备份重要数据
3. 创建ESP分区(如前所述)
4. 重新安装引导加载程序:
  1. # 挂载根分区
  2. sudo mount /dev/sda2 /mnt
  3. # 创建ESP挂载点并挂载
  4. sudo mkdir /mnt/boot/efi
  5. sudo mount /dev/sda1 /mnt/boot/efi
  6. # 进入chroot环境
  7. sudo arch-chroot /mnt
  8. # 重新安装GRUB
  9. pacman -S grub efibootmgr
  10. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Manjaro --recheck
  11. grub-mkconfig -o /boot/grub/grub.cfg
  12. # 退出并重启
  13. exit
  14. sudo reboot
复制代码

7.2 使用Boot Repair工具

Boot Repair是一个方便的工具,可以自动修复各种引导问题:
  1. # 添加Boot Repair仓库
  2. sudo pacman -S yaourt
  3. yaourt -S boot-repair
  4. # 运行Boot Repair
  5. boot-repair
复制代码

按照界面提示操作,Boot Repair会自动检测并修复引导问题。

7.3 手动重建UEFI引导项

如果UEFI固件中的引导项丢失或损坏:
  1. # 安装efibootmgr
  2. sudo pacman -S efibootmgr
  3. # 列出当前引导项
  4. sudo efibootmgr -v
  5. # 创建新的引导项(替换为实际路径)
  6. sudo efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/grub/grubx64.efi --label "Manjaro" --verbose
  7. # 设置引导顺序
  8. sudo efibootmgr -o 0000,0001,0002
复制代码

8. 常见问题与解决方案

8.1 系统启动后直接进入UEFI设置

问题:安装完成后,系统启动直接进入UEFI设置界面,而不是Manjaro系统。

解决方案:

1. 检查ESP分区是否正确创建并挂载
2. 确认引导加载程序是否正确安装到ESP分区
3. 使用efibootmgr检查并创建正确的引导项
4. 在UEFI设置中,禁用”Secure Boot”(安全启动)功能
5. 检查UEFI设置中的启动顺序,确保Manjaro引导项位于首位

8.2 “No bootable device found”错误

问题:系统启动时显示”No bootable device found”错误。

解决方案:

1. 确认系统是以UEFI模式启动的(不是Legacy BIOS模式)
2. 检查ESP分区是否正确创建并格式化为FAT32
3. 使用Live USB启动并重新安装引导加载程序
4. 检查UEFI设置中的CSM(兼容性支持模块)设置

8.3 GRUB引导菜单不显示

问题:系统启动时GRUB引导菜单不显示,直接进入Manjaro或其他操作系统。

解决方案:

1. 编辑GRUB配置文件:
  1. sudo nano /etc/default/grub
复制代码

1. 修改以下参数:GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu
2. 更新GRUB配置:sudo grub-mkconfig -o /boot/grub/grub.cfg

修改以下参数:
  1. GRUB_TIMEOUT=5
  2. GRUB_TIMEOUT_STYLE=menu
复制代码

更新GRUB配置:
  1. sudo grub-mkconfig -o /boot/grub/grub.cfg
复制代码

8.4 Windows和Manjaro双引导问题

问题:在已安装Windows的系统上安装Manjaro后,无法引导Windows。

解决方案:

1. 确保Manjaro安装程序正确识别了Windows的ESP分区
2. 在GRUB配置中启用Windows引导项检测:
  1. sudo nano /etc/default/grub
复制代码

确保以下行未被注释:
  1. GRUB_DISABLE_OS_PROBER=false
复制代码

1. 更新GRUB配置:
  1. sudo grub-mkconfig -o /boot/grub/grub.cfg
复制代码

1. 如果Windows仍然无法启动,可以尝试使用Windows安装介质修复Windows引导:
  1. # 在Windows恢复环境中
  2. bootrec /fixmbr
  3. bootrec /fixboot
  4. bootrec /rebuildbcd
复制代码

9. 最佳实践与建议

9.1 分区规划建议

对于Manjaro安装,推荐以下分区方案:

1. ESP分区:512MB,FAT32,挂载点/boot/efi
2. 根分区(/):至少30GB,ext4
3. 家分区(/home):剩余空间,ext4
4. 交换分区:与RAM大小相同或更小(如果使用休眠功能,应与RAM大小相同)

9.2 定期备份ESP分区

ESP分区包含关键的引导文件,建议定期备份:
  1. # 创建ESP分区备份
  2. sudo dd if=/dev/sda1 of=/path/to/backup/esp_backup.img bs=4M
  3. # 恢复ESP分区
  4. sudo dd if=/path/to/backup/esp_backup.img of=/dev/sda1 bs=4M
复制代码

9.3 保持系统更新

定期更新系统可以避免许多引导问题:
  1. # 更新系统
  2. sudo pacman -Syu
  3. # 更新GRUB配置
  4. sudo grub-mkconfig -o /boot/grub/grub.cfg
复制代码

9.4 使用UEFI固件更新

保持UEFI固件更新也很重要:

1. 检查主板制造商网站是否有可用的UEFI更新
2. 仔细阅读更新说明并按照指示进行更新
3. 更新过程中不要断电或中断系统

10. 结论

在UEFI系统上安装Manjaro时,正确创建和配置ESP分区是确保系统正常启动的关键。通过理解ESP分区的作用、UEFI引导原理以及正确的分区方法,可以避免许多常见的引导问题。

本文详细介绍了如何检测系统引导模式、创建ESP分区、安装和配置引导加载程序以及解决常见引导问题的方法。遵循这些步骤和建议,可以确保Manjaro系统在UEFI环境下顺利安装和启动。

记住,在进行任何分区或引导配置操作之前,始终备份重要数据,以防意外发生。如果遇到问题,不要犹豫,使用Manjaro社区论坛或其他Linux社区寻求帮助。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则