Виртуальная машина линукс usb

Настройка VirtualBox в Linux Ubuntu. Проброс usb. Как сделать загрузочную флешку Windows в Linux.

Аппаратная конфигурация устройств, операционных систем, набор программ и средств защиты информации подбираются исходя из условий эксплуатации и выполняемых задач, закладывается возможность апгрейда и возможность гибкой настройки конфигурации программно-аппаратных средств.

Часто, на одном физическом диске может быть установлено несколько операционных систем с разным набором программ.

Такая конфигурация необходима для выполнения разносторонних задач, требующих применения узкоспециализированного программного обеспечения, либо для работы с ПО оптимизированным под определенную ОС или когда для решения задачи учитываются особенности операционной системы.

Различные операционные системы и наборы программ также могут быть установлены на нескольких физических носителях, в том числе — съемных или внешних дисках. Данное решение может быть даже более приемлемым с позиции защиты информации.

Еще одним эффективным решением — является применение #виртуальных #машин. #ВМ используются для тестирования программного обеспечения в различных окружениях, моделирования систем и настроек конфигурации, для обзора ОС и т.д.

Виртуальная машина — это среда работающая на мощностях другого компьютера. Создается изолированная виртуальная среда, имитирующая аппаратное обеспечение в цифровом виде. Это позволяет запустить одновременно несколько операционных систем на одном компьютере.

Поддерживаются любые операционные системы, а в контейнерах можно тестировать единичные программы и приложения.

На одном физическом сервере, можно организовать несколько виртуальных — настроенных для различных задач, объединить несколько физических носителей в одной среде.

Все вышеизложенное — плюсы технологии. И это не полный перечень возможностей ВМ!

  • работу не всех устройств можно эмулировать;
  • высокие требования к аппаратным ресурсам;
  • иногда создание надежной виртуальной среды — дороже физического оборудования.

Создание виртуальной машины на базе #Ubuntu ОС

Я не встречал ни одного рабочего метода создания загрузочной флешки Windows средствами ОС #Linux или ПО для Линукс! (у кого получилось — напишите в комментариях)

При отсутствии физического устройства под управлением Windows, когда нет возможности осуществить загрузку и установку ОС с официального сайта по OEM-лицензии, а на диске устройства — только Линукс, создать загрузочный носитель Windows ОС можно в виртуальной среде!

Однако, учтите возможности Вашего устройства: «уставший» hdd, мало оперативки и т д — ВМ станет не пригодной к практическому применению!

Будьте готовы столкнуться с рядом переменных значений, которые зависят от аппаратной части, какой Линукс и версию используете . То есть пример ниже — типовой вариант!

Читайте также:  Linux ping dont fragment

Что бы создать виртуальную машину, нам необходимо из официального магазина приложений установить VirtualBox (либо с сайта Oracle) и скачать ISO-образ необходимой версии ОС Windows.

Источник

Виртуальная машина линукс usb

Библиотека сайта rus-linux.net

Теперь запустите терминал и выполните одну из следующих команд, чтобы создать файл vmdk:

$ sudo vboxmanage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/sdc

В некоторых дистрибутивах Linux команда vboxmanage чувствительна к регистру символов. В этом случае команда создания vmdk-файла должна иметь вид:

$ sudo VBoxManage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/sdc

В результате будет создан новый vmdk-файл с именем “usb.vmdk” в вашем домашнем каталоге $HOME. Если создание vmdk-файла пройдет успешно, вы увидите сообщение следующего вида:

RAW host disk access VMDK file /home/sk/usb.vmdk created successfully.

Create new vmdk file using vboxmanage command

Задайте нужные разрешения для вновь созданного vmdk-файла:

$ sudo chown $USER:$USER ~/usb.vmdk

Затем добавьте пользователя в группы “vboxusers” и “disk”, используя следующие команды:

$ sudo usermod -a -G vboxusers sk

Конечно, не забудьте заменить “sk” на ваше имя пользователя. Пожалуйста, помните, что добавление пользователя в группу “disk” опасно и представляет угрозу безопасности.

После этого извлеките USB-диск и перезагрузите систему, чтобы изменения вступили в силу. Если вы не извлечете ваш USB-диск, имя вашего диска может измениться при последующей загрузке. Так что это важно: вначале удалите USB-диск, а потом перезагружайте систему.

Теперь откройте приложение Oracle Virtualbox и создайте новую виртуальную машину:

Create new virtual machine in virtualbox

