← Teoría

Práctica 30: Impresoras en máquinas virtuales (Windows y Linux)

Módulo: MF0953_2 - Reparación y ampliación de equipos
Unidad Formativa: UF0862 - Instalación y configuración de periféricos
Sesiones: S4 (impresoras: tipos e instalación) + S5 (gestión de cola y diagnóstico)
Duración estimada: 4-5 horas (1 sesión)
Modalidad: trabajo individual
Herramientas: VirtualBox, VM Windows 10/11, VM Ubuntu, conexión a internet en la VM Windows para descargar drivers
De qué va esta práctica: en el aula no tenemos una impresora física por puesto, así que vamos a montar todo el flujo de una impresora sin impresora. Lo bueno es que el sistema operativo no distingue: una impresora virtual usa el mismo subsistema de impresión, los mismos drivers, la misma cola y los mismos protocolos de red que una real. Vas a instalar impresoras virtuales en Windows, montar un servidor CUPS en Linux, compartirlo por red entre las dos VM, gestionar la cola y diagnosticar fallos típicos.

Objetivos de la práctica

  • Identificar los tipos de impresora (inyección, láser, térmica, matricial, 3D) y sus consumibles.
  • Distinguir los lenguajes de impresión (PCL, PostScript, raw) y los protocolos de red (IPP, LPD, RAW 9100).
  • Instalar una impresora local virtual en Windows (Microsoft Print to PDF) y otra desde el driver del fabricante sin tener el equipo.
  • Montar un servidor CUPS en una VM Linux y añadir una impresora con cups-pdf.
  • Compartir la impresora del servidor CUPS por red y conectarse a ella desde la VM Windows usando IPP.
  • Gestionar la cola de impresión en Windows (GUI) y en Linux (lpq, lp, cancel).
  • Diagnosticar problemas frecuentes: trabajos atascados en cola, driver incorrecto, impresora "fuera de línea", spooler parado.

Parte 0 - Conceptos previos (40 min)

0.1 - Tipos de impresora

TipoCómo imprimeConsumiblesPara qué se usa
Inyección de tintaLanza gotitas de tinta líquida sobre el papelCartuchos de tinta (CMYK) y a veces cabezalHogar, fotos, bajo volumen
LáserFunde tóner (polvo) sobre el papel mediante calorTóner, tambor (drum), fusorOficina, alto volumen, blanco y negro o color
TérmicaCalienta zonas de un papel especial que se oscureceSolo papel térmico (no hay tinta)Tickets, etiquetas, balanzas, TPV
MatricialUna matriz de agujas golpea una cinta entintada contra el papelCinta de tela entintadaDocumentos con copia (autocopiativos), industrial, talleres
3DDeposita material capa a capa (FDM) o solidifica resina con luz (SLA)Filamento (PLA, PETG, ABS) o resinaPrototipado, piezas a medida
Regla rápida: si imprimes pocas páginas y a veces fotos, inyección. Si imprimes muchas páginas de texto y quieres bajo coste por página, láser. Si haces tickets de caja, térmica.

0.2 - Lenguajes de impresión y drivers

Cuando pulsas Imprimir, el sistema operativo no envía un PDF tal cual: el driver traduce el documento a un lenguaje que la impresora entiende. Los más habituales son:

  • PCL (Printer Command Language, HP): muy extendido en láser de oficina. Eficiente.
  • PostScript (PS): lenguaje de descripción de página. Imprescindible en artes gráficas.
  • PDF directo: muchas impresoras modernas aceptan PDF como entrada nativa.
  • RAW: el sistema envía datos sin procesar a la impresora (lo decide el driver).
  • GDI / Host-based: impresoras "tontas" que dependen totalmente del PC para componer la página. Más baratas, pero peor compatibilidad con Linux.

0.3 - Protocolos de impresión en red

ProtocoloPuertoCuándo se usa
IPP (Internet Printing Protocol)631 / TCPEstándar moderno. Es el que usa CUPS y AirPrint. Soporta cifrado (IPPS).
LPD/LPR515 / TCPProtocolo clásico de Unix. Aún se usa por compatibilidad.
RAW socket / JetDirect9100 / TCPHP. Conexión directa al puerto 9100 sin protocolo encima. Muy común en redes pequeñas.
SMB (compartido Windows)445 / TCPCuando un Windows comparte la impresora.

