Ответы пользователя по тегу Виртуализация
  • Как создать виртуальную сеть на уровне IP?

    @rPman
    У virtualbox есть понятие internal network, когда внутренняя сеть никак в хост систему не выходит и остается внутри (можно создать несколько таких сетей), для подключения к этой сети одну из виртуальных машин в этой внутренней сети можно выбрать роутером, добавив ей интерфейс, связанный бриджем уже с хостовым.

    Про qemu. Сам я это не пробовал но если я верно понимаю, VDE это то что нужно (весь этот функционал плюс еще куча всего). Как я понимаю VDE в qemu уже включен. Например можно объединить снаружи виртуалки через сокет (ключи -unix control-socket и vde-plug [-p port] [socketname] ), в т.ч. с соседней на основе другой технологии (в документации речь идет про User Mode Linux)
    Ответ написан
    Комментировать
  • Как работает виртуальная сеть?

    @rPman
    Два способа:
    1. сетевой мост/bridge
    на хост машине создается tap устройство - виртуальный сетевой адаптер, пакеты с которого которого принимает и отправляет приложение - гипервизор, все пакеты, отправленные на это устройство 'снаружи', будут продублированы как исходящие внутри виртуальной машины и наоборот
    Чтобы виртуальная машина получила доступ к внешней сети, необходимо этот виртуальный адаптер и реальный сетевой интерфейс хост машины объединить в бридж (ip адрес сети уже назначается этому мосту), это действие равнозначно подключению двух проводов ethernet (в данном случае второй - виртуальный) в простой сетевой коммутатор - свитч.
    Сетевой мост можно собрать из более чем двух сетевых адаптеров, например можно объединить сетевой адаптер виртуальной машины + настоящий сетевой адаптер + устройство vpn, и получится что все они объединены в одну локальную сеть.
    2. специальный драйвер, который симулирует прием и передачу пакетов прямо на выбранное сетевое устройство (так делает к примеру virtualbox на windows), в отличии от сетевого моста, так можно сделать только с одним устройством.
    3. на самом деле способов больше, у qemu можно соединить гостевое сетевое устройство с приложением на хост системе напрямую (не нужны драйвера), так же можно ни с чем не соединять, но можно пробросить порт снаружи внутрь гостевой (или соединить только с другой виртуальной машиной, получится приватная внутренняя сеть, к которой имеют доступ только виртуалки) и прочие странные конфиги.

    Если используется NAT то внутри гипервизора поднимается виртуальный роутер, доступа к которому у пользователя обычно нет, внешний сетевой интерфейс этого виртуального роутера так же по одному из вышеописанным способов подключается к хост системе.
    Ответ написан
    2 комментария
  • Как реализовать взаимодействие виртуальной ОС с переферией для прошивки?

    @rPman
    Проброс устройств в виртуальную машину бывает разный, в зависимости от вида подключения, самого устройства, действия могут отличаться от 'вставил и работает' (очень и очень редко) до 'работает только если звезда сойдутся и если запускать заранее подготовленный непростой набор команд перед вставкой устройства и после'.

    Причина - нет адекватной поддержки проброса устройств, чаще всего она ограничена либо работает только при опредленных условиях и по разному на разных устройствах (в смысле компьютер), зависит от производителя процессора intel/amd, возможностей материнки и кучи других мелких нюансов (например десктопные материнки чаще всего ограничивают функционал в биосе). С момента активного использованиея EFI биосов, это еще сильнее усложнилось.

    * Итак - проброс всего pci(-e) устройства вместе с контроллерами и соответственно устройствами, через него подключаемыми. Это самый удобный с точки зрения использования способ (потому как после запуска виртуальной машины контроллер уже доступен внутри и чаще всего без дополнительных движений видит устройство 'как родное'.

    В linux мне известно что это поддерживает только qemu/kvm и поддержка требует соответствующие аппаратные возможности (IOMMU/VT-d плюс в принципе аппаратная виртуализация), даже некоторые gpu могут быть так проброшены внутрь виртуалки, производители видеокарт об этом знают и старательно ставят палки в колеса, так как такой функционал они хотят чтобы пользователи использовали только с их 10х дороже серверными вариантами видеокарт). Требует хорошего прогружения в настройки linux, хотя бы чтобы исключить инициализацию устройство самим linux (некоторые устройства не любят включаться два раза подряд без железной перезагрузки).

    * Промежуточный вариант - проброс USB устройств. Это установка в гостевой операционной системе специального драйвера USB который по сети или каким-либо другим способом (например virtualbox usb при установке проприетарного guest additions) транслирует весь трафик, включая управляющий с хост машины для выбранного usb устройства или контроллера. Точно помню отдельные приложения для трансляции usb по сети между машинами даже без виртуализации, но лично сам не пользовался, гуглите решения обычно платные.

    * Проброс 'блочного устройства' (читай дисков или отдельных разделов, и даже файлов), в этом случае гостевая ос не имеет доступа к самому устройству, но только к данным на нем. Формально это просто подключение диска из файла (потому как даже в windows диск и раздел это буквально файл, который можно открыть fopen по специальному имени). Разные системы виртуализации дают разный интерфейс и удобство. qemu с тем же libvirt - удобнее чем к примеру virtualbox (там нужно в консоли специальную 'скрытую' команду использовать)

    p.s. Проброс видеоускорителя - есть еще протоколы spice но на сколько я знаю они не достаточно функциональны
    Ну и проброс всякой мелочовки типа клавиатура, мышь, планшет/сенсорный экран, мониторы. Это все виртуальные сущности, реальное железо тут не пробрасывается.

    p.p.s. драйвера windows для гостевых систем с каждым разом становятся все хуже и хуже, если я верно понял палки в колеса вставляет сама майкрософт, например windows 10 адекватно в virtualbox уже не работает gpu без глюков (я обхожу большинство проблем только с помощью rdp подключения)
    Ответ написан
    Комментировать
  • Почему виртуальная машина не получает ип хоста?

    @rPman
    В настройках сетевого устройства VirtualBox выбери тип сети - сетевой мост (bridge) и выбери сетевое устройство хоста, которое подключено к провайдеру (там где стоит dhcp сервер, раздающий нужный тебе ip)

    там же настраивается mac адрес, так как провайдер выдает ip адреса соответственно этому mac.
    Ответ написан
    2 комментария
  • Как использовать GNU GRUB в виртуальных машинах?

    @rPman
    однозначно причина в том что на реальной машине у тебя используется efi а в виртуалке legacy mbr (ну или наоборот но это странно), они используют разные процедуры загрузки.

    у тебя случайно там не два разных загрузчика типа grub и selinux (который только для legacy существует)?

    но вот почему именно у тебя по разному отрабатывает настройка пункта по умолчанию, хз, показал бы конфиг что ли
    Ответ написан
    Комментировать
  • Как копировать/переносить виртуальную машину с Linux без правки загрузчика?

    @rPman
    при инициализации диска, создании и форматировании раздела можно задать свой uuid, тебе где из этого надо?

    вот например так я это делаю с lvm
    pvcreate --norestorefile -u xxx-xxx-xxx-xxx-xx-xxxx /dev/sda2

    а так с файловой системой
    mkfs.xfs -m uuid=xxx-xxx-xxx-xxx-xx-xxxx /dev/sda1
    Ответ написан
    Комментировать
  • Процесс загрузки ОС на виртуальную машину не работает застряв на установке. Что делать чтобы продолжить?

    @rPman
    У меня все работает.
    Захожу на сайт Parrot OS, выбираю загрузки, Security Edition, Torrents, версия для VirtualBox,.. скачивается .ova файл, выбираю в интерфейсе VirtualBox в меню импорт машины, выбираю скачанный файл, импортирую, запускаю... все работает, все дополнения уже установлены...

    На каком шаге у тебя не так?
    Хост система linux, версия virtualbox 7.0
    Ответ написан
    1 комментарий
  • Как перенести виртуальную машину с virtualbox в qemu-kvm?

    @rPman
    Я вижу у тебя исходная машина со снапшотом, чтобы ничего не напутать, сделай резервную копию изнутри запущенной virtualbox машины, подсунув загрузочный диск какой-нибудь clonezilla или любого другого инструмента для резервного копирования.

    Восстанавливай точно так же изнутри виртуальной машины уже qemu.

    Еще вижу у тебя опция bus=virtio и model=virtio, она сработает только если в windows установлены драйвера (и от virtualbox могут не подойти!), убирай, пусть используются интелевские по умолчанию

    p.s. если в virtualbox использовался efi, то тебе нужен будет загрузочный диск для восстановления загрузчика
    Ответ написан
    Комментировать
  • Тонкий клиент для всего на свете?

    @rPman
    Можно и в каком то смысле даже нужно.

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

    - Так же ширина канала определит дополнительный лаг, наверное самый значительный...

    - Плюс тип приложений и динамика изменения экрана так же повлияет на этот лаг (например нативные win32 приложения при использовании rdp без большого количества изображений и canvas работают очень хорошо даже на слабом канале, но таких приложений почти не осталось, всем нужно рисовать UI самостоятельно)

    - Плюс разрешение (в пикселах) экрана, чем больше тем хуже (не линейно).

    - В довесок там есть еще лаг используемого софта на серверной стороне, причем значительно отличающийся от того какими приложениями ты управляешь удаленно (x2go/rdp/rdpx/vnc/teamviewer/anydesk/steamremote/rustdesk).

    В итоге, в каких то частных случаях (частых) этот подход очень удачен а в каких то превращает работу в мучение и желание купить нормальный компьютер и не париться.

    p.s. есть еще момент, серверный софт по лицензионным соглашениям часто лимитирует красивые решения для многих привычных комбинаций (например rdpx при использовании GPU) на очень дорогое железо (10х к цене по сравнению с десктопным) и стоимость владения таким удаленным терминалом становится выгодной только при маленьком количестве часов.

    Настоятельно советую попробовать всю свою типовую работу и развлечения и как следует посчитать итоговую стоимость. Так может получиться что по хорошей цене и с часовой оплатой сервера находятся на другой стороне планеты (а значит с лагами), а сервер в твоем городе можно взять в аренду только на full time и это будет стоить за год дороже своего домашнего компьютера.

    p.p.s. мое мнение, будущее за региональными или даже в пределах дома мини датацентрами. Существующие технологии позволяют без лагов транслировать изображение на 100-200 метров, дальше начинаются нюансы. Это как вместо того чтобы каждый в доме уродовал стены и ставил дорогие сплит системы для личных кондеционеров, просто покупать централизовано большие чилеры на крышу и сделать нормальную климат-систему на весь дом еще при строительстве (это уже используется).

    Буквально домовое товарищество покупает/арендует готовый кластер и все жильцы дома пользуются аппаратными тонкими клиентами, так же арендуя время и мощности. Сейчас есть для проблемы организационного характера, такие как налоги и лицензии на софт (они могу добавлять от 30% до сотен процентов к стоимости владения)
    Ответ написан
    1 комментарий
  • Как соединить виртуальную машину с сетью основной, чтобы другие компьютеры в локальной сети могли соединяться с ним?

    @rPman
    В настройках сетевых устройств сменить тип NAT на Сетевой мост, в этом случае машина будет получать ip адрес по тем же правилам что и любая другая машина в твоей сети
    Ответ написан
    Комментировать
  • Как запустить exe с сетевого диска?

    @rPman
    Точно помню что запуск .net (точнее clr) приложения с сетевого диска работает в особом контексте прав и для этого нужно очень глубого ковырять права доступа, понижая защиту всей машины значительно
    * для начала поковыряйся в настройках internet explorer! дада, свойства браузера в панели управления, безопасность, выбрать местная интрасеть, кнопка другое, там будет что то про .net, поэкспериментируй), точно помню что в gpedit были политики связанные с сетью и .net их тоже нужно ковырять
    Извини делал я это во времена winxp, уже не помню, кстати один из способов, в свойствах приложения можно включить режим совместимости (будет запрос на превышение прав, это обходится другим способом, через планировщик задач)
    * еще советуют включить поддержку smb1, не уверен что это актуально но тут пишут что какраз для win10 это помогает.

    Настоятельно не рекомендую так делать! это значительное понижение безопасности машины. Лучше копируй приложение на локальный диск, но при запуске делай текущим сетевой каталог. Будут сложности с .dll но это другой вопрос (поместить их в PATH, кстати так же на локальном диске)

    p.s. еще есть вариант, не подходит для многопользовательского доступа к приложению, только монопольный, в сети размещай не сами файлы а файл образа диска .vhd (создается в управление мой компьютер - Управление дисками), этот файл можно с помощью diskpart монтировать из батника, и файлы на этом диске будут уже считаться локальными (может поплохеть, если во время записи оборвется связь, ищи способ отключить кеширование записи в свойствах этого диска)
    Ответ написан
    Комментировать
  • Как создать одну виртуальную машину использующую несколько серверов?

    @rPman
    Виртуализация не позволяет объединять мощности!

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

    Когда то давно для linux были такие технологии, когда оперативная память процесса на лету синхронизировалась между нодами кластера и процесс, изначально не адаптированный к работе в кластере, использовал сразу несколько физических компьютеров для работы. Эффективность результата была очень низкой, высокие требования к пропускной способности сети (гигабитной сети недостаточно) и очень слабое масштабирование, свело на нет смысл ее использования... я даже не могу найти названия этой технологии, по крайней мере не гуглится.

    Для того чтобы эффективно использовать одновременно нескольких компьютеров, процесс должен быть изначально разработан с этой целью, самостоятельно должен рулить распределением задач и памяти.
    Ответ написан
    9 комментариев
  • Xen. Как задать права доступа пользователей к виртуальным машинам в ubuntu для xen?

    @rPman
    через sudo, либо пропиши все используемые пользователями команды либо заверни все в скрипт и его разреши запускать только определенным пользователячм
    Ответ написан
  • Почему не удается подключиться к виртуалке по SSH?

    @rPman
    с сетью NAT
    зачем создал себе проблем?
    настрой сеть как сетевой мост между своей сетевой картой, тогда для всей твоей локальной сети (если она есть) виртуальная машина будет еще одна, с полным доступом.

    если локальной сети нет, то ее придется создать, например добавив loopback драйвер фиктивной сети на хост системе и настроить уже к нему сетевой мост.
    Ответ написан
    Комментировать
  • Как перенаправить звонок в виртуальную машину?

    @rPman
    Попробуй установить приложение на реальном железе, завершить регистрацию, а затем перенести в виртуальное окружение через backup/restore (к сожалению доступно только гугловское), при наличии root файлы приложения можно будет тупо скопировать
    Ответ написан
    Комментировать
  • Чем загрузчик в виртуальных процессорах отличается от реального? Какой жизненный цикл запущенной ОС на виртулальном?

    @rPman
    Виртуальная машина jvm и виртуальный процессор того же qemu это очень разные вещи.

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

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

    По умолчанию вся память выделенная вм будет использована (на самом деле до первого доступа вм к ней) поэтому если внутри вм выделить и освободить память, обратно на хост системе она не освободится, но можно установить драйвера внутри вм , которые будут об этом сообщать в хост там она будет освобождаться, позволяя нескольким вм 'использовать' больше памяти чем доступно, в.т.ч. используя своп файл подкачки.
    Ответ написан
    Комментировать
  • Как можно сделать виртуальную «флешку», которая будет отображаться в проводнике windows 10?

    @rPman
    Аналог linux-овму fusefs, но для windows - winfsp.dev
    Но он на c++!

    чтобы завести это на питоне, нужно писать прослойку, немного устаревшая статья но идея та же (в статье описаны обоа направления python -> c++ и c++ -> python)
    Ответ написан
    Комментировать
  • Как запустить программу с GUI на гостевой машине в VirtualBox?

    @rPman
    Безрамочный режим? у virtual box есть 'режим интеграции' (в гостевой ОС должны быть установлены virtual box additionals), в этом режиме все меню и окно virtualbox будут скрыты

    К сожалению они все еще будут показаны пока идет загрузка ОС, но можно попробовать схитрить и запускать в скрытом режиме, а затем через какое то время его показывать, я не нашел как это сделать из командной строки, но если кликнуть в интерфейсе на машину она будет показана, значит команда есть. Если машину, находящуюся в режиме headless сделать savestate а затем ее снова startvm, то она выйдет из режима headless, это конечно криво но работоспособно.

    Гостевое приложение будет работать как хост приложение, пока пользователь не нажмет системные кнопки типа ctrl+esc или alt+tab (это кстати меняется), так же при попытке переместить окно будет виден след фона гостевой ОС
    Ответ написан
  • Как скрыть виртуальное пространство от андроид приложений?

    @rPman
    Патчить игру.

    Способы детектирования виртуалки разнообразны, сначала нужно понять, как именно игра проводит обнаружение, вот первый же пример вопроса

    Можно попробовать с помощью magisc модуля (установка на виртуалку та еще задачка), там в теме (начинай смотреть с конца) как раз обсуждают представляться не виртуалкой
    Ответ написан
    Комментировать
  • Какие есть виртуальные среды у windows 10?

    @rPman
    С хорошей долей везения поможет другой пользователь windows, причем пробуй не только правая кнопка запустить под указанным пользователем, а буквально смена пользователя без завершения работы (такой режим хотя бы для установки приложения, запускать можно уже по правой кнопке).

    Приложение должно быть установлено для второго пользователя отдельно в другой каталог, т.е. для каждого экземпляра установки свой пользователь и свой набор ярлыков (в последствии, чтобы не хранить дублирующие данные, можно попробовать оптимизировать место, воспользовавшись символическими и жесткими ссылками ntfs, когда один и тот же каталог и файл размещены в разных каталогах (в FAR их можно делать по atl+f6, удобнее чем утилитой командной строки, но за автообновлениями программы придется следить самому)

    p.s. когда то с помощью этого метода и ibik aster на одной машине играли два человека в одни и те же онлайн игры без их взлома (с каждой шел свой античит), не уверен что теперь так можно но попробовать стоит
    Ответ написан