关于在独立SSD创建EFI分区并为Ubuntu配置GRUB引导的操作疑问
关于在独立SSD创建EFI分区并为Ubuntu配置GRUB引导的操作疑问
嗨,太懂你隔好久重装Linux就手生的感觉了!结合你的需求——把Ubuntu的引导相关文件放到SSD、避免Windows覆盖GRUB——给你一步步捋清楚怎么操作:
先明确核心思路
你要的是把Ubuntu的EFI系统分区(ESP)和/boot分区都放在SSD上(这样内核、引导文件加载速度会快很多),同时锁定GRUB的启动优先级,防止Windows搞事情。你之前去掉Windows ESP的boot/esp flag是个好操作,但Windows更新可能会偷偷加回来,后面我们再处理这个。
第一步:在SSD上准备分区
进Ubuntu安装前,先用GParted或者安装器的手动分区工具在你的SSD(nvme0)上创建两个分区:
- EFI分区:大小给512MB-1GB就行,格式选FAT32,一定要勾选
esp和boot两个标记(这就是GRUB要放引导文件的地方) - /boot分区:大小2-4GB足够,格式选ext4(专门放内核、initramfs这些文件,从SSD加载速度会快很多)
如果你嫌麻烦,也可以只分EFI分区,把内核放根分区,但独立/boot的好处是根分区出问题时,修复引导会更简单,而且SSD的速度优势能体现出来,更推荐分开。
第二步:Ubuntu安装时的分区配置
选“手动分区”模式(别选自动安装,不然会乱分区):
- 找到你刚在SSD上建的EFI分区,设置挂载点为
/boot/efi,勾选“格式化”(新分区直接勾就行) - 找到SSD上的/boot分区,设置挂载点为
/boot,同样勾选“格式化” - 找到你的Ubuntu系统所在的硬盘,创建根分区
/(格式ext4),需要的话再分/home、swap等其他分区 - 重中之重:“Device for bootloader installation”要选择你的SSD整个设备(比如
/dev/nvme0n1,不是分区!),这一步是告诉GRUB把引导程序安装到SSD的ESP里,而不是Windows的ESP或者系统硬盘。
第三步:安装后验证+防Windows覆盖
- 安装完重启,进BIOS/UEFI把SSD的Ubuntu引导项设为第一启动顺序
- 进Ubuntu后,用
efibootmgr命令查看当前引导项:
你会看到类似sudo efibootmgrBoot0001* Ubuntu的项,Windows的引导项可能是Boot0000* Windows Boot Manager - 如果Windows引导项在前面,用
efibootmgr -o调整顺序(把Ubuntu的引导号放前面),比如:
这里的数字对应你看到的引导号,按需替换就行sudo efibootmgr -o 0001,0000 - 要是Windows更新后又抢了引导,重新执行上面的
efibootmgr命令,或者直接重装GRUB到SSD:sudo grub-install /dev/nvme0n1 sudo update-grub
解答你的几个纠结点
- 要不要创建/boot分区? 推荐创建,SSD的速度优势能让内核加载更快,而且根分区出问题时,独立的/boot更容易修复引导。
- 是创建/efi还是/boot/efi? Ubuntu默认用
/boot/efi作为EFI分区的挂载点,保持默认就好,不用改成/efi,避免不必要的问题。 - “Device for bootloader installation”选什么? 选SSD的整个设备(比如
/dev/nvme0n1),不是具体的分区,安装程序会自动找到你设置的/boot/efi分区来安装GRUB。
备注:内容来源于stack exchange,提问作者Тимур Бирюков




