Publi

Creando una unidad USB de arranque DOS (FREEDOS) con software libre

dos
¿Echas de menos tener un sistema MS-DOS? Si eres de los que ya llevas tiempo en el mundo de la informática, esta pantalla de arriba te resultará familiar. Aquel modo texto a 80×25, clásica que podíamos ver en los ordenadores antiguos. Y es que, a veces, puede ser muy útil disponer de un sistema de estos, ya sea para una máquina virtual, o para nuestro ordenador, donde podemos ejecutar las instrucciones que nos vengan en gana sin preocuparnos de que al sistema operativo le gusten o no, para investigar, para revivir viejos tiempos con un antiguo juego, o analizar un programa que sólo funciona en ese sistema, que aún los hay, y debemos portar la información a programas más nuevos. Casi siempre por necesidad, porque donde se ponga «ls» que se quite «dir» 🙂

Esto lo podemos hacer de dos formas distintas, con makebootfat, nativo para GNU/Linux, o emulando FreeDOS y utilizando sus herramientas (elegir sólo un método):

Método nativo para GNU/Linux

Lo primero que tenemos que hacer es instalar makebootfat y syslinux. En una distribución tipo Debian/Ubuntu/Linux Mint podemos hacer lo siguiente:

$ sudo apt-get install makebootfat syslinux

Una vez tenemos instalados los paquetes, después de asegurarnos de que el pendrive (unidad USB), no tiene nada importante, debemos formatearlo. Usaremos el sistema de archivos FAT16, por lo que el tamaño máximo de la unidad será de 2Gb. Si la unidad es pequeña (menos de 2Gb, como hemos visto antes), habrá que cambiar el tipo de partición solamente), si la unidad es más grande (debemos eliminar la partición existente, ya que supongo que tu pendrive es sólo una unidad, y luego crear una partición pequeña).

Debemos sustituir la sdX por el dispositivo de nuestra unidad USB. Podemos verlo haciendo:

$ dmesg | tail

nada más enchufar la unidad. Luego hacemos:

$ sudo fdisk /dev/sdX

Lo primero será eliminar la partición (sólo si tenemos un pendrive de más de 2Gb), lo hacemos pulsando d [INTRO]

Luego creamos una nueva partición (n [INTRO]):

  • Lo primero que nos pide es si será (p) principal o (e) extendida, elegimos princpal
  • Lo siguiente es el número de la partición, elegimos el 1
  • Luego dónde empieza (damos a enter, ponemos el valor por defecto)
  • Lo siguiente el tamaño. Escribiremos +100M para darle 100Mb a la unidad, podemos darle hasta 2Gb

Lo siguiente es elegir el tipo de partición, pulsamos la letra t [INTRO] y luego elegimos el tipo 6 (FAT16), podemos ver con L un listado de tipos de partición.

Tras todo esto, escribimos los cambios con w [INTRO]

Ya tenemos una unidad FAT16 en nuestro pendrive, ahora la formateamos:

Tenemos que formatear sdX1 (X depende del dispositivo donde nuestro sistema lo detecte)

$ sudo mkfs.vfat /dev/sdX1

Ahora debemos bajar el siguiente archivo:
kernels.zip, lo grabamos en /home/usuario/trabajo/ .
Ahora vamos a esta página, y descargamos la imagen de un disquette de arranque de FreeDOS, por ejemplo el disquette de 2.88Mb, que es el que trae algunos comandos. Lo copiamos también en /home/usuario/trabajo/
Y desde ahí:

$ unzip kernels.zip # Descomprimimos el archivo
$ mkdir pendrive # Creamos una nueva carpeta
$ cp source/ukernel/boot/fat*.bin . # Copiamos los kernels en el directorio de trabajo
$ cp /usr/lib/syslinux/mbr.bin . # Copiamos la imagen del mbr en el directorio de trabajo
$ gunzip FDSTD.288.gz # Descomprimimos la imagen de disco
$ sudo mkdir /mnt/floppy # Creamos un punto de montaje para el disquette
$ sudo mount -t vfat -o loop FDSTD.288 /mnt/floppy # Montamos el disquette
$ cp -r /mnt/floppy/* pendrive/ # Copiamos todos los archivos del disquette al directorio de nuestro pendrive
$ sudo umount /mnt/floppy # Desmontamos el disquette

Ya lo tenemos todo listo, sólo falta crear el disco de arranque, para ello ejecutamos:

$ sudo makebootfat -o /dev/sdX -E 255 -1 fat12.bin -2 fat16.bin -3 fat32lba.bin -m mbr.bin pendrive

Esto escribirá en el pendrive /dev/sdX (sin el 1):

  • -E 255 detecta la unidad BIOS, FAT12 y FAT16 requieren poner el valor correcto para poder arrancar, 255 autodetecta
  • -1, -2, -3 son los kernels de fat12, fat16 y fat32
  • -m, define la imagen del mbr
  • pendrive, copia todos estos archivos

Ya podemos retirar el pendrive para usarlo y arrancar con él.

Emulando FreeDOS

Lo primero es decargar un disquette de arranque de Freedos desde aquí, y descargamos la imagen de un disquette de arranque de FreeDOS, por ejemplo el disquette de 2.88Mb, que trae más cosas. (Ver en la explicación de arriba cómo descomprimir la imagen).

Luego instalaremos qemu. Desde Debian/Ubuntu/Mint:

$ sudo apt-get install qemu

Ahora arrancaremos qemu para emular FreeDOS utilizando como disco duro el pendrive (si está vacío mejor):

$ qemu -hda /dev/sdX -drive file=FDSTD.288,if=floppy

Esto arrancará en una ventana FreeDOS desde la imagen de disquette, lo que tenemos que hacer es utilizar fdisk (como el de MS-DOS para eliminar la partición existente y crear otra nueva), format para formatear el pendrive, en este caso podemos hacer FORMAT C: sin miedo, ya que el disco duro es el pendrive, y luego desde A: hacer «sys C:» para copiar el sistema base al disco duro. Es recomendable copiar luego con copy todos los archivos del disquette.

Una vez hecho esto, podemos cerrar qemu, sacar el pendrive y utilizarlo.

Actualización Nov. 2015: Cambios menores para una URL que no funcionaba.

También podría interesarte....

There are 3 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: Poesía binaria » Problema en Acer Aspire One AOA150: No carga la batería /

  3. nick /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    ¡Ya terminé con las respuestas de 8 letras en 4 Fotos 1 Palabra! Las letras adicionales trajeron una nueva serie de desafíos, pero la satisfacción de resolver cada rompecabezas hizo que todo valiera la pena. Comparte tus palabras favoritas de este nivel.

Leave a Reply