Укажите имя виртуальной машины, тип и версию ОС и щелкните по кнопке Next:

Enter virtual machine details in virtualbox

Задайте объем оперативной памяти:

Enter RAM size to virtual machine in virtualbox

Следующий шаг очень важен. Выберите вариант “Use an existing virtual hard disk file” и щелкните по экранной кнопке с изображением стрелки ВВЕРХ:

Use an existing virtual hard disk file

В открывшемся окне щелкните по иконке “Add” чтобы выбрать вновь созданный vmdk-файл:

Click

Выберите созданный вами vmdk-файл на вашем локальном диске:

Choose the newly created vmdk file from your local drive

После добавления файла vmdk нажмите кнопку «Choose» (Выбрать) для подтверждения:

Confirm adding the vmdk file

После этого вы увидите, что файл vmdk выбран в качестве виртуального жесткого диска для нового виртуального компьютера. Нажмите Next (Далее), чтобы продолжить:

vmdk file is selected as the virtual hard disk

Все сделано! Подключите ваш загрузочный USB-диск и запустите виртуальную машину:

Boot from USB drive in Virtualbox

Теперь вы можете загружать одну из ОС, имеющихся на вашем USB-диске, в Oracle Virtualbox. На следующей картинке вы видите момент загрузки с загрузочного USB-диска, созданного с помощью скрипта Ventoy, в Virtualbox:

Boot From USB Drive In Virtualbox In Linux

Создание ISO-образа загрузочного USB-диска

Существует другой способ загрузки с USB-диска в Virtualbox. В этом методе не требуется создавать vmdk-файл. Вместо этого создайте ISO-образ вашего загрузочного USB-диска, используя утилиту “GNOME disk utility” или команду “dd” как описывается в следующей статье:

После создания ISO-образа, откройте приложение Virtualbox и перейдите на вкладку Settings любой из имеющихся у вас виртуальных машин, после чего добавьте (смонтируйте) вновь созданный .iso-файл как оптический диск в секции “Storage Controller: IDE”.

Читайте также:  Grub boot linux kernel

Add ISO in virtualbox storage controller

Теперь запустите виртуальный компьютер и загрузите систему с этого ISO-образа.

Пожалуйста, обратите внимание, что этот метод работает не со всеми образами USB-дисков, в частности, с USB-дисками разбитыми на несколько разделов.

Источник

Проброс USB в виртуалку по сети средствами UsbRedir и QEMU

На сегодняшний день существет довольно много способов пробросить USB-устройство на другой компьютер или виртуалку по сети.
Из наиболее популярных — железячные такие как AnywhereUSB и чисто програмные продукты, из тех что я попробовал сам: USB Redirector и USB/IP.
Я бы хотел рассказать вам еще об одном интересном способе, который работает непосредственно с эмулятором QEMU.
Он так же является частью проекта spice, официально поддерживаемым RedHat.

UsbRedir, это открытый протокол для проброса usb-устройств по tcp на удаленный виртуальный сервер, разработанный при поддержке RedHat в рамках проекта spice. Но как оказалось им можно вполне успешно пользоваться и без spice. В роли сервера выступает usbredirserver, который шарит usb-устройство на определенный порт, а в качестве клиента сам QEMU, который эмулирует подключение экспортированного usb-устройства в определенный usb-контроллер вашей виртуальной машины. Благодаря такому подходу в качестве гостевой системы может использоваться абсолютно любая ОС, так как она даже не знает, что устройство является проброшенным удаленно, а вся логика ложится на QEMU.

Для начала несколько слов о вышеперчисленных решениях

  • AnywhereUSB — довольно неплохое решение, но дорогое, и имеет неприятние глюки, например бывает если расшаренная флешка отваливается, то переподключить ее обратно можно только физически вынув и вставив ее.
  • USB/IP — OpenSource проект. Вроде как был заброшен. По факту глючит довольно сильно. При разрыве соединения, машина частенько уходит в полнейший freezee, а windows показывает BSOD
  • USB Redirector — Замечательная софтина. Для расшаривания устройств с linux на linux бесплатна, во всех остальных случаях уже стоит денег, не так много как AnywhereUSB, но и не бесплатно как хотелось бы 🙂

Настройка виртуальной машины

Для qemu (без libvirt)

Добавьте опции в команду запуска виртуальной машины:

