Pergunta

Eu estou escrevendo um bootstrap e do kernel para mim e tanto bootstrap e kernel será queimar em um CD-R e funcionará como um CD-live. Não é um linux CD-Live ou qualquer outra coisa, é totalmente minha própria bootloader e kernel. Eu não quero usar outros booloaders (ou seja GRUB) então por favor não me sugerir a usá-los.

Aqui está a minha pergunta: No meu código ASM bootloader, eu quero carregar o meu kernel e entrada do kernel na RAM a partir do CD-ROM (não do disco rígido ou disquete), e vamos supor que sabemos onde o kernel localizados exatamente no CD-ROM (número do setor). Tanto quanto eu sei que tenho de uso int 0x13, AH = 02h que irá ler setores de movimentação para a RAM. Para utilizar este serviço de interrupção, tenho de casal conjunto de registros que eu vou listar abaixo: parâmetros: AH 02h Setores AL Para ler Conde CX Faixa + Setor / ver observação DH Cabeça DL unidade ES: Buffer BX Endereço Pointer

O meu problema é sobre DL e DH.In fim de ponto para 1 disco rígido para ler, podemos defini-lo para 80h ou, por disquete podemos defini-lo às 00h. Mas eu quero ler a partir do CD-ROM e eu não sei o que valoriza eu tenho que usar para DH e DL.

Para ler a partir do CD-ROM alguns setores em que a RAM é uma interrupção de direita (int 0x13)? Se sim, qual o valor que eu deveria ter que colocar para DH e DL.

Saudações, Pooria.

Foi útil?

Solução

Para o BIOS para carregar o setor de inicialização a partir do CD, você vai precisar para fazer o CD inicializável usando o " El Torito "padrão .

Uma vez que você usar isso, você tem duas opções
uma. Emulação - os emula BIOS ou um disquete ou disco rígido, e você pode ler o seu kernel através dos INT13 chamadas com qualquer um dos dispositivos 00 ou dispositivo 80.
b. O dispositivo não imitar, e você pode ler diretamente a partir do CD utilizando a função INT13 ExtendedRead.

Para ver como isso é feito, olhar para o carregador do Linux "ISOLINUX" - ISOLINUX.ASM

Para prestar um serviço mais específico ponto de partida para a sua pergunta, El Torito especificação, secção 5.3:

Once the system jumps to segment:0, the program can retrieve its boot
information by issuing INT 13, Function 4B, AL=01.  After the boot process
has been initiated the INT 13 Extensions (functions 41-48) will access the
CD using 800 byte sectors and the LBA address provided to INT 13 is an
absolute sector number. This gives any program running in no emulation mode
the ability to locate the boot catalog, and any other information on the
CD, without providing a device driver.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top