0.4 - ¿Por qué hacemos esto en VMs y sin impresora física?

El sistema operativo no distingue entre una impresora real y una virtual: usa el mismo spooler (servicio que gestiona la cola), el mismo driver y los mismos protocolos. Por eso:

  • Podemos instalar drivers reales del fabricante (HP, Brother, Canon...) sin tener la impresora delante.
  • Podemos imprimir, gestionar la cola, pausar y cancelar trabajos exactamente igual.
  • Podemos compartir por red entre VMs y simular un escenario de oficina con servidor de impresión.
  • Lo único que no podemos hacer es tocar el hardware (cambiar tóner, retirar atascos). Eso lo cubrimos con preguntas guiadas al final.

Parte 1 - Identificación de impresoras de catálogo (20 min)

Busca en el catálogo online de un fabricante (HP, Brother, Canon, Epson) tres modelos diferentes: una de inyección, una láser y una multifunción láser. Rellena la tabla con datos reales del fabricante.

AspectoModelo 1 (inyección)Modelo 2 (láser)Modelo 3 (multifunción láser)
Marca y modelo exacto
Color o monocromo
Velocidad (ppm)
Conexiones (USB / Ethernet / Wi-Fi)
Lenguaje (PCL / PostScript / GDI)
Consumibles (referencia)
Coste por página estimado

¿Cuál de los tres elegirías para una oficina pequeña que imprime 200 páginas de texto al día y por qué?

Parte 2 - Impresora virtual local en Windows (40 min)

Arranca tu VM Windows 10/11. Vamos a usar y a configurar la impresora virtual que ya trae Windows: Microsoft Print to PDF. Es una impresora real desde el punto de vista del sistema (driver, cola, propiedades), pero en lugar de papel produce un PDF.

2.1 - Comprobar que la impresora virtual existe

  1. Ve a Configuración → Bluetooth y dispositivos → Impresoras y escáneres.
  2. Comprueba que aparece Microsoft Print to PDF. Si no está, ve a Características opcionales y actívala (o desde Activar o desactivar características de Windows → Impresión en PDF de Microsoft).
  3. Haz clic en ella y pulsa Propiedades de la impresora. Mira las pestañas General, Compartir, Puertos, Opciones avanzadas.
¿Qué puerto usa Microsoft Print to PDF?
¿Qué driver aparece en Opciones avanzadas?
¿Está compartida por defecto?

2.2 - Imprimir contra la impresora virtual

  1. Abre el Bloc de notas, escribe un texto cualquiera y pulsa Ctrl+P.
  2. Selecciona Microsoft Print to PDF y pulsa Imprimir.
  3. Te pedirá la ruta y el nombre del archivo de salida. Guárdalo en el escritorio como prueba1.pdf.
  4. Ábrelo y comprueba el resultado.
Truco: esto es exactamente lo que hace una impresora real, sólo que el destino final es un archivo en lugar de papel. Toda la cadena (aplicación → spooler → driver → puerto) está intacta.

2.3 - Añadir una segunda impresora "manual" con driver del fabricante

Vamos a añadir una segunda impresora simulando una HP LaserJet, sin tener el equipo. Windows admite añadir impresoras manuales con cualquier driver disponible.

  1. En Impresoras y escáneres pulsa Agregar dispositivo.
  2. Espera unos segundos y pulsa Agregar manualmente.
  3. Elige Agregar una impresora local o de red con configuración manual y siguiente.
  4. En Usar un puerto existente selecciona FILE: (imprimir a archivo). Siguiente.
  5. En la lista de fabricantes elige HP (o Generic si no carga la lista) y un modelo cualquiera, por ejemplo HP LaserJet Pro M404 o el genérico Generic / Text Only.
  6. Si te pregunta, deja Usar el controlador instalado actualmente.
  7. Dale un nombre que reconozcas, por ejemplo Laser-Aula-Virtual. Siguiente.
  8. Cuando termine, marca NO compartir de momento. Finalizar.