-device ich9-usb-ehci1,id=ehci,addr=1d.7,multifunction=on -device ich9-usb-uhci1,id=uhci-1,addr=1d.0,multifunction=on,masterbus=ehci.0,firstport=0 -device ich9-usb-uhci2,id=uhci-2,addr=1d.1,multifunction=on,masterbus=ehci.0,firstport=2 -device ich9-usb-uhci3,id=uhci-3,addr=1d.2,multifunction=on,masterbus=ehci.0,firstport=4 
Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt удаляем все USB контроллеры и добавляем следущий блок:

Кстати, если вы используете spice, то добавив к контроллерам еще 3 специальных девайса, станет возможен проброс usb-устройств с клиента spice на сервер.

Для qemu

Добавляем следующие опции в команду запуска виртуальной машины, помимо контроллеров определеных нами раньше:

-chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 -chardev spicevmc,name=usbredir,id=usbredirchardev3 -device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3 
Для libvirt

В исходном файле конфигурации виртуальной машины в узле &ltdevices&gt добавляем следующие опции, помимо контроллеров определеных нами раньше:

Читайте также:  Convert svg to png linux

Теперь все готово для осуществления проброса.

Запуск сервера

Пакет usbredirserver можно найти в стандартных репозиториях практически во всех популярных дистрибутивах linux.

Вставляем флешку в компьютер, смотрим вывод usb-устройств:

$ lsusb . Bus 003 Device 011: ID 125f:c82a A-DATA Technology Co., Ltd. . 

Видим что пара vendorid:prodid равна 125f:c82a, а ядро определило флешке 003-001 usbbus-usbaddr соотвественно.

Теперь давайте расшарим ее на 4000 порт:

# Используя пару vendorid:prodid $ usbredirserver -p 4000 125f:c82a # Используя пару usbbus-usbaddr $ usbredirserver -p 4000 003-011 

Подключение устройства к виртуальной машине

Через опции при запуске ВМ

Устройство которое нужно подключить к ВМ можно указать при запуске, добавив следующие опции в команду запуска

Для qemu
-chardev socket,id=usbredirchardev1,port=4000,host=192.168.1.123 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4 
Для libvirt

Его так же можно исполнить командой virsh attach-device

Или через qemu-monitor

# Добавляем наше устройство chardev-add socket,id=usbredirchardev1,port=4000,host=192.168.1.123 # Подключем его в ehci контроллер (USB-2.0) device_add usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=4 

На этом все, после данных шагов ваша ВМ увидит вашу флешку и сможет с ней нативно работать.

Если устройств много и все они одинаковые

Вот тут появилась интересная задачка, как пробросить несколько одинаковых девайсов на разные ВМ?
При этом, стоит отметить, все устройства имеют одинаковую пару vendorid:prodid, а пара usbbus-usbaddr совсем не постоянна, стоит только вынуть и вставить устройство, так оно сразу поменяет свой usbaddr.

Я решил ее при помощи udev.
Кстати если вы не совсем понимаете как работает udev, на Debian Wiki есть классная статья о udev

И так приступим

Для начала нам надо узнать серийник нашего устройства, по которому и будем идентифицировать его в udev:

$ udevadm monitor --environment --udev 

И вставим наше устройство, после этого мы сразу увидим список переменных этого устройства которые udev любезно инициализировал для нас:

. UDEV [189056.151508] add /devices/virtual/bdi/8:16 (bdi) ACTION=add DEVPATH=/devices/virtual/bdi/8:16 ID_SERIAL_SHORT=11C130317234004B SEQNUM=4352 SUBSYSTEM=bdi USEC_INITIALIZED=189056149826 . 

Информацию о серийнике и других аттрибутах можно получить и другим способом, но стоит учитывать что для написания правил мы будем использовать именно переменные из команды выше, а не аттрибуты из команды ниже. В противном случае не будет отрабатывать триггер remove при отключении устройства.

$ udevadm info -a -n /dev/bus/usb/003/011 | grep '' 

Теперь создадаим файл /etc/udev/rules.d/99-usb-serial.rules и запишем в него следующие правила:

ACTION=="add", ENV="11C130317234004B", RUN+="/usr/bin/usbredirserver -p 4000 $attr-$attr" ACTION=="remove", ENV="11C130317234004B", RUN+="/usr/bin/fuser -k 4000/tcp" 
$ udevadm control --reload-rules 

Готово, теперь при подключении нашего устройства, оно будет автоматически шарится на нужный нам порт, а при отключении usbredirserver будет прекращать свою работу.
По аналогии добавляем и остальные устройства.

На этом все. Спасибо за проявленный интерес 🙂

Источник

Оцените статью
Adblock
detector