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
.textcomo0x7C00. - -e _start: Establece
_startcomo 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
- Asegúrate de tener un Makefile configurado y los archivos necesarios (archivos
.asm). - Ejecuta el comando
makepara generar:bootloader_modulos.elfbootloader_modulos.binbootloader_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
- Conecta un dispositivo USB o un disco adecuado.
- Identifica el dispositivo con
lsblkofdisk -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
- Inserta el medio en el sistema donde probarás el bootloader.
- Configura el BIOS/UEFI para arrancar desde el medio.
- Reinicia el sistema y verifica que el bootloader se cargue correctamente.
Tags
Lenguaje ensamblador