2.4 - Imprimir contra la impresora "manual"

  1. Abre el Bloc de notas, escribe algo y pulsa Ctrl+P.
  2. Elige Laser-Aula-Virtual e imprime.
  3. Como su puerto es FILE:, te pedirá una ruta. Pon C:\Users\<tu_usuario>\Desktop\salida.prn.
  4. El archivo .prn contiene el flujo de datos tal cual lo recibiría la impresora real (PCL o PostScript según el driver).
Reto: abre salida.prn con el Bloc de notas y mira las primeras líneas. ¿Ves comandos extraños tipo %-12345X@PJL o %!PS-Adobe? Pega aquí el principio del archivo y di si es PCL o PostScript:
Nombre exacto que diste a la impresora "manual"
Driver elegido
Tamaño aproximado del archivo .prn generado
¿El contenido del .prn es legible? ¿Qué lenguaje usa?

Parte 3 - Servidor CUPS en la VM Linux (60 min)

Arranca tu VM Ubuntu. CUPS (Common Unix Printing System) es el subsistema de impresión que usan Linux y macOS. Vamos a instalarlo, añadir una impresora virtual con cups-pdf (que imprime a PDF en una carpeta) y prepararla para compartir por red.

3.1 - Instalar CUPS y cups-pdf

  1. Abre una terminal en Ubuntu.
  2. Actualiza el índice e instala los paquetes:
sudo apt update
sudo apt install -y cups cups-pdf printer-driver-all
sudo systemctl enable --now cups
systemctl status cups --no-pager
¿Está cups activo (active running)?
Puerto en el que escucha CUPS por defecto

3.2 - Añadir tu usuario al grupo de administración

sudo usermod -aG lpadmin $USER
# cierra sesión y vuelve a entrar para que tome efecto, o:
newgrp lpadmin

3.3 - Acceder a la interfaz web de CUPS

  1. Abre Firefox dentro de la VM Ubuntu y ve a http://localhost:631.
  2. Verás el panel de administración de CUPS. Pestañas: Home, Administration, Classes, Help, Jobs, Printers.
  3. Ve a Printers: deberías ver ya una entrada llamada PDF (cups-pdf).

3.4 - Imprimir a PDF desde Linux

  1. Abre cualquier documento (por ejemplo Archivos → Documentos, o crea uno con nano prueba.txt y escribe varias líneas).
  2. Imprime desde la línea de comandos eligiendo la impresora PDF:
echo "Hola desde CUPS" > prueba.txt
lp -d PDF prueba.txt
lpstat -o          # ver trabajos en cola
lpstat -p -d       # ver impresoras y la predeterminada

El PDF resultante aparecerá en ~/PDF/ (carpeta home del usuario). Compruébalo:

ls -la ~/PDF/
Comando que usaste para imprimir
Ruta donde aparece el PDF generado
Salida de lpstat -p

3.5 - Añadir una segunda impresora "genérica" (sin hardware)

Igual que en Windows, en Linux también podemos añadir una impresora con un driver del fabricante sin tenerla físicamente.

  1. En http://localhost:631 ve a Administration → Add Printer.
  2. Te pedirá usuario y contraseña: usa los del usuario Linux que está en lpadmin.
  3. En Other Network Printers elige AppSocket/HP JetDirect.
  4. Pon una URL falsa: socket://192.0.2.10:9100 (es una IP reservada que no existe; sirve para crear la entrada).
  5. Nombre: HP-Generic. Marca Share This Printer.
  6. Marca HP y elige un modelo, por ejemplo HP LaserJet Series PCL 6.
  7. Continúa hasta el final.
Nota: esta impresora no podrá imprimir realmente porque la IP no responde, pero los trabajos que envíes se quedarán en cola. Es perfecta para practicar la gestión de cola de la Parte 5.

Parte 4 - Compartir CUPS por red y conectarse desde Windows (40 min)

4.1 - Configurar la red entre las dos VM

Las dos VM tienen que verse entre sí y tener salida a internet (para descargar paquetes y drivers). Vamos a usar Adaptador puente: cada VM coge IP del router de la red real igual que si fuese un PC más. Es la forma más sencilla y con menos configuración.

  1. Apaga las dos VM.
  2. En cada VM: Configuración → Red → Adaptador 1 = Adaptador puente sobre la tarjeta de red activa del host (Wi-Fi o Ethernet, la que esté conectada).
  3. Arranca las dos VM.
  4. Anota la IP de cada una:
    • Linux: ip a o hostname -I
    • Windows: ipconfig en CMD
  5. Comprueba la conectividad: desde la VM Windows haz ping IP-Linux y al revés.
