初学 linux,想问下 /boot 和 /boot/efi,有什么关联?区别?
ubuntu 试了下,只分 / /boot/efi swap,安装成功并启动了,没分 /boot
efi 是用来存 efi 文件的文件夹,只要你能让 grub 找得到 efi 文件就行,分不分区,怎么分区都不是那么重要
一般单独分一个 efi 分区挂到 /boot/efi 就行
正常不是要分 boot 分区么,我只分了 efi
Linux 系统你可以看做只有文件夹,分区挂载上了也是文件夹罢了
另外只要 boot 能读到 efi 文件就能启动了,你就算只分一个根分区也可以,只是说 boot 软件能读的文件系统很少
boot 分区不是必须的。BIOS 模式下,可以不要 boot 分区,因为这个模式下引导代码在 MBR (主引导记录,位于磁盘第一个扇区)里,启动器会把自己的引导代码写入 MBR 。EFI 模式下,EFI 系统分区是必须的,固件会从 EFI 系统分区加载 EFI 应用。
先说为啥要 /boot 单独 (部分理由):
1, 印象中是老旧电脑 bios bug,无法读超过一定范围的 lba(好像是 512MB 后),所以为了兼容搞一个独立的小容量的 boot 分区。
2. / 分区用了过多骚操作,比如 lvm,xxx-cache, sub vol, luks 等,bootloader(grub, syslinux 等)无法处理这么复杂的情况,所以创建一个纯粹的分区或 bootloader 支持操作的独立 boot 分区 放内核和 initramfs 。
传统引导,grub2 为例:mbr -> mbr 后面的嵌入区的代码(grub) -> 内核
efi 引导: /efi/grub/shim.efi 或 grub.efi -> 内核
关键就是: grub 的代码要能读取到内核等需要的文件,不支持才需要 /boot 分区
印象中一些使用 uboot 的嵌入式设备会单独分一个 FAT32 的 /boot 分区来存放内核等文件,可能是 uboot 不支持 ext4 等复杂的文件系统?
有些引导程序确实不支持 ext4,有些甚至连 NTFS 都不支持
新版 u-boot 支持,可能老版不支持?
efi 启动的话独立的 efi 分区基本是必需的,默认挂载到 /boot/efi 里,放引导的 grub,
其他分区都无所谓的,
/boot/efi 一般要单独分出来一个 FAT 的分区在硬盘开头处( macOS 的磁盘工具在操作 GPT 硬盘时会自动并强制创建这一分区),但如果 grub 有配置应该也支持非 FAT 的分区。
/boot 的话如果 /在 LVM 里面的话似乎是建议单独放在 LVM 之外但不分也可以安装。
之前装 Fedora 的时候安装器有专门给 Mac 的优化(我是 15 的 13' MBP ),会尝试创建一个特殊文件系统的 EFI 分区,然后它有警告 /boot 在 LVM 内但可以忽略错误安装。