loongarch64 / website

https://loongarch.dev
6 stars 3 forks source link

zh-cn/posts/3a5000-uefi/ #19

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

3A5000之UEFI - LoongArch 开放社区

在3A5000上使用UEFI

https://loongarch.dev/zh-cn/posts/3a5000-uefi/

eshangui commented 2 years ago

请问,loongarch什么时候会向开发者开放edk环境?我们是计算机外设厂商,需要针对我们的产品开发UEFI驱动,之前都是把源码发给昆仑或者ODM,由他们编译,然后返回给我们测试,这个过程效率低且不方便,如果能让开发者自行编译基于loongarch的uefi驱动就好了

yetist commented 2 years ago

loongarch 的 edk2 已经有开放计划,目前在 https://github.com/loongson/edk2 已经 fork 了上游仓库,有些问题(比如PE格式的 loongarch 架构号)和上游确认之后会逐步开放的。

您讲到的 UEFI 驱动编译这个事,确实是麻烦且低效的,不知道代码有没有使用 gnu-efi 库,如果使用了的话,倒是可以不依赖 edk2 环境自行编译出 .efi 文件,gnu-efi 开放在这里: https://github.com/loongarch64/gnu-efi/tree/dev-la64/master

driver1998 commented 2 years ago

有点好奇bootloongarch.efi这样的文件名在EFI下会不会有问题,因为别的架构都是尽可能缩成8.3格式

yetist commented 2 years ago

目前在硬盘上对 esp 分区使用 FAT32 没有发现问题,uefi shell 也能正常加载,另外参见 grub 代码的 util/grub-mkrescue.c 文件,riscv 上对于 32 位和 64 位分别使用了 bootriscv32.efibootriscv64.efi,也是超出了 8.3 的长度。

刚才查询了 UEFI 规范之后,发现在UEFI Specification Version 2.9 (March 2021)13.3 File System Format 章节部分,对于所使用的文件系统有如下说明:

EFI encompasses the use of FAT32 for a system partition, and FAT12 or FAT16 for removable media. 
...
The file system supported by EFI includes support for long file names.

就是说 UEFI 既支持 FAT12/16/32 文件系统,也支持长文件名。

唯一可能存在问题的是,如果使用 FAT12/FAT16 (如在可移动磁盘上)的话,由于它们的目录项只支持 8.3 格式的文件名,会导致固件找不到默认 efi 文件,除非使用能支持长文件名的 FAT32 文件系统。

@kilaterlee 看看这个问题,我们是否要考虑将默认的 efi 文件名缩短,以支持 FAT12/FAT16 文件系统?

driver1998 commented 2 years ago

按理说FAT16也是支持VFAT长文件名的,毕竟Windows 95首次支持长文件名的时候,FAT32还没出现

driver1998 commented 2 years ago

FAT12的话,一般是用在软盘,可能光盘El Torito的启动镜像会受影响。

zhuyaliang commented 2 years ago

非常好的科普好文