четверг, 21 мая 2015 г.

Проброс паралельного порта (lpt) в VirtualBox

VirtualBox достаточно хорошая система виртуализации и в последних версиях (4.3.28) позволяет пробросить разное из хост системы в гостеву. Много чего кроме паралельного порта. Вернее его можно пробросить через VBoxManager и если хост система Windows. 

Задача стояла пробросить паралельный прорт из Linux хост системы в Windows гостя (для заливки шрифтов на принтер Zebra). После непродолжительного гугления был найден следущий рецепт : http://blog.my1matrix.org/2013/04/parallel-port-on-virtualbox.html

Но так как там на иностранном языке :) вот вам вольный перевод на русский :

Откроем терминал и поглядим если у нас нужные нам устройства:

dmesg | grep parport

Если в выводе есть что то похожее то нам повезло :

[   10.303217] parport_pc 00:08: reported by Plug and Play ACPI
[   10.303261] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[   10.422795] lp0: using parport0 (interrupt-driven).

 
Нам интересны строчки с parport0 а так же мы видим привязку к lp0

Устанавливаем паралельный порт в виртуальную машину. Виртуальная машина должна быть сосздана и установленна. Все операции выполняются на не запущенной машине.

VBoxManage modifyvm SM --lptmode1 /dev/parport0 
VBoxManage modifyvm SM --lpt1 0x378 7

 Здесь SM - это имя нашей машины а parport0 и 0x378 и 7 мы взяли из вывода выше.

Возможно придется добавить разрешения для на порт. 
Таже выполняем следующие команды :

VBoxManage setextradata SM "VBoxInternal/Devices/parallel/0/LUN#0/Config/DevicePath" /dev/parport0 
VBoxManage setextradata SM "VBoxInternal/Device/parralel/0/LUN#0" HostParallel
VBoxManage setextradata SM "VBoxInternal/Device/parralel/0/Config/IOBase" 0x378
VBoxManage setextradata SM "VBoxInternal/Device/parralel/0/Confgin/IRQ" 7
Последнее что возможну нужно сделать это выгрузить модуль устройства

rmmod lp 

Данное действие нужно что бы система отдала порт виртуалке.