页次: 1
如题,在安装 arch 的时候,必须单独为 efi 划分一个 esp 分区吗?
在使用 debian 的时候,输入 df -h ,我发现实际上是没有 /boot/efi 这个分区的,整块硬盘全部挂载在 / 上
我尝试不划分 esp,但结果就是我根本无法开机
有什么办法,可以不用单独划分 esp 分区,也能正常使用 efi 引导开机吗?(强迫症,看见 dev/sda1,dev/sda2 很难受)
据我所知,swap 是不用单独划分分区也可以创建的,那么 efi 有什么方法吗?
最近编辑记录 nibazshab (2022-08-10 15:49:57)
离线
一般的主板只会识别 FAT 文件系统,把 Arch 装在这种文件系统上会出大问题。你说之前的 Debian 没有 esp,要么就是用传统引导启动的,要么就是没挂载 esp。另外,Arch 并没有约定将 esp 挂载在 /boot/efi,常用的挂载点有 /boot(把 vmlinuz 和 initramfs 放进 esp)和 /efi(不把 vmlinuz 和 initramfs 放进 esp)。
离线
一般的主板只会识别 FAT 文件系统,把 Arch 装在这种文件系统上会出大问题。你说之前的 Debian 没有 esp,要么就是用传统引导启动的,要么就是没挂载 esp。另外,Arch 并没有约定将 esp 挂载在 /boot/efi,常用的挂载点有 /boot(把 vmlinuz 和 initramfs 放进 esp)和 /efi(不把 vmlinuz 和 initramfs 放进 esp)。
谢谢回答,既然如此,如果使用 ext4 文件系统,把 efi 放进 /boot/ ,会导致主板无法读取是吗,这样的话,那想必是只得为 efi 单独分区了
离线
如题,在安装 arch 的时候,必须单独为 efi 划分一个 esp 分区吗?
在使用 debian 的时候,输入 df -h ,我发现实际上是没有 /boot/efi 这个分区的,整块硬盘全部挂载在 / 上
我尝试不划分 esp,但结果就是我根本无法开机
有什么办法,可以不用单独划分 esp 分区,也能正常使用 efi 引导开机吗?(强迫症,看见 dev/sda1,dev/sda2 很难受)
据我所知,swap 是不用单独划分分区也可以创建的,那么 efi 有什么方法吗?
df -h没有efi分区只是说明你的系统并没有挂载该分区,不代表你的硬盘上没有这部分的分区。如二楼所说,电脑开机后uefi会检查硬盘分区,查找ESP分区,并在该分区的/EFI/BOOT文件夹中查找bootx64.efi文件(对于x64系统来说),将该文件作为引导程序加载内存并启动。该文件加载后会启动你的引导器,最常见的如grub(我假设你使用的是grub引导器)。uefi受主板cmos存储芯片的限制,只能支持少数的文件系统,常见的是FAT12/16/32,我遇到过一些新主板也有支持NTFS的,但ext这些的文件系统很少有主板支持。因此引导程序的一个作用就是加载相关程序使设备能够正确识别并读取linux系统所在的分区,紧接着加载linux内核并把控制权交给你的linux操作系统。(不建议将linux安装到ntfs分区上,问题会很多)
swap分区也是需要划分的,或者你也可以选择不划分swap分区/划分不挂载swap分区,系统都是可以运行的。但是esp分区是一定要划分的。
谢谢回答,既然如此,如果使用 ext4 文件系统,把 efi 放进 /boot/ ,会导致主板无法读取是吗,这样的话,那想必是只得为 efi 单独分区了?
注意区分挂载和目录,你把esp分区挂载到/boot,那么安装系统后内核文件还有引导程序是都在你的esp分区里的。如果不挂载esp分区,我不能预测grub的行为。假设efi文件还是照常安装在/boot上,那这时efi文件就存到了你的ext4分区中,当然无法完成引导识别。
如果将esp分区挂载到/efi或者/boot/efi(这里的挂载点其实可以任意指定,仅有的用处是在你安装grub引导器的时候告诉安装程序你的efi要写到esp分区中,wiki里对应“grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB”这个命令,安装成功后就可以将esp挂载点卸载),引导器的文件和系统的内核是分别放在esp分区和你的ext4分区下的/boot目录中。当arch安装完成后,你可以编辑/etc/fstab文件将efi挂载条目删除,达到Debian系统的效果。这么做的目的是为了保护esp分区不被篡改。如果你有efi引导启动的windows系统,你去看一下磁盘管理,也一定是有一个esp分区的。甚至你还能够看到一个msr分区(这个分区是用于兼容传统mbr引导系统用的),不知道能不能治好你的强迫症hh
最近编辑记录 Watermelon.Rei (2022-02-18 10:37:42)
离线
对于 UEFI 启动来说,你必须有至少一个 esp。至于它放哪里,怎么挂载,都可以灵活处理。
在线
nibazshab 说:如题,在安装 arch 的时候,必须单独为 efi 划分一个 esp 分区吗?
在使用 debian 的时候,输入 df -h ,我发现实际上是没有 /boot/efi 这个分区的,整块硬盘全部挂载在 / 上
我尝试不划分 esp,但结果就是我根本无法开机
有什么办法,可以不用单独划分 esp 分区,也能正常使用 efi 引导开机吗?(强迫症,看见 dev/sda1,dev/sda2 很难受)
据我所知,swap 是不用单独划分分区也可以创建的,那么 efi 有什么方法吗?
df -h没有efi分区只是说明你的系统并没有挂载该分区,不代表你的硬盘上没有这部分的分区。如二楼所说,电脑开机后uefi会检查硬盘分区,查找ESP分区,并在该分区的/EFI/BOOT文件夹中查找bootx64.efi文件(对于x64系统来说),将该文件作为引导程序加载内存并启动。该文件加载后会启动你的引导器,最常见的如grub(我假设你使用的是grub引导器)。uefi受主板cmos存储芯片的限制,只能支持少数的文件系统,常见的是FAT12/16/32,我遇到过一些新主板也有支持NTFS的,但ext这些的文件系统很少有主板支持。因此引导程序的一个作用就是加载相关程序使设备能够正确识别并读取linux系统所在的分区,紧接着加载linux内核并把控制权交给你的linux操作系统。(不建议将linux安装到ntfs分区上,问题会很多)
swap分区也是需要划分的,或者你也可以选择不划分swap分区/划分不挂载swap分区,系统都是可以运行的。但是esp分区是一定要划分的。
nibazshab 说:谢谢回答,既然如此,如果使用 ext4 文件系统,把 efi 放进 /boot/ ,会导致主板无法读取是吗,这样的话,那想必是只得为 efi 单独分区了?
注意区分挂载和目录,你把esp分区挂载到/boot,那么安装系统后内核文件还有引导程序是都在你的esp分区里的。如果不挂载esp分区,我不能预测grub的行为。假设efi文件还是照常安装在/boot上,那这时efi文件就存到了你的ext4分区中,当然无法完成引导识别。
如果将esp分区挂载到/efi或者/boot/efi(这里的挂载点其实可以任意指定,仅有的用处是在你安装grub引导器的时候告诉安装程序你的efi要写到esp分区中,wiki里对应“grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB”这个命令,安装成功后就可以将esp挂载点卸载),引导器的文件和系统的内核是分别放在esp分区和你的ext4分区下的/boot目录中。当arch安装完成后,你可以编辑/etc/fstab文件将efi挂载条目删除,达到Debian系统的效果。这么做的目的是为了保护esp分区不被篡改。如果你有efi引导启动的windows系统,你去看一下磁盘管理,也一定是有一个esp分区的。甚至你还能够看到一个msr分区(这个分区是用于兼容传统mbr引导系统用的),不知道能不能治好你的强迫症hh
原来esp分区可以不用挂载啊,学习了。
离线
有这么几种方案可以没有fat格式的esp:
1. 在bios中加入你的根文件系统的efi驱动,这样bios就可以看到你的根文件系统上的bootloader和kernel
2. 把bootloader作为bios的payload,让bios直接引导bootloader然后直接引导内核
3. 把linux内核作为bios的payload,这样你的根文件系统甚至不需要安装内核(缺点是每次更新内核/内存盘/引导参数都需要写入bios而且打包大小受限)
(可惜这两种方案都需要你的系统支持coreboot(至少后面两种肯定要))
最近编辑记录 yw662 (2022-02-19 03:55:38)
ecmascript是世界上最好的语言
离线
(强迫症,看见 dev/sda1,dev/sda2 很难受)
你可以用PARTLABEL或LABEL,这样你就不需要看见sdXY了(
ecmascript是世界上最好的语言
离线
页次: 1