Czy zainstalować maszynę wirtualną jako użytkownik inny niż root?

15

Czy można zainstalować oprogramowanie maszyny wirtualnej jako użytkownik inny niż root i uruchomić go?

Które maszyny wirtualne można zainstalować bez dostępu do konta root?

Jeśli nie jest to możliwe, jakiej najlżejszej maszyny wirtualnej można użyć dla kilku maszyn wirtualnych z systemem Windows XP SP3?

Prix
źródło

Odpowiedzi:

5

Każda rzeczywista wirtualizacja wymaga niskiego poziomu dostępu do procesora, dlatego root musi go zainstalować. Po zainstalowaniu nie musisz być rootem, aby go uruchomić. Prawdopodobnie możesz zainstalować i uruchomić emulator jako użytkownik inny niż root, taki jak bochs, lub adapter, taki jak wine. Jeśli masz na myśli konkretną aplikację systemu Windows, możesz po prostu uruchomić ją pod Wine (być może).

Keith
źródło
możliwe, ale musiałbym poprosić o konwersję aplikacji na mono, aby również działała, co byłoby dużym problemem, nawet nie wiedząc, czy to zrobią, dzięki za odpowiedź. Czy zdarzyło Ci się wiedzieć, jakie są najlżejsze maszyny wirtualne do prostego uruchamiania systemu Windows XP SP3 z 2 naprawdę małymi aplikacjami wykorzystującymi pamięć?
Prix
Prawdopodobnie najlepszym rozwiązaniem będzie odtwarzacz VMware . Jest wolny od VMware.
Keith
11

W przypadku KVM potrzebujesz dostępu do urządzenia /dev/kvm. Jeśli użytkownik może odczytywać / zapisywać dane na tym urządzeniu, wówczas jako użytkownik można uruchamiać maszyny wirtualne oparte na KVM.

W większości dystrybucji członkowie kvmgrupy mają dostęp do tego urządzenia, więc wszystko, co musisz zrobić, to dodać użytkownika do kvmgrupy.

W przypadku większości innych technologii przyspieszonych konieczne będzie załadowanie modułów jądra (w tym virtualbox i VMWare). To prawie na pewno wymaga dostępu na poziomie administratora.

Możesz uruchamiać nieprzyspieszone technologie wirtualizacji jak każdy użytkownik. Na przykład qemu w trybie nieprzyspieszonym. Należy pamiętać, że będzie to bardzo powolne w porównaniu do przyspieszonej wirtualizacji.

jmtd
źródło
to nie przyśpieszona informacja była przydatna;)
Prix
7

Tryb użytkownika Linux to rozwiązanie do wirtualizacji systemu Linux, które działa całkowicie w przestrzeni użytkownika - nie są wymagane żadne uprawnienia roota.

Może jednak uruchamiać gościa systemu Linux tylko na hoście systemu Linux, więc nie jest odpowiednie, jeśli chcesz uruchomić cokolwiek innego.

Riccardo Murri
źródło
4

Maszyna wirtualna potrzebuje dość niskiego poziomu dostępu do procesora (i innego sprzętu), aby była wydajna. Dlatego nie zobaczysz żadnego dobrze działającego oprogramowania VM, które można zainstalować bez uprawnień użytkownika root.

W przypadku lekkich maszyn wirtualnych lekkość została osiągnięta jedynie poprzez uwzględnienie potrzebnych funkcji. Wymaga to pewnej wiedzy na temat systemu operacyjnego, który zostanie uruchomiony, dlatego lekkie maszyny wirtualne typu open source ( Plex86 , LilyVM ) obsługują tylko systemy operacyjne typu open source. Zgodnie z tą logiką może być tak, że Microsoft Virtual PC jest lżejszy niż VirtualBox / VMWare / itp. ale tak naprawdę nie wiem. VirtualBox jest dostępny w wersji open source, jest całkiem użyteczny i zawsze był wystarczający do moich celów (ale próbowałem innych).

StackExchange zasmuca dancek
źródło
2

Virtualbox 4.0.8 musi być zainstalowany jako root offcourse, ale później możesz pozwolić użytkownikom tworzyć własne maszyny wirtualne. Musisz być tylko członkiem grupyvboxusers

usermod -G vboxusers USERNAME

