VirtualBox logo

VirtualBox puerto paralelo.

VirtualBox puerto paralelo.
VirtualBox puerto paralelo.

VirtualBox puerto paralelo.

Introducción.

Con VirtualBox podemos crear máquinas virtual con diferentes sistemas operativos lo cual nos permite experimentar con las nuevas versiones que publiquen los desarrolladores de software. Mejor aún, también nos permite utilizar sistemas operativos antiguos para ciertos programas “obsoletos” debido precisamente a esa evolución de los sistemas operativos; el caso que me ocupa en esta oportunidad es simplemente un software de 16 bits que ya no corre de manera alguna en 64 bits.

De manera predeterminada al crear una máquina virtual se incluyen los puertos seriales (para las impresoras fiscales del SENIAT, por ejemplo) y uno marca casillas de verificación de 1 ó 2 puertos seriales (hay visores de precios fiscal que NO conectan a la impresora fiscal, de allí el uso de dos puertos seriales).

La impresora que intento utilizar en una computadora moderna con procesador de 64 bits era utilizada para imprimir facturas con la Providencia N° 0591 SENIAT y ahora usamos para imprimir órdenes de movilización del depósito de mercancías hacia el área de despacho (la Providencia mencionada arriba quedó derogada con la Providencia Seniat N° 071 y 078 SENIAT donde obligan a utilizar impresoras fiscales con puerto serial para ventas masivas -y permite facturas sin nombre de contribuyente, sin derecho a crédito fiscal y también con RIF y razón fiscal, dos únicos datos exigidos, para tener derecho a crédito fiscal-).

VirtualBox puertos seriales

Reconocimiento a Alexander Eichner.

Importante mencionar que VirtualBox ofrece soporte a los puertos paralelos desde el año 2007 gracias al trabajo del sr. Alexander Eichner así que aquí el rendimos un justo reconocimiento a su labor.

Antecedentes históricos.

El cable que comunica a la impresora es tipo Centronics , muy popular desde 1970 hasta 2000, cuando las impresoras con conexión USB comenzaron a fabricarse de manera masiva. La lucha en cuanto a hardware se refiere para las impresoras es, si se quiere, leve comparado con la lucha que obligó a Richard Stallman a crear el software libre. Por supuesto que hoy en día existen cables adaptadores de USB a puerto paralelo pero ¿para qué gastar más dinero si estamos completos en hardware? Aquí muestro la configuración del BIOS para dicha máquina real (“anfitrón” en la jerga de VirtualBox):

PhoeniX BIOS CMOS
PhoeniX BIOS CMOS

La tarjeta madre tiene su puerto paralelo incorporado y al exterior (ojo hay otras tarjetas madres que sólo tienen el conector interno y uno debe comprar un cable conector hasta el exterior del case) ya lo que debemos es echar mano de nuestro ingenio para alcanzar el objetivo deseado.

Línea de comandos: la orden VBoxManage.

Revisando la documentación que acompaña a VirtualBox, un archivo pdf en inglés bastante largo por cierto, anuncian el uso avanzado con el comando VBoxManage que nos permite modificar nuestras máquinas virtuales que estén “apagadas”:

VboxManage modifyvm option lptmode y lpt
VBoxManage modifyvm (el resaltado es nuestro).

Así que ejecuto las siguientes órdenes (con mis valores correspondientes a la máquina real) que ejecuto sin problema alguno:

VBoxManage modifyvm WinXP --lptmode2 "/dev/parport0"
VBoxManage modifyvm WinXP --lpt1 0x378 7

Línea de comandos: la orden rmmod.

El problema ocurre al tratar de ejecutar dicha máquina virtual, esencialmente sucede que el puerto paralelo está ocupado por algún proceso y ésa es la pega del asunto.

Error puerto paralelo ocupado.
Error puerto paralelo ocupado.

Imaginaba yo que quien ocupa el puerto paralelo es algúna aplicación, nunca pensé que era el propio sistema operativo a nivel de kernel. Cuando yo comienzo a hablar de kernels -de cualquier cosa- me miran de arriba a abajo y me dicen que soy un pobre loquito pero investigando y sin dejar de rendirme consigo que el comando que desocupa el puerto paralelo es el siguiente -que debe ser ejecutado justo antes de lanzar la máquina virtual-:

sudo rmmod lp

El comando sudo nos permite ejecutar tareas de Administrador o raíz -root- ya que necesitamos a rmmod, un simple programa para remover un módulo del kernel de Linux (“Simple program to remove a module from the Linux Kernel”). Dicho comando rmmod ya el sr. Alexander Eichner bien lo especifica en su mensaje de lista de correo a los desarrolladores de VirtualBox . Cualquier avezado lector que quiera ayudarme a establecer de manera permanente, osea, en cada arranque, la remoción del módulo lp agradezco me comente por vía de mi cuenta Twitter, mientras tanto yo utilizo este simple proceso por lotes -script bash- antes de lanzar la máquina virtual:

#!/usr/bin/sh
sudo rmmod lp
VBoxManage startvm "WinXP"
exit

Actualizado el día domingo 03 de julio de 2016.

Leyendo los excelentes tutoriales que anuncian por la cuenta Twitter de Linode.com observo que se puede agregar al usuario al grupo de “sudoers” con la consabida brecha en la seguridad que significa elevarle los privilegios a un usuario. No recomiendo esto, pero bueno, el software libre nos permite hacer todo lo que necesitemos -o queramos-, vaya hasta ustedes el comando necesario (conectado como usuario raíz root y sustituyan usuario_ejemplo con el nombre real del usuario a añadir):

add user usuario_ejemplo adduser example_user sudo

La primera línea adiciona al usuario en sí, la segunda lo agrega al grupo sudo con derechos administrativos.


Fuentes consultadas:

Enlaces en idioma inglés:

<Eso es todo, por ahora>.