- Virtualbox
- Материал из Пингвиньи радостей
- Содержание
- Установка VirtualBox из хранилища пакетов
- Установка VirtualBox с сайт разработчика
- VirtualBox Extension Pack
- Доступ к USB устройствам
- Доступ к LPT порту
- Автоматизация запуска
- Запуск с флешки
- Дефрагментация виртуального диска
- Проброс портов VirtualBox
- Проброс портов в VirtualBox
- Виртуальный адаптер хоста VirtualBox
- Выводы
- virtualbox.org
- Enabling and Configuring Parallel (LPTx) Ports
- Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
- Re: Enabling and Configuring Parallel (LPTx) Ports
Virtualbox
Материал из Пингвиньи радостей
Статья о паравиртуализаторе VirtualBox
VirtualBox это паравиртуализатор компании Oracle, предназначенный для запуска гостевых виртуальных операционных систем.
VirtualBox это бесплатное, но не свободной программное обеспечение. Например, согласно условиям распространения, использовать VirtualBox без каких-либо ограничений могут только индивидуальные пользователи и учебные учреждения. В то же время свободно распространяется усечённая версия VirtualBox — virtualbox-ose.
Современные версии VirtualBox (совместно с пакетом расширения VirtualBox Extension Pack) позволяют эмулировать многие устройства, например IDE/SATA/iSCSI (например как описано в статье о VBoxManage) жёсткие диски, CD/DVD/Floppy приводы, USB/COM/Ethernet-порты, 3D/2D видео режимы, а также запускать виртуальные машины в командной строке, в том числе переводя их в фон. Для автоматизации создания гостевых виртуальных машин, тонкого управления ими предоставляется утилита командной строки VBoxManage.
Содержание
Установка VirtualBox из хранилища пакетов
Установка VirtualBox в Debian/GNU Linux может быть осуществлена:
Установка VirtualBox с сайт разработчика
Установка VirtualBox может быть осуществлена из пакета с сайт разработчика. Этот способ может быть применён как в Linux, так и в Windows.
Для установки VirtualBox из пакета с сайта разработчика virtualbox.org на примере версии для Debian Jessie
- загружается пакет-установщик
- осуществляется установка
При установке VirtualBox таким образом контроль обновлений перекладывается на пользователя (саму программу).
VirtualBox Extension Pack
Для получения доступа к расширенным возможностям VirtualBox, например доступу к USB-устройствам следует установить пакет расширения VirtualBox Extension Pack.
Для установки VirtualBox Extension Pack, на примере версии для Debian Jessie
- получается расширение
- осуществляется установка расширения
Доступ к USB устройствам
Для получения доступа к USB порту в виртуальной машине
- добавляется доверенный пользователь в группу vboxusers
- разрешаются чтение/запись в файловые системы смонтированные через usb (?! а нужно ли ?)
- перезапускается сессия доверенного пользователя или компьютер
Теперь виртуальная машина может получить доступ к подключенным USB устройствам.
Для добавления USB-устройства в виртуальной машине
- запускается VirtualBox от имени доверенного пользователя
- устанавливается интересующее нас устройство USB в слот
- в «Свойствах\USB\» устанавливаются параметры
- при старте гостевой системы (виртуальной машины) USB устройство определится и будет добавлено автоматически
Доступ к LPT порту
VirtualBox не поддерживает включение доступа к LPT-порту в графическом интерфейсе управления виртуальными машинами. Но позволяет это сделать из командной строки.
Для получения доступа к LPT-порту в виртуальной машине в Linux
- уточняется информация о порте и прерывании LPT-порта
- добавляется LPT-порт
- если доступ в параллельному порту заблокирован:
- для настройки параметров порта в виртуальной машине могут быть использованы команды
- для отключения LPT-порта может быть использована команда
Для получения доступа к LPT-порту в виртуальной машине в Windows
- уточняется информация о порте и прерывании LPT-порта
- добавляется LPT-порт командами
Автоматизация запуска
VirtualBox позволяет осуществлять запуск виртуальных машин из командной строки и без запуска GUI.
Для автоматизации запуска виртуальной машины при старте операционной среды
- VirtualBox запускается от имени суперпользователя и создаётся/настраивается виртуальная машина
- в файл /etc/rc.local добавляется команда запуска созданной виртуальной машины
Запуск с флешки
VirtualBox напрямую не позволяет осуществлять запуск в гостевых (виртуальных) системах с флешки или жёстких дисков. Но предоставляет механизм подключения существующих устройств к виртуальному жёсткому диску.
Для организации запуска с флешки в VirtualBox на примере Windows версии программы
- запускается создание виртуального жёсткого диска
- в диалоге нажимается кнопка «Выбрать существующий диск» и указывается флешка
- при старте виртуальной машины нажимается F12 и выбирается вторичный который и является флешкой (виртуальный) жёсткий диск,
Дефрагментация виртуального диска
VirtualBox позволяет осуществить упаковку (сжатие) динамического виртуального vdi-диска.
Проброс портов VirtualBox
VirtualBox — одна из самых популярных сред виртуализации, которые используются для запуска различных операционных систем. И довольно часто случается ситуация, что вам необходимо получить доступ к какому-либо сервису гостевой системы из основной, например, веб-серверу или ssh. Но по умолчанию сетевые интерфейсы изолированы и такой возможности нет.
Для решения этой задачи можно пойти двумя путями. Мы можем пробросить необходимый порт виртуальной машины в основную систему или же выдать виртуальной машине отдельный IP адрес, что позволит обращаться к любым ее портам и использовать любые сетевые возможности. В этой небольшой статье мы рассмотрим проброс портов virtualbox двумя способами. Начнем с более простого.
Проброс портов в VirtualBox
По умолчанию для настройки сети для виртуальной машины используется технология NAT. С помощью нее вы можете просматривать интернет-сайты и выполнять различные действия в сети, но вы не будете видеть ваш основной компьютер. Для виртуальной машины создается виртуальная сеть, в которой есть только она одна, а ваша домашняя сеть и ваш компьютер ей не виден.
Но если вам нужно получить доступ к какому-либо сервису гостевой машины, то можно пробросить порт этого сервиса в основную систему. Так работают порты VirtualBox. Для этого откройте контекстное меню для машины и нажмите «Настройки»:
Затем перейдите на вкладку «Сеть», а потом разверните строчку «Дополнительно»:
Тут вам нужно нажать кнопку «Проброс портов»:
Дальше нажмите кнопку с зеленым значком «+». Тут нужно заполнить несколько полей:
- Имя — любое имя, по которому вы сможете понять с чем имеете дело;
- Протокол — протокол, по которому работает сервис, например, tcp;
- Адрес хоста — адрес на основной машине, подключения к которому будут направляться на виртуальную машину, можно написать 127.0.0.1 или ip в локальной сети;
- Порт хоста — порт, подключения к которому нужно перенаправлять на гостя;
- Адрес гостя — на который нужно направлять подключения, оставьте пустым;
- Порт гостя — порт, на который будут перенаправлены подключения с этого порта.
Адрес хоста в локальной сети можно узнать так:
Еще один важный момент, что порт с которого вы перенаправляете и на который перенаправляете не должны совпадать. Странное дело, но если перенаправлять с порта 80 на 80, то работать все это не будет. Нужно использовать 8080 на 80. Тогда все в порядке. Если вы не любитель много кликать, что можно воспользоваться командной терминала:
VBoxManage modifyvm «Имя машины» —natpf1 «rulename,tcp,127.0.0.1,8080,,80»
В этом примере взяты данные из рассмотренного выше примера. Теперь на хосте и виртуальной машине откроется одна и та же страница.
Проброс портов virtualbox nat работает.
Виртуальный адаптер хоста VirtualBox
Еще один способ получить доступ к виртуальной машине извне — использовать виртуальный адаптер хоста. Тут вы можете настроить все более подробно, а также получить отдельный ip для машины, что дает больше возможностей. Сначала нужно создать виртуальный адаптер. Для этого откройте меню «Файл», затем «Настройки»:
Тут нужно перейти на вкладку «Сеть», затем «Виртуальные адаптеры»:
Дальше нажмите кнопку «+», чтобы в списке появился пункт vboxnet0. Тут готово, нажмите несколько раз «Ok» чтобы закрыть это окно. Дальше откройте контекстное меню вашей виртуальной машины, потом «Настроить», а затем «Сеть»:
Тут вам нужно в выпадающем списке заменить «NAT» на «Виртуальный адаптер хоста». В поле имя, выберите «vboxnet0»:
Теперь можете запускать виртуальную машину и смотреть ее ip адрес:
По нему гостевая система будет доступной из внешней. Внешняя система теперь тоже полностью доступна из гостевой по адресу 192.168.56.1:
Выводы
В этой небольшой статье мы рассмотрели как выполняется проброс портов VirtualBox, это может быть очень полезным, если вы часто работаете с виртуальными машинами. Если у вас остались вопросы, спрашивайте в комментариях!
virtualbox.org
End user forums for VirtualBox
- Board index‹General‹Howtos and Tutorials‹Generic Advice
- Change font size
- Print view
- FAQ
- Login
Enabling and Configuring Parallel (LPTx) Ports
Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:50
On several occasions the mods have been asked for instructions on how to enable and configure LPT (parallel port) passthrough in a guest. LPT passthrough is a feature which has been requested for years, and was finally implemented with very little fanfare in VirtualBox v4.2.0 (*). The release logs and documentation make only passing mention of it, which possibly reflects a low level of confidence the devs have in this new feature. Basically, it’s an (almost) undocumented feature, so if you can’t get it to work. well just don’t expect too much.
(*) In fact parallel ports were usable on Linux hosts only since the Innotek days, it just was never officially documented. From v4.2.0, Windows host support was added, and support was documented in the user manual albeit briefly.
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:51
One problem with writing this advice note is that, while I do know enough to write the tutorial, none of my current PCs any longer has a parallel port, so I am unable to fully test the advice. I suspect the same will be true of other mods. So, we’ll just have to make do for now, and if you find some error in the instructions then let me know and I’ll amend it.
It so happens that I am most familiar with this stuff on Windows hosts. Linux hosts will be similar except for the device names. I will add Linux notes where I can, and I’m open to corrections. As far as I know, no Intel based Mac host ever had parallel ports, so I will be ignoring MacOS hosts in these instructions.
One final thing worth mentioning is that most people don’t need to add a virtual LPT port to their VM. If all you want is to be able to print from inside a VM, and the printer already works on your host, then an infinitely better solution is to share the printer on the virtual network. Host-only networking mode is perfect for this, or if the guest is already using Bridged networking then that is equally good, provided of course that host and guest are configured to be on the same workgroup or domain.
[Edit] Additional note. Don’t bother trying to redirect the output of a guest’s LPTx to a host file. That will not work. The feature provides a passthrough to the host port at a low level in order to allow GPIO type bidirectional control. It is not a file stream.
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:53
Step 1: Understanding
Configuring an LPT port requires that you supply the host device name, plus I/O base address and IRQ (Interrupt ReQuest) selections for the guest.
The first step in solving a problem is understanding it. One of the main things new users often do not understand is the precise relevance of the base address and IRQ settings. The most common mistake is to believe that it should be the same as on the host, which is quite wrong.
VirtualBox is just another application running on your host. Do any of your other host applications need to be told what base address and IRQ to use for some device? No? The application just talks to the host OS? Well guess what, VirtualBox is no different. Just because the application simulates hardware doesn’t make its own hardware requirements anything special. Hence the base address and IRQ settings for your host LPTx port is totally irrelevant, all you need to know is the device name, e.g. «LPT1» («/dev/parport0» on Linux I think).
As mentioned, the purpose of VirtualBox is to simulate hardware, and when you are doing a hardware simulation you do need to know which part of IO memory space you are supposed to pretend to be located in, and which simulated IRQ signal it should pretend to be connected to. Since there is no reason to use anything other than defaults for these values, you should stick to the defaults: base address 0x378, IRQ7, which a Windows guest will typically detect as «LPT1».
So a final reiteration: if the parallel port you want to use on your host is called LPT4, then the correct guest configuration is: base address = 0x378, IRQ7, name=»LPT4″, which will be detected inside the guest as LPT1 (or whatever name your particular guest OS usually gives to the first parallel port).
By the way, similar logic applies to the base address and IRQ settings for a serial port (UART).
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:54
Step 2: Configuring the VirtualBox VM on the Host
At the time of writing, the current version of VirtualBox (v6.1.12) does not have GUI support for configuring the LPT settings of the VM, you must instead use the VBoxManage command in a terminal window (command console). Users of Windows hosts often have difficulty understanding how to use a command line: just open the command console (cmd.exe), change to the VBoxManage folder by typing cd «c:\Program Files\Oracle\VirtualBox» (note the double quotes around the path string, since it contains a space), and then you can type the additional commands shown below :-
General command syntax (fields in brackets are placeholders, the brackets are not literal):
Code: Select all Expand viewCollapse view VBoxManage modifyvm —lptmode1
VBoxManage modifyvm —lpt1 0x378 7
Windows Host Example (where the host port I want to use is called «LPT4»):
Code: Select all Expand viewCollapse view VBoxManage modifyvm «My VM Name» —lptmode1 «LPT4»
VBoxManage modifyvm «My VM Name» —lpt1 0x378 7
Linux Host Example equivalent to above:
Code: Select all Expand viewCollapse view VBoxManage modifyvm «My VM Name» —lptmode1 «/dev/parport3»
VBoxManage modifyvm «My VM Name» —lpt1 0x378 7
All of the above examples configure a virtual LPT1 inside the guest. Of course you could configure another guest port instead, but there isn’t much point in doing so hence I have ignored that possibility in the instructions.
The above also tells VirtualBox which host port you want to use. VirtualBox does not check at this point that the host port actually exists. Nor does it guarantee that your host OS will allow VirtualBox to use that port. In particular, if you install a parallel port printer driver on the host, and if that driver opens the parallel port when the host starts up, then that port may not be available for the guest to use (it depends on the driver). Parallel ports are legacy devices which were never designed to be shared, only one application (or driver) at a time can «own» the port.
Step 2a: Additional Notes for Linux Hosts
VirtualBox may be blocked from accessing the parallel port due to permission issues. Make sure that your user name is in the lp and lpadmin group on the host. Remember to log out and in again for permission changes to «take».
You may find that you still can’t access the printer because the kernel is already using it. You’ll get a message to the effect «could not claim parallel port». I’m told that the solution is to unload the «lp» module from the kernel, e.g. using «sudo modprobe -r lp».
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:55
Step 3a: Configuring a Windows Guest OS
In some cases, even though you have configured the VM recipe correctly, a Windows guest will fail to detect the parallel port. Usually this is because a parallel port is not regarded as «plug and play». You need to manually force a scan for new hardware, by going into the guests Control Panel and selecting «Add new Hardware». If you followed the instruction above then a Windows guest will always detect the hardware as «LPT1», which you can check by viewing the «Ports» branch in Device Manager. Applications running in the guest should be configured to use LPT1.
Edit: It has come to my attention that VirtualBox does not currently (v4.2.6) support parallel port interrupts, hence these should be disabled inside the guest.
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 17:56
Step 3b: Configuring a Linux Guest OS
To be filled in by someone who knows Linux better than me.
Edit: It has come to my attention that VirtualBox does not currently (v4.2.6) support parallel port interrupts, hence these should be disabled inside the guest.
Re: Enabling and Configuring Parallel (LPTx) Ports
by mpack » 18. Feb 2013, 18:03
Step 4: Manage Expectations
At the time of writing this feature is not well tested. Also, it is true that extra latency (i.e. slower response) is an inevitable feature of VMs, so if your parallel device is very fussy about timing then it probably will not work in a VM, and nothing can be done about it.
If, at the end of your experiment, you decide you don’t need a parallel port in the guest after all, then it can be disabled again thusly (same on Windows or Linux hosts):
Code: Select all Expand viewCollapse view VBoxManage modifyvm «My VM Name» —lpt1 off