Easyboot è un gestore di avvio tutto-in-uno e un creatore di immagini disco avviabili che può caricare vari kernel del sistema operativo e kernel compatibili con Multiboot2 in vari formati binari.
NOTA: Se stai cercando un loader di avvio, che carica solo un singolo kernel, dai un'occhiata al fratellino di Easyboot, Simpleboot.
Questo progetto non sarebbe stato possibile senza il supporto della Free Software Foundation Hungary. Il progetto è stato creato nell'ambito del Bando per il Software Libero 2023 di FSF.hu.
Kernel supportati: 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)
File system supportati: FAT12/16/32, exFAT, NTFS (v3, v3.1), ext2/3/4, XFS (SGI), UFS (v2, v4.4), mfs (Minix3), BeFS (Haiku), AXFS (OS/Z)
(Quando il kernel si trova nella partizione di avvio, è possibile utilizzare qualsiasi file system per root: ZFS, btrfs, ecc.)
Ho creato un boot loader semplice da usare e gli utenti chiedevano sempre più funzionalità. Volevo mantenere quel boot loader come semplice possibile, ma FSF.hu offriva supporto, quindi ho deciso di biforcarlo e aggiungere invece tutte le funzionalità richieste in questo boot gestore.
Anche questo è uno strumento senza succhiotto come Simpleboot, non ha dipendenze ed estremamente facile da usare:
easyboot (directory sorgente) (file immagine di output)
.È possibile installare il boot manager e rendere avviabile un dispositivo o un'immagine esistente; oppure puoi creare di nuovo
un'immagine avviabile. Puoi avvia l'immagine in una VM oppure puoi scriverla con dd
o USBImager
in un dispositivo di archiviazione e avviare anche quello su una macchina reale.
La semplicità è la sofisticatezza finale!
Basta scaricare il file binario per il tuo sistema operativo. Questi sono eseguibili portatili, non richiedono installazione e non necessitano di librerie/DLL condivise.
Inoltre puoi trovare varie soluzioni di pacchettizzazione nella directory distrib (per Debian, Ubuntu, RaspiOS, Gentoo, Arch).
Quando crei un'immagine quindi (a seconda della tua configurazione) potresti anche aver bisogno di alcuni plugin nella tua
(directory sorgente)
. Puoi trovarli nella directory src/plugins usando l'estensione plg
. Se installati da un
pacchetto, questi verranno posizionati in /usr/share/easyboot
.
La documentazione dettagliata (in inglese) su come utilizzare il creatore del disco di avvio e su come viene avviato un kernel può essere trovata nella directory docs.
Se vuoi scrivere un kernel che possa essere caricato senza alcun plugin utilizzando il protocollo Multiboot2 semplificato di Easyboot, dai un'occhiata a Simpleboot Kernel di esempio. Entrambi i caricatori utilizzano lo stesso protocollo di avvio, il kernel funziona con Easyboot così com'è. Vedrai che non sono richiesti Assembly né tag incorporati, altrimenti il codice sorgente è uguale al 99,9% all'esempio nelle specifiche Multiboot2 (l'unica differenza è che viene stampato sulla console seriale e non sullo schermo della telescrivente VGA, perché quello quest'ultimo non esiste sulle macchine UEFI e RaspberryPi).
GNU/make necessario per l'orchestrazione (anche se letteralmente è solo cc easyboot.c -o easyboot
). La toolchain non ha
importanza, va bene qualsiasi compilatore ANSI C, funziona anche su POSIX e WIN32 MINGW. Basta andare nella directory src ed
eseguire make
. È tutto. Nonostante le sue piccole dimensioni, è autonomo e la compilazione ha esattamente zero dipendenze dalla
libreria. Non per niente si chiama Easyboot :-)
Per ricompilare i caricatori, avrai bisogno di flatassembler e LLVM Clang e lld (gcc e GNU ld
non funzionerà, temo). Ma non preoccuparti, li ho aggiunti tutti a src/data.h
come array di byte, quindi non devi compilare
questi a meno che tu non lo voglia davvero (per questo, elimina semplicemente data.h prima di eseguire make).
D'altra parte per compilare i plugin, dovrai avere un cross-compiler, LLVM CLang o GNU gcc (x86_64-elf-gcc, aarch64-elf-gcc). Il
repository include anche questi come file binari. Per effettuare la ricompilazione, basta eliminare i file src/plugins/*.plg
prima di eseguire make.
Easyboot è un software gratuito e open source, concesso in licenza secondo i termini della GPL versione 3 o (a tuo parere) qualsiasi versione successiva. Per i dettagli vedere il file LICENSE.
bzt