PRZECZYTAJ.md 7.8 KB

Easyboot

Easyboot to wszechstronny menedżer rozruchu i kreator obrazu dysku startowego, który może załadować różne jądra systemu operacyjnego i jądra zgodne z Multiboot2 w różnych formatach binarnych.

Easyboot

UWAGA: Jeśli szukasz loadera startowego, który ładuje tylko jedno jądro, spójrz na młodszego brata Easyboot, Simpleboot.

Uznanie

Ten projekt nie byłby możliwy bez wsparcia Free Software Foundation Hungary. Projekt powstał w ramach konkursu Free Software Miękki 2023 organizowanego przez FSF.hu.

Zalety w stosunku do GRUB-a

  • niezależny, łatwy w użyciu, wielojęzyczny instalator
  • nie jest rozdęty, stanowi tylko około 0,5% wielkości GRUB-a
  • łatwy w konfiguracji, ze sprawdzaniem składni
  • łatwo łatać tabele ACPI za pomocą dostarczonego przez użytkownika DSDT
  • pokazuje szczegóły błędu, jeśli jądro przestaje działać na wczesnym etapie
  • Multiboot2: czysty 64-bitowy punkt wejścia (nie ma potrzeby osadzania tagów ani 32-bitowego kodu trampoliny w jądrze)
  • Multiboot2: obsługa jąder z wyższej połowy
  • Multiboot2: niezależna od oprogramowania sprzętowego, spójna mapa pamięci na wszystkich platformach
  • Multiboot2: niezależny od oprogramowania sprzętowego, spójny bufor ramki na wszystkich platformach
  • Multiboot2: podano również informacje EDID monitora
  • Multiboot2: w razie potrzeby uruchamia jądro na wszystkich rdzeniach procesora (obsługa SMP)
  • dostępna jest także wtyczka symulująca uruchamianie GRUB-a ze wszystkimi jego pułapkami i błędami.

Obsługiwane jądra: 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)

Obsługiwane systemy plików: FAT12/16/32, exFAT, NTFS (v3, v3.1), ext2/3/4, XFS (SGI), UFS (v2, v4.4), mfs (Minix3), BeFS (Haiku), AXFS (OS/Z)

(Gdy jądro znajduje się na partycji rozruchowej, dla roota można użyć dowolnego systemu plików: ZFS, btrfs itp.)

Uzasadnienie

Stworzyłem prosty w użyciu program ładujący, a użytkownicy prosili o coraz więcej funkcji. Chciałem zachować ten moduł ładujący jako tak proste, jak to możliwe, ale FSF.hu zaoferowało wsparcie, więc zdecydowałem się je rozwidlić i dodać wszystkie żądane funkcje w tym menedżerze rozruchu Zamiast.

Jest to również narzędzie bez smaku, takie jak Simpleboot, nie ma żadnych zależności i jest niezwykle łatwe w użyciu:

  1. utwórz katalog i umieść w nim pliki startowe, między innymi konfigurację menu i opcjonalne wtyczki
  2. wykonaj polecenie easyboot (katalog źródłowy) (plik obrazu wyjściowego)
  3. i... to tyle... nic więcej nie zostało do zrobienia! Obraz Just Works (TM) spowoduje uruchomienie jądra!

Możesz zainstalować menedżera rozruchu i sprawić, że istniejące urządzenie lub obraz będzie można uruchamiać; lub możesz utworzyć obraz startowy od nowa. Możesz uruchom ten obraz na maszynie wirtualnej lub możesz zapisać go za pomocą dd lub USBImager do pamięci i uruchomić to także na prawdziwej maszynie.

Prostota jest szczytem wyrafinowania!

Instalacja

Wystarczy pobrać plik binarny dla swojego systemu operacyjnego. Są to przenośne pliki wykonywalne, nie wymagają instalacji i nie potrzebują jej biblioteki współdzielone/biblioteki DLL.

Ponadto możesz znaleźć różne rozwiązania w zakresie pakowania w katalogu distrib (dla Debian, Ubuntu, RaspiOS, Gentoo, Arch).

Podczas tworzenia obrazu (w zależności od konfiguracji) możesz także potrzebować kilku wtyczek w swoim (katalog źródłowy). Ty można je znaleźć w katalogu src/plugins z rozszerzeniem plg. Po zainstalowaniu z pakietu będą to umieszczony w /usr/share/easyboot.

Dokumentacja

Szczegółową dokumentację (w języku angielskim) dotyczącą korzystania z kreatora dysku startowego i uruchamiania jądra można znaleźć w katalogu docs.

Przykładowe jądro

Jeśli chcesz napisać jądro, które można załadować bez żadnej wtyczki, używając protokołu uproszczonego Multiboot2 Easyboot, spójrz na Przykładowe jądro Simpleboot. Oba programy ładujące używają tego samego protokołu rozruchowego, jądro współpracuje z Easyboot w niezmienionej postaci. Zobaczysz, że nie jest wymagany żaden montaż ani znaczniki osadzone, w przeciwnym razie kod źródłowy jest w 99,9% taki sam jak przykład w specyfikacji Multiboot2 (jedyna różnica polega na tym, że drukuje na konsoli szeregowej, a nie na ekranie teletype VGA, ponieważ to ten ostatni nie istnieje w UEFI i na maszynach RaspberryPi).

Kompilacja

GNU/make potrzebne do orkiestracji (choć dosłownie jest to po prostu cc easyboot.c -o easyboot). Łańcuch narzędzi nie ma znaczenia, zrobi to każdy kompilator ANSI C, działa również na POSIX i WIN32 MINGW. Po prostu przejdź do katalogu src i uruchom make. To wszystko. Pomimo niewielkich rozmiarów jest samowystarczalny, a kompilacja ma dokładnie zerowe zależności bibliotek. Nie na darmo nazywa się to Easyboot :-)

Aby ponownie skompilować programy ładujące, będziesz potrzebować flatassembler oraz LLVM Clang i lld (gcc i GNU ld obawiam się, że nie zadziała). Ale nie martw się, dodałem je wszystkie do src/data.h jako tablicę bajtów, więc nie musisz się kompilować te, chyba że naprawdę tego chcesz (w tym celu po prostu usuń data.h przed uruchomieniem make).

Z drugiej strony, aby skompilować wtyczki, będziesz musiał mieć kompilator krzyżowy, albo LLVM CLang, albo GNU gcc (x86_64-elf-gcc, aarch64-elf-gcc). Repo zawiera je również jako pliki binarne. Aby przeprowadzić rekompilację, po prostu usuń pliki src/plugins/*.plg przed uruchomieniem make.

Licencja

Easyboot jest oprogramowaniem bezpłatnym i otwartym, licencjonowanym na warunkach GPL w wersji 3 lub (według Ciebie) dowolnej późniejszej wersji. Aby uzyskać szczegółowe informacje, zobacz plik LICENSE.

bzt