FAT32-Bootsector
Um bootsector simples e muito compacto, que permite carregar seu carregador de inicialização ou kernel de um arquivo.
Construir usando script anexado.
AVISO: Não leia isso, leia o código -fonte. É comentado, então todas as informações estão lá
O que esse bootsector realmente faz?
Aqui está, passo a passo:
- Verifique se o BIOS suporta operação de disco estendido
- Procura a primeira partição ativa FAT32
- Procura seu arquivo nessa partição (no diretório raiz)
- Carrega na memória
- Executa
Estado de memória após meu bootsector
Seu código:
Seu código é carregado em 0x1000: 0x0000 (segmento: deslocamento) ou 0x10000 (linear).
Registros
A maioria dos registros não é "zero" e o lixo é atribuído a eles
Somente aqueles têm valores válidos:
- CS: IP - 0x1000: 0x0000 (atribuído ao arquivo carregado)
- DS - 0x1000 (também atribuído ao arquivo carregado)
- SS: SP - 0x0000: 0xffff (pilha no primeiro segmento)
- DL - Número da unidade (para interrupções de BIOS)
Dados úteis deixados na memória
Depois de pular para o arquivo carregado, ainda há alguns dados úteis na memória:
(Todas as compensações são especificadas no código -fonte)
- 0x7c00 - disco atual (número do dispositivo), endereço de gordura, endereço do setor de dados do primeiro dados e informações semelhantes.
- 0x7E00 - setor de bpb dessa partição
Limitações
- Está tudo no modo real, então o tamanho máximo do arquivo não deve ser maior do que algumas centenas de kilobytes
- O arquivo deve estar no diretório raiz da partição selecionada
- Nome do arquivo - Bootsector Pesquisa por arquivo com 8.3 nome do arquivo
Métodos de instalação
Para instalar o uso:
- Nos sistemas compatíveis com Ubuntu, use install.sh script
- No Windows, use Fat32-bootsector.exe
Observe a versão do Windows não usa letras para partições, mas partições phisycal (não lógicas), então: pode ser mais difícil combinar com partição, mas, por outro lado, suporta unidades USB de partição múltipla
Erros?
Quando o erro ocorre o BootSector, desenha o código de erro na tela.
Aqui estão códigos e explicações de erros:
0 - Funções estendidas do BIOS não estão disponíveis
1 - Partição inicializável não encontrada
2 - Partição inicializável não é FAT32
3 - arquivo não encontrado
4 - Não é possível carregar setores (erro de interrupção do BIOS)