Czy mogę emulować jakiś sprzęt dla maszyny wirtualnej, uruchamiając program w systemie operacyjnym hosta?

4

Więc...

Istnieją maszyny wirtualne, które w zasadzie uruchamiają system operacyjny w symulowanym środowisku (co może, ale nie musi odpowiadać rzeczywistemu sprzętowi obecnie obecnemu). Istnieją pewne możliwości podłączenia rzeczywistych urządzeń sprzętowych (np. Napędów USB) do maszyny wirtualnej.

Są też tak zwane „wirtualne urządzenia USB” (np. Arduino Leonardo), które można zaprogramować tak, aby odpowiadały jak rzeczywiste urządzenia USB, ale w zasadzie są to mikroukłady na drugim końcu kabla USB, który uruchamia jakiś program ( mogą lub nie mogą być połączone z innymi komponentami, dla tego pytania załóżmy, że nie są).

Oczywiście można podłączyć wirtualne urządzenie USB do maszyny wirtualnej (ponieważ są one częścią prawdziwego sprzętu).

Czy byłoby możliwe pominięcie części sprzętowej i uruchomienie niestandardowego programu w systemie operacyjnym hosta, który łączy się z maszyną wirtualną tak, jakby to było prawdziwe urządzenie sprzętowe (powiedzmy, jako wtyczka do oprogramowania do wirtualizacji lub korzystanie z programu wolnostojącego przy użyciu niektórych API)?

Jeśli tak, czy istnieją jakieś istniejące rozwiązania dla dalszych odniesień?

Jeśli nie, dlaczego maszyny wirtualne nie zapewniają takiej możliwości (np. Czy są jakieś ograniczenia sprzętowe)?

hoffmale
źródło
QEMU może to zrobić. // Twój opis „wirtualnego” urządzenia polega na tym, jak działają prawie wszystkie urządzenia USB. Tworzenie ASIC do obsługi protokołu jest w większości przypadków zbyt kosztowne. Lepszym kryterium może być to, czy dotyczy to sprzętu warstwy łącza.
Daniel B
hoffmale, czy moja odpowiedź jest zadowalająca?
music2myear
Cóż, to odpowiada na moje główne pytanie :) Teraz muszę znaleźć hiperwizora ze wspomnianą funkcjonalnością (vmware oferuje tylko gniazda sieciowe i ogólne porty COM niepokojące)
hoffmale

Odpowiedzi:

5

Krótka odpowiedź: Tak.

To naprawdę zależy od Hypervisora.

Cały wirtualny sprzęt jest dostarczany do maszyn wirtualnych przez Hypervisor. Jeśli Hypervisor obsługuje wtyczki i dodawanie wirtualnego sprzętu za pośrednictwem tych wtyczek, to tak, możesz dodać wirtualny sprzęt do swojego środowiska w ten sposób.

W moim osobistym doświadczeniu ESXi firmy VMware wspiera to. Możesz pobrać i zainstalować wirtualne urządzenia sieciowe, takie jak przełączniki firmy Cisco, i sądzę, że pamiętam, że widziałem także inny specjalistyczny sprzęt dostępny w tym produkcie, choć minęło już kilka lat, odkąd zarządzałem wirtualnym stosem VMware.

Nie wiem, czy jakikolwiek inny Hypervisors to obsługuje, ale domyślam się, że HyperV Microsoftu prawdopodobnie tak samo postępuje, ponieważ starają się utrzymać parzystość funkcji z VMware tak bardzo, jak to możliwe.

Proponuję zajrzeć do różnych API VMware jako dobrego miejsca do rozpoczęcia.

Jeśli używasz określonego hiperwizora, musisz przejrzeć dokumentację tego systemu i określić, czy mają one podobną zdolność. Każdy hiperwizor będzie inny, a oprogramowanie napisane dla jednego jest mało prawdopodobne, aby działało w innym bez znacznych modyfikacji.

music2myear
źródło