• Jueves 13 de Mayo de 2021, 08:10

Autor Tema:  creacion disco booteable con bootloader y kernel + rutina  (Leído 2131 veces)

Anthares

  • Nuevo Miembro
  • *
  • Mensajes: 14
  • Nacionalidad: uy
    • Ver Perfil
creacion disco booteable con bootloader y kernel + rutina
« en: Sábado 6 de Noviembre de 2010, 23:24 »
0
Hola, estoy teniendo problemas con el booteo de un disket que yo hice que contiene un bootloader + kernel + rutina de interrupcion

Tengo los siguientes archivos

bootloader.bin  que ocupa 3 secotres
kernel.bin que ocupa 14 sectores
rutinaX.bin que ocupa 15 sectores

Entonces cuando voy a crear un disket booteable hago lo siguiente:

dd if=/dev/zero of=boot.img bs=512 count=15
dd if=bootloader.bin of=boot.img bs=512 count=3
dd if=kernel.bin of=boot.img bs=512 count=14 seek=3
dd if=rutinaX.bin of=boot.img bs=512 count=1 seek=17 conv=sync,notrunc

Pero no me bootea, el disket.

Yo se que con seek indico los sectores que tengo saltar.
Con count indico la cantidad de sectores que usa.

En fin se agradece cualquier ayuda por que llevo pila con esto aunque sea tonto

Saludos :hola:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: creacion disco booteable con bootloader y kernel + rutina
« Respuesta #1 en: Domingo 7 de Noviembre de 2010, 01:31 »
0
Los últimos 2 bytes (palabra) del sector de arranque deben ser 0xAA55. Ya que no indicas sobre qué arquitectura estás corriendo, ten en cuenta la ordenación de bytes para la palabra (0x55 y luego 0xAA para little-endian, al revés para big-endian).

Saludos

Anthares

  • Nuevo Miembro
  • *
  • Mensajes: 14
  • Nacionalidad: uy
    • Ver Perfil
Re: creacion disco booteable con bootloader y kernel + rutina
« Respuesta #2 en: Domingo 7 de Noviembre de 2010, 01:51 »
0
Muchas pero muchas gracias! si creo que fue eso jaja me lo habia comido :P

Gracias por responder tan rapido  :lol: , un beso  :hola:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: creacion disco booteable con bootloader y kernel + rutina
« Respuesta #3 en: Domingo 7 de Noviembre de 2010, 10:01 »
0
De nada y suerte con ello  ^_^

Anthares

  • Nuevo Miembro
  • *
  • Mensajes: 14
  • Nacionalidad: uy
    • Ver Perfil
Re: creacion disco booteable con bootloader y kernel + rutina
« Respuesta #4 en: Domingo 7 de Noviembre de 2010, 15:45 »
0
ja van a pensar que soy una ignorante de miercoles!!!  :ouch:  pero hace pila que estoy luchando con esto  :hitcomp:  y cada vez que hago un cambio me deja de andar.

Y se que es por que no entiendo mucho!

En fin, resumo mi problema.......

Tengo una tarea donde tengo que crear:

- un bootloader.
- un microkernel.
- unas rutinas de atencion a interrupciones
- un disket booteable que contenga todo lo anterior.

1)    Cuando escribo el  archivo bootloader.asm si bien se como armar las estructuras de las GDT, LDT , IDT etc etc etc  no tengo ni la mas palidea idea en que partes del archivo tengo que hacer estas cosas:

times 510-($-$$) db 0    
times 1024-($-$$) db 0
times 1536-($-$$) db 0

Es decir yo se que cada sector del disket tiene 512 y que cuando se llena el primer sector hay que poner times 510-($-$$) db 0     seguido de         dw 0AA55h                

Pero como se bien en que altura del archivo tengo que ir poniendo estos llenados???

2) Al final para crear el disket booteable me quedo todo asi:

bootloader.bin  1538 o sea 4 sectores
kernel.bin 69763  o sea 14 sectores
rutinaX.bin      1 sector


Mi otra duda es como la cantidad de sectores es 19 >18 ..... como tengo que hacer con int 3h para leer con el tema de los cilindros y los head!!

Por que yo hago esto:

EI: juntando mensajes.

en el script hago esto:

dd if=/dev/zero of=boot.img bs=512 count=19
dd if=bootloader.bin of=boot.img bs=512 count=4
dd if=kernel.bin of=boot.img bs=512 count=14 seek=4
dd if=keyboard.bin of=boot.img bs=512 count=1 seek=18 conv=sync,notrunc

Saludos
« última modificación: Domingo 7 de Noviembre de 2010, 15:57 por Anthares »