1) Drei Zeilen antworten
Um meine vorgefertigten Images / kompilierten Versionen von qemu zu verwenden, laden Sie sie hier herunter und dekomprimieren Sie sie:
tar -xvzf qemu_packed.tar.gz
Sie können auch mein Debian 8-Bild (1.6G) von hier herunterladen :
tar -xvzf test01.qcow2.tar.gz
und endlich rennen
./command.sh
Sie sollten ein funktionierendes Debian 8 im Textmodus haben, bei dem der SSH-Port im Host-Gast an Port 22222 geöffnet ist. Sie können sich mit dem Benutzer "root" und dem Kennwort "root" anmelden.
2) Längere Antwort, mache diese Bilder selbst
QEMU ist in der Tat eine Lösung, mit der ich mein eigenes Linux-Image auf einem Server installieren kann, auf dem ich keinen Root-Zugriff hatte. Es ist sehr nützlich, ich verwende es zum Beispiel, um ssh umzukehren, ohne mein Hauptbenutzer-Passwort preiszugeben, oder zu Bildungszwecken. Da Sie KVM jedoch nicht für eine echte Virtualisierung ohne Root-Konto verwenden können, können Sie nur eine Emulation durchführen, die recht ineffizient sein kann (bei Befehlszeilenvorgängen habe ich den Overhead jedoch nie wirklich gesehen).
2.1) Pack qemu
Hier ist die Beschreibung, wie ich vorgehen soll. Der erste Schritt ist, qemu "portabel" zu machen, dh auf dem Server ohne Root-Zugriff nutzbar zu machen. Um dies zu tun, haben Sie mehrere Methoden, ich werde versuchen, sie vorzustellen, so dass Sie die von Ihnen bevorzugte auswählen können.
2.1.a) Methode 1: Laden Sie die verfügbare .deb herunter
Diese Lösung lässt sich sehr schnell anwenden (im Grunde genommen, wenn sie funktioniert, erhalten Sie sie mit einem Befehl), aber da mein Skript möglicherweise fehlerhaft ist / eine gewisse Lib vergisst, kann es ziemlich lang sein, alle Binärdateien manuell herunterzuladen ... Ein weiterer Vorteil dieser Methode ist, dass Sie sie im Nicht-Root-Modus direkt auf dem Server ausführen können. Die Idee, qemu-Binärdateien hier abzurufen, ist, die .deb / .rpm-Datei (von apt oder von den Online-Websites, auf denen .deb gehostet wird) abzurufen, sie zu extrahieren, die Bibliotheksabhängigkeiten zu überprüfen ldd
und alle .deb
Abhängigkeiten herunterzuladen , die vorhanden sind nicht bereits auf dem Computer vorhanden, um sie zu extrahieren (die .so
Dateien). Da es ziemlich lang und sich wiederholend sein kann, habe ich ein kleines Skript erstellt, aber wenn Sie mutig sind, können Sie das alles manuell tun ... Es dauert nur einige Zeit. Um es zu verwenden, speichern Sie dieses Skript in einer Dateicreate_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>"
und starte es mit:
chmod +x create_qemu_binaries.sh
./create_qemu_binaries.sh
Es funktioniert alles einwandfrei. Am Ende sollten Sie in dem Ordner ./qemu_extract/qemu_packed/
eine Datei qemu-system-x86_64
(die Hauptbinärdatei), einen Ordner lib
(die Bibliotheken, mit denen Sie arbeiten müssen qemu
) und einen Ordner haben pc-bios
, eine Reihe von Dateien, qemu
die ausgeführt werden müssen. Sie können dann qemu
mithilfe von ausführen (vergessen Sie nicht, durch Ihr Dateisystem-Image zu ersetzen):
$ 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
Genießen ! (Wenn das Skript bei Ihnen nicht funktioniert, zögern Sie nicht, mich zu fragen. Ich habe es nur auf zwei Computern getestet und kann es kostenlos entfernen, redir
wenn Sie keine SSH-Weiterleitung zwischen Host und Vermutung benötigen.)
2.1.b) Methode 2: Wenn Sie auf einen Computer mit Root-Zugriff zugreifen
Die erste Methode benötigt einen Computer mit Root-Zugriff (oder qemu
installiert). Zuerst qemu
mit etwas wie installieren
sudo apt install qemu-system-x86
und dann finde den absoluten Pfad von qemu:
$ which qemu-system-x86_64
/usr/bin/qemu-system-x86_64
Erstellen Sie dann einen Ordner, um es abzulegen:
mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed
und erhalte die Liste der mit qemu verknüpften Bibliotheken:
ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash
Jetzt müssen wir das BIOS von qemu verwenden lassen. Die Datei ist auf Ihrem System verfügbar, aber ich weiß nicht, warum sie sich in verschiedenen Ordnern befindet. Daher ist es meiner Meinung nach einfacher, sie aus den Quellen abzurufen:
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed
Nun sollte es funktionieren, Sie können diese Dateien auf den Nicht-Root-Computer kopieren und einfach in qemu
der folgenden Zeile ausführen (vergessen Sie nicht, das Image zu ersetzen):
$ 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) Methode 3: Aus den Quellen
Sie können die Quellen auch kompilieren, aber wenn Sie nicht alle Bibliotheken installiert haben, kann es schwierig sein, die Verwendung eines root-Computers zum Kompilieren von qemu zu vermeiden. Aber ich denke, es ist ein bisschen zuverlässiger, wenn die beiden oben genannten Methoden nicht funktionieren. Sobald es kompiliert ist, rufen Sie die ausführbare Datei ab und führen Sie den gleichen Trick wie oben aus, um die Bibliotheken (unter Verwendung von ldd
sollten sich alle Bibliotheken bereits auf dem Computer befinden) und die PC-BIOS-Datei abzurufen. Führen Sie es erneut mit demselben Befehl aus.
2.3) Erstellen Sie Ihr eigenes Bild
Wenn Sie kein vorgefertigtes Dateisystem-Image verwenden möchten, befolgen Sie einfach die zahlreichen Tutorials mit den obigen Befehlen anstelle von qemu/qemu-system-x86_64
! NB: Wenn Sie auch qemu-img
Images als Nicht-Root erstellen möchten, gehen Sie wie oben beschrieben vor!
Genießen !
NB: Wenn Sie die Curses-Anzeige verwenden möchten, um sie auf einem Server ohne GUI auszuführen, sollten Sie in Ihrem Image eine Zeile in der Boot-Option hinzufügen, damit der Frame-Puffer nicht aktiviert wird in /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"
(Das Wichtigste ist das Letzte, ich bin mir nicht sicher, ob es gebraucht wird). Ebenso gut wie
GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text
damit grub im textmodus bleibt. Sie können auch den Textmodus in systemd aktivieren, wenn dies nicht ausreicht.