Exemplo muito básico de inicialização com Grub e solicitando um modo gráfico de 32 bits com multiboot 1024 x 768 x 32
O objetivo disso é uma amostra básica do uso de uma bota Grub e solicitar um modo gráfico com MultiBoot e, em seguida, fazendo algumas funções de desenho muito básicas.
Incluído está uma fonte gratuita de lealdade, com exemplo de uso para que você possa escrever coisas para exibir no seu sistema operacional.
A idéia é que seja uma referência para pessoas que criaram seu próprio sistema operacional e gostariam de adicionar gráficos e desejam usar o MultiBoot para descobrir para eles, em vez de codificar todas as etapas necessárias.
Testado e trabalhando com o VirtualBox 7.0 e o Qemu no Windows 11 usando o WSL 2.
O MultiBoot funciona definindo valores específicos em compensações específicas no arquivo executável de inicialização, por isso estamos solicitando o modo gráfico com o seguinte:
.set WIDTH , 1024 / * requested width * /
.set HEIGHT , 768 / * requested height * /
.set DEPTH , 32 / * requested depth * /O GRUB lerá esses valores e definirá o modo gráfico antes de entregar a execução em nosso aplicativo; portanto, quando nosso aplicativo iniciar, se o modo solicitado for válido, ele já estará nesse modo.
Grub também passará pelo cabeçalho multiboot que contém o que o modo gráfico está definido e outros valores de interesse.
O Framebuffer_addr é onde você escreverá suas operações gráficas.
Coisas a serem observadas, solicite um modo gráfico válido, no menu Grub [https://askubuntu.com/questions/16042/how-to-get-to-the-grub-menu-at-boot-time] CLI O videoinfo listará os modos disponíveis e válidos.
Eu recomendaria trabalhar com gráficos de 32 bits, é mais simples e eu teria pensado mais rápido ou rápido que outras opções. Antes de ir pensar, mas os gráficos de 8 bits serão mais rápidos.
A fonte básica 8x8 foi criada em Templeos usando o exemplo fonado.
Precisa ser construído no Linux (tentei WLS, mas não cria a imagem ISO) o script Make criará um ISO,
g++
binutils
libc6-dev-i386
VirtualBox
grub-legacy
xorriso
Crie uma nova máquina virtual no VirtualBox Mount the ISO Boot
Não possui drivers para nada, nenhum gerenciamento de memória, nenhum teclado ou mouse IO, nem disco IO, nada.
sudo apt install gcc g ++ make grub-pc-bin xorriso
Depois que o VirtualBox está configurado, há um perfil que eu criei em uma versão anterior do VirtualBox e apenas testado em 7.0 nos lançamentos
No prompt de comando (vBoxManage.exe será instalado em um local diferente para você) /mnt/d/virtualbox/vboxmanage.exe startvm multiboot