Actualizado el miércoles 13 de mayo de 2020.
En este artículo hemos centralizado los diversos temas sobre Ubuntu:
Resolviendo problemas inherentes a VirtualBox
Tabla de contenido:
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). Al final de esta entrada actualizamos con un vídeo sobre cómo funcionan los puertos seriales.
#CulturaTributaria #SENIAT pic.twitter.com/K0tpalcUlS
— SENIAT (@SENIAT_Oficial) 3 de julio de 2016
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-).
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):
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»:
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.
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 (ver nuestro artículo sobre el superusuario en Ubuntu), 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.
Actualizado el día viernes 12 de enero de 2018.
Siempre es bueno conocer cómo funcionan las cosas y en este vídeo nos explican de manera didáctica acerca de los puertos seriales o UART:
Véase también
Tradujimos el excelente artículo publicado en OpenSource.com acerca de las comunicaciones seriales en el GNU/Linux moderno, acá está nuestra traducción al castellano:
Enlace
Fuentes consultadas
En idioma castellano
- «Cómo funciona el Puerto Serie y la UART» por Enrique Gómez.
- «».
- «».
En idioma francés
- «».
- «».
- «».
En idioma inglés
- «[vbox-dev] Basic Parallel Port support for VirtualBox» by Alexander Eichner at Virtualbox.org
- «Securing Your Server» by Phil Zona at Linode.com
- «Serial communication on modern Linux».
- «».
<Eso es todo, por ahora>.