Si el firewall del host bloquea el ping entre VMs (típico en Windows con redes "Públicas"): cambia el perfil de red del host a "Privada" o añade una regla que permita ICMP entrante. También puedes seguir adelante: el ping puede fallar pero los servicios (puerto 631 de CUPS) sí responden.
IP de la VM Linux (servidor de impresión)
IP de la VM Windows (cliente)
¿Hace ping en ambos sentidos?

4.2 - Habilitar compartir CUPS en la VM Linux

Por defecto CUPS sólo escucha en localhost. Hay que abrirlo a la red:

sudo cupsctl --share-printers --remote-any
sudo systemctl restart cups
# permitir el puerto si tienes UFW activo
sudo ufw allow 631/tcp || true

Comprueba que escucha en todas las interfaces:

sudo ss -tlnp | grep 631

4.3 - Acceder a la web de CUPS desde la VM Windows

  1. En la VM Windows abre el navegador y ve a http://IP-Linux:631.
  2. Si te lo pide, acepta avisos de certificado.
  3. Pestaña Printers: deberías ver PDF y HP-Generic.
  4. Haz clic en PDF: copia la URL ipp://... que aparece (la usaremos en el siguiente paso).

4.4 - Añadir la impresora IPP en Windows

  1. En Windows: Configuración → Impresoras y escáneres → Agregar dispositivo → Agregar manualmente.
  2. Marca Seleccionar una impresora compartida por nombre.
  3. Escribe la URL: http://IP-Linux:631/printers/PDF.
  4. Cuando te pida driver, elige Generic / MS Publisher Color Printer o un genérico PostScript.
  5. Termina y dale un nombre: PDF-Servidor-Linux.

4.5 - Imprimir desde Windows contra el servidor Linux

  1. Desde el Bloc de notas en Windows imprime usando PDF-Servidor-Linux.
  2. Vete a la VM Linux y mira la carpeta ~/PDF/: debe aparecer un nuevo PDF generado.
  3. Comprueba también la cola en la web de CUPS: pestaña Jobs.
¿Por qué es importante esto? Acabas de montar el escenario más típico de oficina: un servidor de impresión (Linux/CUPS) compartiendo una impresora a clientes Windows por IPP. Cambiar el destino "PDF" por una impresora HP/Brother real sería literalmente cambiar la URL del paso 3.5: el resto es idéntico.
URL IPP completa que usaste
¿Apareció el PDF en la VM Linux tras imprimir desde Windows?
¿Qué driver elegiste en Windows para la cola compartida?

Parte 5 - Gestión de la cola de impresión (40 min)

5.1 - Llenar la cola en Windows

  1. En la VM Windows, pausa primero la impresora Laser-Aula-Virtual: Impresoras y escáneres → Laser-Aula-Virtual → Cola → Impresora → Pausar la impresión.
  2. Envía tres trabajos seguidos: un Bloc de notas, un PDF y una imagen abierta con la app Fotos.
  3. Vuelve a la cola de impresión: deberías ver los tres trabajos esperando.

5.2 - Pausar, cancelar y reordenar

  1. Selecciona el segundo trabajo y pulsa Suprimir.
  2. Sobre el tercer trabajo, botón derecho → Propiedades → Avanzadas: cambia la prioridad a 99 (alta).
  3. Reanuda la impresora (Impresora → Pausar la impresión de nuevo, se desmarca).
  4. Comprueba que se imprime el primero y el tercero, y que el segundo no aparece.
Trabajo¿Se "imprimió"?Comentario
1 (.txt)
2 (PDF, cancelado)
3 (imagen, prioridad alta)

5.3 - Forzar un atasco de cola y resolverlo

La impresora HP-Generic de CUPS apunta a una IP que no existe, así que cualquier trabajo se quedará atascado. Lo aprovechamos:

  1. En Linux: echo "test" | lp -d HP-Generic
  2. Comprueba la cola: lpstat -o o lpq -P HP-Generic
  3. El trabajo se queda atascado o entra en estado de error. Mira el panel web de CUPS.
  4. Cancela el trabajo: cancel -a HP-Generic
  5. Reanuda la cola si quedó pausada: cupsenable HP-Generic y cupsaccept HP-Generic
