Aunque parezca mentira, no pocas empresas u oficinas tienen algún programa DOS hecho a medida que las hacen depender de MS-DOS, y por tanto de MS Windows. Esto puede ser un gran problema a la hora de una posible migración a GNU/Linux. Con esta receta aprenderemos cómo ejecutar estos programas en una Molinux Sancho gracias al emulador dosemu.
Dosemu es un emulador de DOS para GNU/Linux, licenciado bajo la GPL, que permite correr un DOS (MS-DOS, FreeDOS...) y aplicaciones DOS. Utilizaremos además FreeDOS. FreeDOS es un proyecto que aspira a crear un sistema operativo libre que sea totalmente compatible con las aplicaciones y los controladores de MS-DOS.
Ni dosemu ni FreeDOS están en los repositorios de Molinux Sancho, así que añadire unos repositorios de Ubuntu Breezy (no olvides que Sancho es en realidad una Breezy). Para ello debes editar el fichero /etc/apt/sources.list y añadir la siguiente línea:
deb http://archive.ubuntu.com/ubuntu breezy main multiverse
y ejecutar posteriormente aptitude update como de costumbre. A continuación instala los paquetes:
sudo aptitude install dosemu dosemu-freedos xfonts-dosemu
El paquete es casi perfecto, sólo necesita un par de ajustes para tener dosemu completamente operativo y funcional.
Si al ejecutar Dosemu te da una violación de segmento con el siguiente error:
ERROR: cpu exception in dosemu code outside of VM86()! trapno: 0x0e errorcode: 0x00000004 cr2: 0x468a5b2d eip: 0x468a5b2d esp: 0xbf8fffc5 eflags: 0x00210286 cs: 0x0073 ds: 0x007b es: 0x007b ss: 0x007b Page fault: read instruction to linear address: 0x468a5b2d CPU was in user mode Exception was caused by non-available page /usr/bin/dosemu: line 218: 16058 Violación de segmento $SUDO $BINARY $XFLAG "$@"
es un problema con versiones del kernel Linux posteriores a la 2.6.12. Es debido a cambios en la ¿generación de direcciones virtuales? (virtual address randomization) del kernel. La solución es ejecutar
sudo echo 0 > /proc/sys/kernel/randomize_va_space
la primera vez que ejecutes dosemu. Lo ideal es hacer un script y ponerlo en el arranque de la máquina.
Si miras el contenido del paquete xfonts-dosemu:
[00:11:47][david@minipimer]:~$ dpkg -c /var/cache/apt/archives/xfonts-dosemu_1.2.1-3_all.deb drwxr-xr-x root/root 0 2004-10-06 16:23:25 ./ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./etc/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./etc/X11/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./etc/X11/fonts/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./etc/X11/fonts/misc/ -rw-r--r-- root/root 425 2003-06-23 02:02:07 ./etc/X11/fonts/misc/xfonts-dosemu.alias drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/X11R6/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/X11R6/lib/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/misc/ -rw-r--r-- root/root 4626 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/misc/vga.pcf.gz -rw-r--r-- root/root 5648 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/misc/dosemu-vga11x19.pcf.gz -rw-r--r-- root/root 4783 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/misc/vga-cp866.pcf.gz -rw-r--r-- root/root 5255 2004-10-06 16:23:24 ./usr/X11R6/lib/X11/fonts/misc/vga10x20-cp866.pcf.gz drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/share/ drwxr-xr-x root/root 0 2004-10-06 16:23:24 ./usr/share/doc/ drwxr-xr-x root/root 0 2004-10-06 16:23:25 ./usr/share/doc/xfonts-dosemu/ -rw-r--r-- root/root 3740 2004-10-06 16:22:27 ./usr/share/doc/xfonts-dosemu/copyright -rw-r--r-- root/root 93715 2004-03-06 15:03:08 ./usr/share/doc/xfonts-dosemu/changelog.gz -rw-r--r-- root/root 6490 2004-10-06 16:22:27 ./usr/share/doc/xfonts-dosemu/changelog.Debian.gz
observarás que el fichero de la fuente vga lo guarda en el directorio /usr/X11R6/lib/X11/fonts/misc/. Por defecto Molinux no busca fuentes ahí:
[00:12:46][david@minipimer]:~$ grep misc /etc/X11/xorg.conf
FontPath "/usr/share/X11/fonts/misc"
La solución es por tanto sencilla; debes añadir la línea
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
justo después de la línea que nos salió anteriormente. Reinia el servidor X posteriormente.
Si ejecutamos dosemu desde una emulación del terminal tendremos bastantes menos problemas que si lo hiciésemos desde un terminal normal y corriente. Además, dependiendo del programa, será posible que necesitemos derechos de superusuario para acceder a determinados puertos y tal.
Para programas DOS normales, la mejor solución sin duda será usar xdosemu:
$ xdosemu programa.exe
porque nos ahorraremos un montón de problemas tanto de carácteres como de tamaño del terminal y demás. xdosemu de hecho nos abre una ventana con el programa DOS al igual que si lo hubiésemos ejecutado en MS Windows.
Comentarios
Mi problema es el touchpad
Hola!!
No te preocupes por la edición múltiple. Es la ventaja de usar Drupal.
De cara a tu artículo, tengo un problemilla: mi ratón no quiere funcionar con dosemu. No hay manera, y siempre me toca reiniciar las X. ¿Alguien sabe cómo hacer funcionar el touchpad con dosemu?
Miguel Ángel García
http://magmax.org
Creo que hay algún problema
Creo que hay algún problema con la previsualización de las entradas en las bitácoras porque no me salía el artículo entero excepto el título. Ahí la razón de editar el artículo n veces, perdón por el porculo al administrador porque va a ver las n ediciones en los logs de Drupal O:-)
Por ahí he puesto una traducción entre interrogaciones, no sé si está bien así. ¿Cómo se debería traducir?
¡Bytes!