Installare la macchina virtuale come non root?


15

È possibile installare qualsiasi software di macchina virtuale come utente non root ed eseguirlo?

Quali VM sono possibili da installare senza necessità di accesso root?

Se non fosse possibile quale sarebbe la macchina virtuale più leggera da usare per alcune macchine virtuali con Windows XP SP3?

Risposte:


5

Qualsiasi virtualizzazione reale necessita di un accesso di basso livello alla CPU, pertanto root deve installarla. Una volta installato non è necessario essere root per eseguirlo. Probabilmente potresti installare ed eseguire un emulatore come non root, come bochs o un adattatore come wine. Se hai in mente un'app specifica per Windows, puoi semplicemente eseguirla con wine (forse).


possibile ma avrei dovuto richiedere che un'applicazione venisse convertita in mono affinché anch'essa funzionasse, il che sarebbe un grosso problema, in realtà non saprei nemmeno se lo farebbero davvero, grazie per la risposta. Ti capita di sapere quali sono le macchine virtuali più leggere per eseguire semplicemente windows xp sp3 con 2 app di utilizzo della memoria davvero ridotte?
Prix

Probabilmente la tua scommessa migliore sarebbe il lettore VMware . È gratuito da VMware.
Keith,

11

Per KVM , è necessario accedere al dispositivo /dev/kvm. Se il tuo utente può leggere / scrivere su questo dispositivo, puoi eseguire macchine virtuali basate su KVM come tuo utente.

Nella maggior parte delle distribuzioni i membri del kvmgruppo hanno accesso a questo dispositivo, quindi tutto ciò che devi fare è aggiungere il tuo utente al kvmgruppo.

Per la maggior parte delle altre tecnologie accelerate, avrai bisogno di moduli del kernel caricati (questo include virtualbox e VMWare). Ciò richiede quasi certamente l'accesso a livello di root.

Puoi eseguire tecnologie di virtualizzazione non accelerata come qualsiasi utente. Ad esempio, qemu in modalità non accelerata. Tieni presente che sarà molto lento rispetto alla virtualizzazione accelerata.


ecco che le informazioni non accelerate sono state utili;)
Prix

7

Modalità utente Linux è una soluzione di virtualizzazione Linux che funziona interamente nello spazio utente, senza privilegi di root richiesti.

Tuttavia, può eseguire solo un guest Linux all'interno di un host Linux, quindi non è adatto se si desidera eseguire qualcos'altro.


4

Una macchina virtuale necessita di un accesso di livello piuttosto basso al processore (e altro hardware) per essere efficiente. Pertanto non vedrai alcun software VM ben funzionante che può essere installato non root.

Per quanto riguarda le macchine virtuali leggere, la leggerezza si ottiene includendo solo le funzionalità necessarie. Ciò richiede una certa conoscenza del sistema operativo che verrà eseguito, quindi le VM leggere open-source ( Plex86 , LilyVM ) supportano solo i sistemi operativi open-source. In base a questa logica, è possibile che Microsoft Virtual PC sia più leggero di VirtualBox / VMWare / ecc. ma davvero non lo so. VirtualBox è disponibile in open-source, è abbastanza utilizzabile ed è sempre stato sufficiente per i miei scopi (ma ne ho provati altri).


2

Virtualbox 4.0.8 deve essere installato come root offcourse, ma in seguito è possibile consentire agli utenti di creare le proprie VM. Devi solo essere un membro del gruppovboxusers

usermod -G vboxusers USERNAME

Dai un'occhiata a questo link , bell'articolo su come eseguirlo senza testa, direttamente dalla shell. Ho anche scoperto che supporta il protocollo RDP, il che significa che puoi semplicemente usare rdesktopper connetterti.


2

QEmu è in grado di farlo. L'ho fatto più volte. Non estremamente performante però


2

1) Risposta a tre righe

Per usare le mie immagini predefinite / versione compilata di qemu, scaricalo da qui , quindi decomprimilo:

tar -xvzf qemu_packed.tar.gz

puoi anche scaricare la mia immagine debian 8 (1.6G) da qui :

tar -xvzf test01.qcow2.tar.gz

e finalmente corro

./command.sh

Dovresti avere un Debian 8 funzionante, in modalità testo, con la porta ssh aperta nel guest host alla porta 22222. Puoi accedere usando l'utente "root" e la password "root".

2) Risposta più lunga, crea queste immagini da solo

