Exemple très basique de démarrage avec Grub et demandant un mode graphique 32 bits avec Multiboot 1024 x 768 x 32
Le but de ceci est un échantillon de base de l'utilisation d'un démarrage de Grub et de la demande d'un mode graphique avec Multiboot, puis de faire des fonctions de dessin très basiques.
Inclus est une police sans fidélité, avec une utilisation d'exemple afin que vous puissiez écrire des trucs pour dépister dans votre système d'exploitation.
L'idée est que ce sera une référence pour les personnes qui ont créé leur propre système d'exploitation et qui souhaiteraient y ajouter des graphiques, et qui veulent utiliser Multiboot pour le comprendre au lieu de coder toutes les étapes requises.
Testé et travaillant avec VirtualBox 7.0 et Qemu dans Windows 11 en utilisant WSL 2.
Le multiboot fonctionne en définissant des valeurs spécifiques à des décalages spécifiques dans le fichier exécutable de démarrage, nous demandons donc le mode graphique avec les suivants:
.set WIDTH , 1024 / * requested width * /
.set HEIGHT , 768 / * requested height * /
.set DEPTH , 32 / * requested depth * /Grub lira ces valeurs et définira le mode graphique avant de remettre l'exécution à notre application, donc lorsque notre application démarre, si le mode demandé est valide, il sera déjà dans ce mode.
Grub passera également par l'en-tête multiboot contenant ce que le mode graphique est défini et d'autres valeurs d'intérêt.
Le framebuffer_addr est l'endroit où vous rédigerez vos opérations graphiques.
Les choses à noter, demandez un mode graphique valide, dans le menu Grub [https://askubuntu.com/questions/16042/how-to-get-to-the-grub-menu-at-boot-time] CLI La videoinfo répertorie les modes disponibles et valides.
Je recommanderais de travailler avec des graphiques 32 bits, c'est plus simple et j'aurais pensé aussi rapide ou plus rapide que d'autres options. Avant d'aller penser, mais les graphiques 8 bits le mesurent plus rapidement.
La police de base 8x8 a été créée dans les templeos en utilisant l'exemple fondu.
Doit être construit sous Linux (j'ai essayé WLS mais il ne crée pas l'image ISO) Le script de marque créera un ISO,
g++
binutils
libc6-dev-i386
VirtualBox
grub-legacy
xorriso
Créez une nouvelle machine virtuelle dans VirtualBox Moutez le démarrage ISO
Il n'a aucun pilote pour quoi que ce soit, pas de gestion de la mémoire, pas de clavier ou de souris IO, pas de disque IO, rien.
sudo apt install gcc g ++ faire grub-pc-bin xorriso
Une fois VirtualBox configuré, il y a un profil que j'ai créé sous une version antérieure de VirtualBox et juste retesté en 7.0 dans les versions
À partir de l'invite de commande (vboxmanage.exe sera installé à un emplacement différent pour vous) /mnt/d/virtualbox/vboxmanage.exe startvm multiboot