Mover código de montagem compilado para o setor de inicialização de um dispositivo USB

3

Eu escrevi um sistema operacional simples e estou tentando testá-lo. Eu tenho o VirtualBox instalado e uma unidade flash de oito GB, então pensei em usá-los. Eu não tenho certeza como fazer o drive USB inicializável, no entanto. Eu tenho seguido muitos tutoriais sobre como fazer uma imagem iso inicializável, mas nem o VirtualBox nem o Disk Utility podem lê-lo. Alguém pode me dar um método comprovado para configurar o drive USB para ser inicializável?

O que eu tenho

  • Um pen drive de oito GB

  • Uma VM do VirtualBox

  • Um .bin criado a partir do código de montagem compilado com o nasm.

O que eu preciso

  • Informações simples e claras sobre como preencher o setor de inicialização de um dispositivo USB

  • Um empurrãozinho na direção certa se precisar de algo além do .bin

Código existente

;*********************************************
;   Boot1.asm
;       - A Simple Bootloader
;
;   Operating Systems Development Tutorial
;*********************************************

org     0x7c00              ; We are loaded by BIOS at 0x7C00

bits    16                  ; We are still in 16 bit Real Mode

Start:

    cli                 ; Clear all Interrupts
    hlt                 ; halt the system

times 510 - ($-$$) db 0             ; We have to be 512 bytes. Clear the rest of the bytes with 0

dw 0xAA55                   ; Boot Signature

Tutoriais que eu segui

link link link link link link

    
por Justin 30.05.2013 / 01:11

2 respostas

2

A maneira típica é usar dd . Aqui estão as instruções do o gerenciador de inicialização syslinux para instalar o mbr.bin to /dev/sda .

dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda

Aqui, /dev/sda é o dispositivo de destino. ( of é "arquivo de saída".)

Você substituiria isso pelo nome do dispositivo da sua unidade USB.

    
por 30.05.2013 / 17:56
2

Ok, você está com um SO realmente mínimo. Agora você precisa de algum tipo de máquina para inicializá-lo.

Não importa qual máquina você usa (seu laptop, um VirtualBox, etc.) quando ele é iniciado, ele precisa de algum código contendo ROM para carregar e iniciar o sistema operacional. Isso geralmente é algo como um BIOS. Isso geralmente irá buscar o setor de inicialização da mídia de inicialização configurada e executar o que encontrar lá.

Por isso, basta colocar seu sistema operacional minimalista no setor de inicialização e está tudo bem. Se o seu sistema operacional não for suficientemente minimalista, o setor de inicialização precisará do código para carregar mais do seu sistema operacional.

    
por 30.05.2013 / 02:07