Comandos LD , DD y los pasos para Ejecutar en QEMU y Hardware Real

Comando LD

$(LD) -Ttext 0x7C00 -e _start --image-base 0x7C00 -m elf_i386 -o $@ $^

Qué Significa

  • -Ttext 0x7C00: Define la dirección base del segmento .text como 0x7C00.
  • -e _start: Establece _start como el punto de entrada del programa.
  • --image-base 0x7C00: (no válido para ELF) Intenta establecer la dirección base de la imagen, debe eliminarse.
  • -m elf_i386: Especifica el formato ELF para la arquitectura i386 (32 bits).
  • -o $@: Archivo de salida (ej: bootloader_modulos.elf).
  • $^: Archivos de entrada necesarios (los archivos objeto).

Cómo se Interpreta

Este comando enlaza los archivos objetos y crea un ejecutable ELF que comienza en la dirección 0x7C00, con el punto de entrada definido por _start.

Comando DD

dd if=$< of=$@ bs=512 count=1 status=none

Qué Significa

  • if=$<: Archivo de entrada (por ejemplo, bootloader_modulos.bin).
  • of=$@: Archivo de salida (por ejemplo, bootloader_modulos.img).
  • bs=512: Bloques de 512 bytes, que corresponde al tamaño estándar de un sector en disco.
  • count=1: Copia 1 bloque de datos.
  • status=none: Suprime la salida del estado de la operación.

Cómo se Interpreta

Este comando toma un archivo binario (.bin) y genera una imagen de disco (.img) de 512 bytes, adecuada para emuladores como QEMU o para hardware real.

 

Pasos para Ejecutar y Configurar en QEMU y Hardware Real

1. Configuración y Generación del Proyecto

  1. Asegúrate de tener un Makefile configurado y los archivos necesarios (archivos .asm).
  2. Ejecuta el comando make para generar:
    • bootloader_modulos.elf
    • bootloader_modulos.bin
    • bootloader_modulos.img

2. Probar en QEMU

Ejecutar el Binario

qemu-system-i386 -kernel module_Support/bootloader_modulos.bin

Esto carga y ejecuta directamente el archivo binario generado.

Ejecutar la Imagen de Disco

qemu-system-i386 -drive file=module_Support/bootloader_modulos.img,format=raw

Esto emula un disco virtual con la imagen generada.

3. Grabar y Probar en Hardware Real

Preparar un Medio de Almacenamiento

  1. Conecta un dispositivo USB o un disco adecuado.
  2. Identifica el dispositivo con lsblk o fdisk -l. Por ejemplo, /dev/sdX.

Grabar la Imagen en el Medio

sudo dd if=module_Support/bootloader_modulos.img of=/dev/sdX bs=4M status=progress
  • if=: Archivo de entrada (la imagen).
  • of=: Dispositivo de salida (como /dev/sdX).
  • bs=4M: Tamaño de los bloques (4 MiB para transferencias rápidas).
  • status=progress: Muestra el progreso.

Probar en Hardware Real

  1. Inserta el medio en el sistema donde probarás el bootloader.
  2. Configura el BIOS/UEFI para arrancar desde el medio.
  3. Reinicia el sistema y verifica que el bootloader se cargue correctamente.

Destacado

Bootloader Avanzado en Ensamblador

Bootloader Avanzado en Ensamblador Características del Bootloader Se carga en la dirección 0x7C00 (BIOS). ...