lpstat -o                       # ver trabajos pendientes
lpq -P HP-Generic               # cola en formato BSD
cancel -a HP-Generic            # cancelar todos los trabajos
cupsenable HP-Generic           # reanudar la impresora
cupsaccept HP-Generic           # aceptar nuevos trabajos
lpadmin -d PDF                  # poner PDF como predeterminada
Salida de lpstat -o con trabajos atascados
Comando que usaste para cancelarlos
¿Cómo cambia lpstat -o después?

5.4 - Reiniciar el spooler en Windows

En Windows, cuando la cola "se vuelve loca" y los trabajos no salen ni se borran, se reinicia el servicio del spooler:

  1. Abre Servicios (services.msc).
  2. Busca Cola de impresión (Print Spooler).
  3. Botón derecho → Reiniciar.
  4. Equivalente por consola (administrador):
net stop spooler
net start spooler
Aviso: reiniciar el spooler tira todos los trabajos en cola, no sólo el atascado. Avisa al resto de usuarios si trabajas en un servidor compartido.

Parte 6 - Diagnóstico de problemas frecuentes (30 min)

Ya tienes el entorno montado. Vamos a provocar y resolver los fallos más típicos.

6.1 - Impresora "fuera de línea"

  1. En Windows, sobre Laser-Aula-Virtual: Cola → Impresora → Usar la impresora sin conexión.
  2. Envía un trabajo: se queda en cola con la impresora marcada en gris.
  3. Desactiva el modo sin conexión y comprueba que el trabajo se procesa.

¿En qué casos reales una impresora aparece "fuera de línea" sin que el usuario la haya puesto así?

6.2 - Driver incorrecto

  1. En Windows, propiedades de Laser-Aula-Virtual → Opciones avanzadas → Controlador: cámbialo a uno claramente incompatible (por ejemplo un driver matricial muy antiguo si está en la lista, o Generic / Text Only).
  2. Imprime un PDF con imágenes: comprueba el resultado del archivo .prn.
  3. Vuelve a poner el driver correcto.

¿Qué síntomas en el papel te harían sospechar de un driver incorrecto en una impresora real?

6.3 - Problema de red

  1. Apaga la VM Linux dejando una impresión pendiente desde Windows contra PDF-Servidor-Linux.
  2. Mira el estado del trabajo en la cola Windows: irá a "error" o "intentando conectar".
  3. Vuelve a arrancar la VM Linux: el trabajo debería salir solo.

6.4 - Checklist "no imprime"

Cuando un usuario te diga "la impresora no imprime", repasa por orden:

  1. ¿Está encendida y con papel? (en una real)
  2. ¿La cola tiene trabajos atascados? Vacíala.
  3. ¿Está marcada como "sin conexión" o "pausada"? Quítaselo.
  4. ¿Es la impresora predeterminada y la app está usando esa? Comprueba con un Bloc de notas.
  5. ¿Hay conectividad si es de red? ping a la IP, navegador a la URL IPP.
  6. ¿El driver es el correcto? Reinstálalo si dudas.
  7. ¿El servicio Print Spooler (Windows) o cups (Linux) está corriendo? Reinícialo.
  8. Sólo al final: drivers más recientes / firmware de la impresora.

Conclusiones y autoevaluación

De todo lo que has hecho, ¿qué te llevarías a una situación real de trabajo en una oficina pequeña que necesita instalar y compartir una impresora?

Autoevaluación

AspectoLogrado
He usado Microsoft Print to PDF y entiendo que es una impresora "real" para Windows
He añadido una impresora manualmente con el driver del fabricante sin tener el equipo
He instalado y configurado CUPS en la VM Linux
He compartido la impresora del servidor Linux y la he usado desde la VM Windows por IPP
Sé gestionar la cola en Windows (GUI) y en Linux (lp, lpstat, cancel)
Sé reiniciar el spooler en Windows y CUPS en Linux
Conozco los protocolos IPP, LPD y RAW 9100 y para qué se usan
Volver al índice