Spójrz na ten link , fajny artykuł, jak uruchomić go bez głowy, prosto z powłoki. Naprawdę też kopię, że obsługuje protokół RDP, co oznacza, że ​​możesz po prostu użyć rdesktopdo połączenia.

Bas Keur
źródło
2

QEmu jest w stanie to zrobić. Zrobiłem to kilka razy. Jednak niezbyt wydajne

Marco
źródło
2

1) Odpowiedź trzech linii

Aby użyć moich wstępnie skompilowanych obrazów / skompilowanej wersji qemu, pobierz ją stąd , a następnie rozpakuj:

tar -xvzf qemu_packed.tar.gz

możesz również pobrać mój obraz debian 8 (1.6G) stąd :

tar -xvzf test01.qcow2.tar.gz

i wreszcie biegnij

./command.sh

Powinieneś mieć działającego Debiana 8, w trybie tekstowym, z portem ssh otwartym w gościu hosta na porcie 22222. Możesz zalogować się przy użyciu użytkownika „root” i hasła „root”.

2) Dłuższa odpowiedź, zrób te zdjęcia samodzielnie

QEMU jest rzeczywiście rozwiązaniem, które pozwala mi zainstalować własny obraz linuksowy na serwerze, na którym nie miałem dostępu do roota. Jest to bardzo przydatne, używam go na przykład do wykonania wstecznego ssh bez ujawnienia mojego głównego hasła użytkownika lub w celach edukacyjnych. Ale rzeczywiście, ponieważ nie można używać KVM do prawdziwej wirtualizacji bez konta root, będziesz mógł wykonywać tylko emulację, co może być dość nieefektywne (ale w przypadku operacji w wierszu poleceń nigdy tak naprawdę nie widziałem narzutu).

2.1) Opakowanie qemu

Oto opis tego, jak postępuję. Pierwszym krokiem jest uczynienie qemu „przenośnym”, tj. Użytecznym na serwerze bez dostępu do konta root. Aby to zrobić, masz kilka metod, postaram się je przedstawić, abyś mógł wybrać tę, którą wolisz.

2.1.a) Metoda 1: pobierz dostępny plik .deb

To rozwiązanie może być bardzo szybkie do zastosowania (w zasadzie, jeśli działa, wystarczy jedno polecenie), ale ponieważ mój skrypt może być wadliwy / może zapomnieć o lib, ręczne pobranie wszystkich plików binarnych może potrwać dość długo ... inną zaletą tej metody jest to, że można ją uruchomić w trybie innym niż root, bezpośrednio na serwerze. Pomysłem na uzyskanie plików binarnych qemu tutaj jest pobranie pliku .deb / .rpm (z apt lub ze stron internetowych, które obsługują .deb), wypakowanie go, sprawdzenie zależności bibliotek za pomocą lddi pobranie wszystkich .debzależności, które są jeszcze nieobecny na komputerze w celu wyodrębnienia ich ( .soplików). Ponieważ może być dość długi i powtarzalny, stworzyłem mały skrypt, ale jeśli jesteś odważny, możesz to wszystko zrobić ręcznie ... To po prostu zajmuje trochę czasu. Aby go użyć, zapisz ten skrypt w plikucreate_qemu_binaries.sh:

#!/usr/bin/env bash
mkdir qemu_extract
cd qemu_extract
echo "########## Downloading qemu... ##########"
apt-get download qemu-system-x86
echo "########## Extracting qemu... ##########"
dpkg -x qemu-system-*.deb .
mkdir -p qemu_packed/lib
cp usr/bin/qemu-system-x86_64 qemu_packed
echo "########## Copy libs... ##########"
ldd usr/bin/qemu-system-x86_64 | grep "=>" | grep -v "not found" | awk '{print "cp "$3" qemu_packed/lib/"}' | bash
mkdir not_found
cd not_found
echo "########## Get not found libs... ##########"
ldd ../usr/bin/qemu-system-x86_64 | grep "not found" | awk '{print $1}' > not_found.txt
echo "########## Download not found libs... ##########"
for lib in $(cat not_found.txt); do echo "=== Dealing with $lib ==="; apt-file search --regexp "/${lib}\$" | sed 's/:.*//' | xargs apt-get download; done
echo "########## Extracting not found libs... ##########"
ls *.deb | xargs -I{} dpkg -x "{}" .
echo "########## Copying not found libs... ##########"
find . | grep ".so" | xargs -I{} cp "{}" ../qemu_packed/lib
cd ..
echo "########## Getting pc-bios... ##########"
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
echo "########## Finished !!! ##########"
echo "The output file should be in the folder qemu_extract/qemu_packed."
echo "Once you have a filesystem image, you can run it using:"
echo "$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -display curses -k fr -redir tcp:22222::22"
echo "Don't forget to replace <your image>"