QEMU è davvero una soluzione che mi consente di installare la mia immagine Linux su un server su cui non avevo accesso root. È molto utile, lo uso ad esempio per fare reverse ssh senza rivelare la mia password dell'utente principale o per scopi didattici. Ma in effetti, poiché non puoi usare KVM per la virtualizzazione reale senza un account root, sarai in grado di fare solo l'emulazione, che può essere abbastanza inefficiente (ma per le operazioni da riga di comando, non ho mai visto l'overhead).

2.1) Confezione qemu

Ecco la descrizione di come procedo. Il primo passo è rendere qemu "portatile", cioè utilizzabile sul server senza accesso root. Per fare ciò hai diversi metodi, cercherò di presentarli in modo che tu possa scegliere quello che preferisci.

2.1.a) Metodo 1: scarica il .deb disponibile

Questa soluzione può essere davvero rapida da applicare (in pratica se funziona, in 1 comando lo ottieni), ma poiché il mio script potrebbe essere difettoso / potrebbe dimenticare qualche lib, può essere piuttosto lungo scaricare manualmente tutti i binari ... altro vantaggio di questo metodo è che è possibile eseguirlo in modalità non root, direttamente sul server. L'idea di ottenere i binari di qemu qui è di ottenere il file .deb / .rpm (da apt o dai siti Web online che ospitano .deb), estrarlo, controllare le dipendenze delle librerie utilizzando ldde scaricare tutte .deble dipendenze che sono non già presente sul computer per estrarli (i .sofile). Dato che può essere piuttosto lungo e ripetitivo, ho creato un piccolo script, ma se sei coraggioso, puoi farlo tutto manualmente ... Ci vuole solo tempo. Per usarlo, salva questo script in un filecreate_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>"

ed eseguirlo usando:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

funziona tutto bene, alla fine dovresti avere nella cartella ./qemu_extract/qemu_packed/un file qemu-system-x86_64(il file binario principale), una cartella lib(le librerie che devono essere prese con qemu) e una cartella pc-bios, un insieme di file che qemudevono essere eseguiti. È quindi possibile eseguire qemuutilizzando (non dimenticare di sostituire con l'immagine del filesystem):

$ 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

Godere ! (se lo script non funziona per te, non esitare a chiedermelo, l'ho testato solo su due computer e riempilo gratis per rimuoverlo redirse non hai bisogno di inoltro ssh tra l'host e l'ipotesi)

2.1.b) Metodo 2: se si accede a un computer con accesso root

Il primo metodo richiede un computer con accesso root (o qemuinstallato). Prima installa qemuusando qualcosa di simile

sudo apt install qemu-system-x86

e quindi individuare il percorso assoluto di qemu:

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

Quindi, crea una cartella per metterla:

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

e ottieni l'elenco delle librerie collegate a qemu:

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

ora, dobbiamo far usare il BIOS da qemu. I file sono disponibili sul tuo sistema, ma non so perché si trovano in cartelle diverse, quindi penso che sia più facile ottenerli dai sorgenti:

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

Ora, dovrebbe funzionare, puoi copiare questi file sul computer non root ed eseguire semplicemente qemuusando la seguente riga (non dimenticare di sostituire l'immagine):

$ 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) Metodo 3: dalle fonti

Puoi anche compilare i sorgenti, ma se non hai installato tutte le librerie, potrebbe essere complicato evitare di usare un computer rootato per compilare qemu. Ma credo che sia un po 'più affidabile se i due metodi sopra non funzionano. Quindi, una volta compilato, ottieni il file eseguibile e fai lo stesso trucco di cui sopra per ottenere le librerie (usando ldd, tutte le librerie dovrebbero essere già sul computer) e il file pc-bios. E ancora, eseguilo con lo stesso comando.

2.3) Crea la tua immagine

Se non vuoi usare un'immagine di filesystem preconfigurata, segui semplicemente i numerosi tutorial usando i comandi sopra al posto di qemu/qemu-system-x86_64! NB: se vuoi usare anche qemu-imgper creare immagini come non root, segui lo stesso procedimento sopra!

Godere !

NB: se si desidera utilizzare il display curses per eseguirlo su un server senza GUI, è necessario aggiungere nell'immagine una riga nell'opzione di avvio in modo che non attivi il frame buffer in /etc/default/grub:

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

(il più importante è l'ultimo, non sono sicuro che sia necessario). Così come

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

in modo che grub rimanga in modalità testo. Puoi anche abilitare la modalità testo in systemd se non è abbastanza.


1
Per favore, ragazzo che mi ha messo -1, potresti spiegarmi perché?
TobiasBora,

Non ne ho idea ma è fantastico, grazie.
wbkang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.