自述文档.md 6.9 KB

Easyboot

Easyboot 是一款一体化的启动 管理器 和可启动磁盘映像创建器,可以加载各种二进制格式的各种操作系统内核和 Multiboot2 兼容内核。

Easyboot

注意:如果您正在寻找一个仅加载单个内核的引导 *加载程序*,那么请看看 Easyboot 的弟弟,Simpleboot

致谢

如果没有匈牙利自由软件基金会 的支持,这个项目就不可能实现。该项目是根据 FSF.hu 的 2023 年自由软件招标创建的。

相对于 GRUB 的优势

  • 无依赖、易于使用、多语言安装程序
  • 不臃肿,大约只有 GRUB 大小的 0.5%
  • 易于配置,带有语法检查器
  • 使用用户提供的 DSDT 轻松修补 ACPI 表
  • 如果内核在早期阶段关闭,则显示错误详细信息
  • Multiboot2:干净的 64 位入口点(无需在内核中嵌入标签或 32 位蹦床代码)
  • Multiboot2:支持高半内核
  • Multiboot2:所有平台上独立于固件、一致的内存映射
  • Multiboot2:所有平台上独立于固件、一致的帧缓冲区
  • Multiboot2:还提供了显示器的 EDID 信息
  • Multiboot2:如果需要,在所有处理器核心上启动内核(SMP 支持)
  • 还有一个插件可以模拟 GRUB 启动及其所有陷阱和错误。

支持的内核:Multiboot1 (ELF32, PE/COFF, a.out; BIOS, UEFI, RPi), Multiboot2 (ELF32, ELF64, PE32+/COFF, a.out; BIOS, UEFI, RPi), Linux (BIOS, UEFI, RPi), Windows (UEFI), OpenBSD (BIOS, UEFI), FreeBSD (BIOS, UEFI), FreeDOS (BIOS), ReactOS (BIOS), MenuetOS 32 / 64 (BIOS, UEFI), KolibriOS (BIOS, UEFI), SerenityOS (BIOS, UEFI), Haiku (BIOS, UEFI)

支持的文件系统:FAT12/16/32, exFAT, NTFS (v3, v3.1), ext2/3/4, XFS (SGI), UFS (v2, v4.4), mfs (Minix3), BeFS (Haiku), AXFS (OS/Z)

(当内核位于引导分区时,任何文件系统都可以用作根:ZFS、btrfs 等)

理由

我创建了一个简单易用的引导加载程序,用户要求越来越多的功能。 我想将该引导加载程序保留为尽可能简单,但 FSF.hu 提供了支持,所以我决定分叉它并在此启动管理器中添加所 有请求的功能反而。

这也是一个像 Simpleboot 一样的 不吸吮的 工具,没有依赖项,并且非常易于使用:

  1. 创建一个目录并将启动文件放入其中,其中包括菜单配置和可选插件
  2. 执行 easyboot (源目录) (输出镜像文件) 命令
  3. 而且……就是这样……没什么可做的了! 图像 *Just Works (TM)*,它将启动您的内核!

您可以安装启动管理器并使现有设备或映像可启动; 或者您可以重新创建可启动映像。 你可以在虚拟机中启动该映像,或者您可以使用 ddUSBImager 将其写入存储并启动在真机上也是如此。

简单就是终极的复杂!

安装

只需下载适合您操作系统的二进制文件即可。 这些是可移植的可执行文件,不需要安装,也不需要任何共享库/DLL。

此外,您可以在 distrib 目录中找到各种打包解决方案(适用于 Debian、Ubuntu、RaspiOS、Gentoo、Arch)。

创建图像时(取决于您的配置),您可能还需要 (源目录) 中的一些插件。 您可以使用扩展名 plgsrc/plugins 目录中找到它们。 从软件包安装时, 它们将放置在 /usr/share/easyboot 下。

文档

有关如何使用可启动磁盘创建器以及如何启动内核的详细文档(英文)可以在 docs 目录中找到。

示例内核

如果你想使用 Easyboot简化的 Multiboot2 协议编写一个无需任何插件即可加载的内核,请查看 Simpleboot 示例内核 目录。两个加载程序使用相同的引导协议,该内核按原样与 Easyboot 一起工作。 您将看到不需要 Assembly 或嵌入式标签,否则源代码与 Multiboot2 规范中的示例 99.9% 相同(唯一的区别是,它打印到串行控制台, 而不是打印在 VGA 电传打字机屏幕上,因为 UEFI 和 RaspberryPi 机器上不存在后者)。

汇编

编排需要 GNU/make(尽管它实际上只是 cc easyboot.c -o easyboot)。 工具链并不重要,任何 ANSI C 编译器都可以,也可以在 POSIX 和 WIN32 MINGW 上运行。 只需进入 src 目录并运行 make 即可。 就这样。尽管它的尺寸很小,但它是独立的,并且编译时的库依赖性完全为零。 它的名字 Easyboot 不是无缘无故的:-)

要重新编译加载器,您需要 flatassembler、LLVM Clang 和 lld(gcc 和 GNU ld 恐怕行不通)。 但别担心, 我已经将它们全部添加到 src/data.h 作为字节数组,所以你不必编译这些除非你真的想要(为此,只需在运行 make 之前删除 data.h )。

另一方面,要编译插件,您必须有一个交叉编译器,可以是 LLVM CLang 或 GNU gcc (x86_64-elf-gcc,aarch64-elf-gcc)。 该存储库也将这些作为二进制文件包含在内。 要重新编译,只需在运行 make 之前删除 src/plugins/*.plg 文件即可。

执照

Easyboot 是免费开源软件,根据 GPL 版本 3 或(根据您的意见)任何更高版本的条款获得许可。有关详细信息,请参阅 LICENSE 文件。

bzt