Klonujemy komputer - maszyny wirtualne

opublikowano przez marcinw w dniu 2010-07-29

Wiele osób chciałoby mieć możliwość pracy z różnymi aplikacjami tak, aby nie wpływały one na ich system operacyjny i inne programy. Jak tego dokonać ? Najwyższy czas poznać maszyny wirtualne.

Po dłuższym używaniu komputera wielu użytkowników  dochodzi do wniosku, że chciałoby mieć możliwość przetestowania czy używania jakichś programów "w odosobnieniu". Dzieje się tak niezależnie od tego czy pracują z Windows, jakąś dystrybucją Linuksa, czy innym systemem operacyjnym. Jak tego dokonać ?

W artykule przedstawione zostały wady i  zalety przykładowych darmowych rozwiązań. Została też podjęta próba oceny tego, jak bardzo spowalniają one aplikacje.

Podstawowe funkcje kontroli udostępniane są przez praktycznie każdy współczesny system operacyjny - mamy choćby możliwość ustawiania uprawnień w obecnych systemach plików. Najczęściej jest to niestety tylko kontrola na poziomie użytkowników.

Lukę tę wypełniają tzw. piaskownice. Działają między systemem operacyjnym oraz uruchomionym programem i  pozwalają dokładnie określić, co może zrobić ten ostatni. Ich charakterystyczną cechą jest możliwość "oszukiwania" programów tak, że przy próbie zapisywania pliki w jakiejś lokalizacji robią to fizycznie w  innej (np. zamiast katalogu z systemem używany jest wskazany w  konfiguacji).

Jedną z najpopularniejszych aplikacji tego typu jest SandBoxie (darmowa do zastosowań niekomercyjnych). Podobną  funkcjonalność mają coraz częściej pakiety zabezpieczające Internet Security (np. Safe Run w Kaspersky Internet Security). Rozwiązania tego typu przenikają nie tylko do jądra linuksowego, ale są również fabrycznie wbudowane w "okienka" Microsoftu. Można przyjąć, że pewną formą implementacji tej koncepcji jest np. Protected Mode w Internet Explorerze w systemach Vista/7.

Istnieją też maszyny wirtualne. Są uruchamiane w praktycznie niezmodyfikowanym systemie operacyjnym rzeczywistej maszyny (tzw. gospodarza czy hosta). Pozwalają stworzyć cały "oddzielny" komputer - nazywany często gościem - w  którym instaluje się system operacyjny, a w nim uruchamia programy.

Maszyny wirtualne często dają możliwość skorzystania np. z podłączonych do gospodarza urządzeń USB, oczywiście poprzez dodane sterowniki. Niektóre z  nich pozwalają stworzyć systemy zaliczane do innej platformy sprzętowej - dzieje się tak gdy naśladowane jest również działanie procesora - czasem mówi się wtedy o emulatorze. Wiele z opisywanych dalej rozwiązań pozwala również na działanie 64-bitowych systemów operacyjnych gościa w sytuacji, gdy system gospodarza jest 32-bitowy.

Można jeszcze spotkać rozwiązania parawirtualizacyjne, takie jak darmowy Xen albo komercyjny Hyper-V. Zawierają przede wszystkim tzw. hypervisor, który w wielkim uproszczeniu jest systemem operacyjnym uruchamianym na rzeczywistym sprzęcie, i który dostarcza pewnych narzędzi do tworzenia maszyn i  obsługi sprzętu. Pod jego kontrolą działa zawsze jeden system mający bezpośredni dostęp do zasobów (w Xen mówimy o  tzw. domenie 0, spotyka się też określenie partycji nadrzędnej) oraz inne systemy operacyjne bez takich uprawnień - najczęściej odpowiednio zmodyfikowane.

Dalsze opisy związane będą przede wszystkim z platformą x86 (PC) i  darmowymi maszynami wirtualnymi dostępnymi w Windows i Ubuntu - sprawdzone zostanie ich współdziałanie z Ubuntu 10.04 (uwagi te też praktycznie w całości będą odnosić się również do Mint 9). Będzie też kilka słów  o DOS, Windows XP i Windows 7. Artykuł można potraktować jako uzupełnienie wcześniejszego tekstu autora o  wspomnianych dystrybucjach linuksowych.