i uruchom go za pomocą:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

wszystko działa dobrze, na końcu powinieneś mieć w folderze ./qemu_extract/qemu_packed/jeden plik qemu-system-x86_64(główny plik binarny), jeden folder lib(biblioteki, które trzeba zabrać qemu) i jeden folder pc-bios, zestaw plików, które qemunależy uruchomić. Następnie możesz uruchomić qemu, używając (nie zapomnij zastąpić obrazem systemu plików):

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -redir tcp:22222::22

Cieszyć się ! (jeśli skrypt nie działa dla Ciebie, nie wahaj się mnie zapytać, przetestowałem go tylko na dwóch komputerach i wypełnij go do usunięcia, redirjeśli nie potrzebujesz przekazywania ssh między hostem a odgadnięciem)

2.1.b) Metoda 2: jeśli masz dostęp do komputera z dostępem roota

Pierwsza metoda wymaga komputera z dostępem do katalogu głównego (lub qemuzainstalowanego). Najpierw zainstaluj qemuza pomocą czegoś takiego

sudo apt install qemu-system-x86

a następnie zlokalizuj ścieżkę bezwzględną qemu:

$ which qemu-system-x86_64 
/usr/bin/qemu-system-x86_64

Następnie utwórz folder, aby go umieścić:

mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed

i pobierz listę bibliotek powiązanych z qemu:

ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash

teraz musimy uzyskać użycie BIOS przez qemu. Pliki są dostępne w twoim systemie, ale nie wiem, dlaczego znajdują się w różnych folderach, więc myślę, że łatwiej jest uzyskać je ze źródeł:

git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed

Teraz powinno działać, możesz skopiować te pliki na maszynie innej niż root i po prostu uruchomić qemuprzy użyciu następującego wiersza (nie zapomnij zastąpić obrazu):

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none

2.1.c) Metoda 3: ze źródeł

Możesz także skompilować źródła, ale jeśli nie masz zainstalowanych wszystkich bibliotek, może być trudne uniknięcie korzystania z komputera zrootowanego do kompilacji qemu. Ale myślę, że jest to trochę bardziej niezawodne, jeśli powyższe dwie metody nie działają. Następnie po skompilowaniu pobierz plik wykonywalny i wykonaj tę samą sztuczkę, co powyżej, aby uzyskać biblioteki (używając ldd, wszystkie biblioteki powinny już znajdować się na komputerze) i plik pc-bios. I ponownie uruchom go za pomocą tego samego polecenia.

2.3) Stwórz własny obraz

Jeśli nie chcesz używać gotowego obrazu systemu plików, postępuj zgodnie z licznymi samouczkami, używając powyższych poleceń zamiast qemu/qemu-system-x86_64! Uwaga: jeśli chcesz również użyć qemu-imgdo tworzenia obrazów jako użytkownik inny niż root, wykonaj ten sam proces, jak powyżej!

Cieszyć się !

Uwaga: jeśli chcesz użyć wyświetlania przekleństw, aby uruchomić go na serwerze bez graficznego interfejsu użytkownika, powinieneś dodać do swojego obrazu linię w opcji uruchamiania, aby nie włączała bufora ramek w /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"

(najważniejszy jest ostatni, nie jestem pewien, czy jest potrzebny). Jak również

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

dzięki czemu grub pozostanie w trybie tekstowym. Możesz także włączyć tryb tekstowy w systemie, jeśli to nie wystarczy.

tobiasBora
źródło
1
Proszę, facet, który postawił mnie -1, czy mógłbyś mi wyjaśnić dlaczego?
tobiasBora
Nie mam pojęcia, ale to świetnie, dziękuję.
wbkang,