Dieses Tutorial soll zeigen, wie man eine Virtuelle Maschine für Android auf Proxmox aufsetzt.
Zusätzlich wird gezeigt, wie man die VM möglichst abschgeschirmt duch das TOR-Netzwerk leitet und WhatsApp mit einem Antwort-Bot installiert.
Inhaltsverzeichnis
Warum sollte man eine Android-VM aufsetzen?
Folgende Vorteile sehe ich in einer Android-VM:
- Für manche Anwendung braucht oder möchte man ein separates Android Gerät. Dieses hat man vielleicht nicht zur Verfügung oder man möchte kein separates Gerät dafür kaufen.
- Manche Smartphone-Hardware ist in einer VM nicht vorhanden.
Kamera, Mikrofon, Lautsprecher, Gyroskope, GPS und weitere Sensoren sind in einer VM nicht vorhanden und können so für eventuelles User-Tracking nicht verwendet werden. - Auf einem (Home-)Server mit Proxmox o.ä. kann eine Virtuelle Maschine durchgehend erreichbar sein. Für WhatsApp lässt sich z.B. ein Tool für automatische Antworten oder eine Matrix-Bridge nutzen.
Was wird benötigt:
- Ein Computer mit x86-Prozessor. Für Raspberry Pi’s sind ebenfalls Android-Systeme verfügbar, diese weichen von der hier gezeigten Installationsmethode aber ab.
- Ein Hypervisor wie Proxmox, VirtualBox, VMware, etc.
- Ein ISO eines Androids für die x86 Plattform
- Android-Debug-Bridge auf dem Computer installiert (Sollte in den meisten Repositorys der Linux-Distributionen vorhanden sein.)
- Unter Proxmox: Einen SPICE-Viewer. Unter Linux ist es das Paket
virt-viewer. Dieses Programm ermöglicht den Zugriff über das SPICE-Protokoll, welches in der Anwendung angenehmer als die Standartkonsole von Proxmox ist. - Bei Bedarf: Einen TOR-Proxy, wie in einem anderen Tutorial bereits gezeigt.
- Be Bedarf: RethinkDNS als APK. (Kann von der F-Droid-Webseite geladen werden.)
- Bei Bedarf: Den F-Droid-Store selbst.
Welche x86-Android Versionen gibt es?
Android läuft bekanntlich auf Smartphones, die mit einem ARM-Prozessor ausgestattet sind. Die Auswahl für die x86 Plattform ist daher begrenzt.
Folgende zwei Android Systeme sind mir bisher bekannt:
- Android-x86: Das letzte System ist auf Basis von Android 9 und kommt mit den Play-Diensten vorinstalliert.
- BlissOS: Das letzte verfügbare BlissOS 16 ist auf Basis von Android 13.
Es gibt zwei Versionen: Eine FOSS-Version mit microg und einigen FOSS-Apps (u.a. NeoStore und Aurora) vorinstalliert und eine mit den Play-Diensten.
Leider werden beide Systeme (aktuell) nicht mehr weiterentwickelt. Ob man das für seinem gewünschten Anwendungsfall akzeptieren kann, muss jeder für sich entscheiden.
In meinem Fall verwende ich BlissOS 16 (Android 13) in der FOSS-Version, da hier der Software-Support der Apps länger ist und man die ADB über Wlan erreichen kann.
Die ISO-Dateien der Systeme sind auf Sourceforge verfügbar:
Installation der Android-VM:
Im folgenden wird gezeigt wie man BlissOS als Virtuelle Maschine installiert.
Die gezeigten Schritte beziehen sich teilweise auf Proxmox (Version 9). Für anderen Hypervisor müssen die Schritte ggf. „übersetzt“ werden.
Hinweis: Bei den User-Interfaces beziehen ich mich, wenn möglich auf die deutsche Version.
Schritt 1: Download der ISO
Auf Sourceforge (Link oben) im Reiter „Files“ wird zu folgendem Pfad navigiert:
Official -> BlissOS16 -> FOSS -> Generic.
Dort die ISO mit folgendem Namen herunterladen:
Bliss-v16.9.7-x86_64-OFFICIAL-foss-20241011.iso
Auf Proxmox gibt es die Möglichkeit eine ISO direkt auf das System zu laden, ohne die Datei vorher auf den Computer zu laden müssen.
Dazu zuerst den Download im Browser anstoßen und direkt stoppen. Im Download-Fenster lässt sich der direkte Downloadlink mit einem Rechtsklick kopieren.
In Proxmox dann den ISO-Bereich öffnen (Im local Speicher auf dem Server zu finden) und dort Von URL herunterladen anwählen.
Schritt 2: Virtuelle Maschine in Proxmox anlegen
Proxmox-Nutzern sollte das Erstellen einer Virtuellen Maschine vertraut sein. Daher sind im folgenden Abschnitt nur die relevanten Einstellungen aufgeführt:
- Reiter: System
- Grafikkarte:
SPICE(Nur wenn das SPICE-Protokoll verwendet werden soll) - Maschinentyp:
q35 - BIOS:
OVMF (UEFI) - EFI-Storage: Speicher eurer Wahl
- Pre-Enroll Schlüssel: Häckchen entfernen
- Grafikkarte:
- Reiter: Disks
- Storage: Speicher eurer Wahl
- Disk-Größe (GiB): Speichergröße eurer Wahl (ich belasse es auf 32)
- Discard: Häckchen setzen
- SSD-Emulation (sichtbar nach Häckchen bei „Erweitern“ unten rechts): Häckchen setzen
- Reiter: CPU
- Kerne:
1→ Während der Installation können auch mehrere Kerne zugewiesen werden, damit die Installation zügiger abläuft.
- Kerne:
- Reiter: Speicher
- Speicher MiB:
3072(3 GB)
wenn möglich:4096(4GB) (mit 3 GB war der Speicherverbrauch bei mir schon im gelben Bereich) → Hier gilt das Gleiche wie bei den Prozessorkernen.
- Speicher MiB:
- Reiter: Bestätigen
- Nach Erstellen starten: Häckchen nicht setzen (Sollte es standartmäßig auch nicht)
Um die Virtuelle Maschine zusätzlich abzuschotten, kann bei Bedarf noch die Firewall konfiguriert werden.
Dazu in der erstellten Virtuellen Maschine unter dem Reiter Firewall -> Optionen folgende Einstellungen zu setzen:
- Firewall: ja (Häckchen setzen)
- Output-Policy:
DROP
Somit wird jeglicher eingehener und ausgehender Netzwerkverkehr blockiert. Die nötigen Firewall-Regeln werden später definiert.
Hinweis: Wer die Proxmox-Firewall noch nicht eingesetzt hat, sollte noch folgende Schritte befolgen um die Firewall zu aktivieren.
Schritt 1:
Sowohl auf der Proxmox-Server(n)-Ebene als auch auf der Datacenter-Ebene sollte unter dem Reiter ‚Firewall‘ eine Regel mit foldegen Einstellungen erstellt werden:
- Richtung:
in - Aktion:
ACCEPT - Aktivieren: Häckchen setzen
- Protokoll:
tcp - Ziel-Port:
8006
Schritt 2:
Unter dem Reiter Firewall -> Optionen muss auf beiden Ebenen die Firewall aktiviert werden. Die Firewall sollte erst nach erstellen der Regeln aktiviert werden, um ein Aussperren von der Weboberfläche zu vermeiden.
Folgendes YouTube zeigt die Konfiguration der Firewall genauer: https://www.youtube.com/watch?v=YnqHbiEocVE
Schritt 3: Installation von BlissOS 16
Für die Installation habe ich mich an einem Forumsbeitrag im FreeBSD-Forum orientiert.
Die Installationmenüs werden mit den Pfeiltasten gesteuert.
Bis einschließlich Android 9 gibt es die Möglichkeit der automatischen Installation, die folgenden Schritte wären damit nicht relevant.
Schritt 3.1: Optionen im Bootloader setzen
Zuerst wird die VM gestartet, es erscheint ein Bootloader.
Wer den SPICE-Viewer verwenden möchte, wählt im Dropdown-Menü beim Knopf Konsole den Punkt SPICE aus. Die geladene Datei kann direkt mit einem Klick mit dem SPICE-Viewer geöffnet werden.
Im Bootloader wird der Eintrag BlissOS-16.9.7 2024-10-11 Installation angewählt und mit E geöffnet.
Die erste Zeile wird vor 'INSTALL=1' mit folgendem Inhalt ergänzt:
'nomodeset' 'VIRT_WIFI=1'
Mit F10 wird der Installationsdialog gestartet.
Hinweis: Sollte bei der Eingabe ein US-Layout vorliegen
Sollte bei der Eingabe ein US-Layout vorliegen, kann man sich die Abbildung der US-Tastatur auf Wikipedia zur Hilfe nehmen.
Hier eine kurze Übersicht:
ä → '
Shift+ß → _
´ → =
z → y
Schritt 3.2:
Im sich öffnenden Dialog die erste Option Create/Modify partitions auswählen, um das Formatierungsprogramm zu starten.
Zur Formartierung wird cgdisk mit Yes, switch to cgdisk geöffnet
Mit der Bestätigung von New wird die zunächst EFI-Partition angelegt:
-
- Abfrage: Mit
Enterbestätigen
- Abfrage: Mit
-
- Abfrage:
100M, dann bestätigen
- Abfrage:
-
- Abfrage:
ef00, dann bestätigen
- Abfrage:
-
- Abfrage:
EFI, dann bestätigen
- Abfrage:
Für die System-Partition wird zunächst der größte noch freie Speicher ausgewählt und mit New eine neue Partition angelegt.
Hier können alle Abfragen mit Enter bestätigt werden.
Es sollten jetzt vier Einträge angezeigt werden:
- Zwei mit der Bezeichnung
free space - Eine mit der Bezeichnung
EFI system partition - Eine mit der Bezeichnung
Linux filesystem
MitWriteund der Eingabe vonyes(US-Layout beachten) wird die virtuelle Festplatte formatiert.
MitQuitwird das Formatierungsprogramm beendet und der Installer neu gestartet.
Schritt 3.3:
Zurück im vorherigen Dialog wird die EFI-Partition sda1 ausgewählt. Unter please select a filesystem to format sda1 wird mit Do not re-format fortgefahren und die Frage Are you sure you want to pick sda1 as ESP ? mit Yes bestätigt.
Jetzt wird die Systempartition sda2 ausgewählt. Unter please select a filesystem to format sda1 wird mit ext4 fortgefahren.
Das Frage Would you like to customize the formattet drive name ? kann mit Ok bestätigt werden.
Die Formatierung von sda2 wird mit yes bestätigt.
Die Frage Woud you like the installer to prepare for OTA update ? wird mit No bestätigt.
Die Frage Cannot mount /dev/sda1. Do you want to format it? wird mit yes bestätigt.
Im Auswahlfeld für den Bootloader wird Grub2 EFI Bootloader mit Ok bestätigt.
Die Installation wird jetzt recht schnell duchgeführt.
Bevor die Virtuelle Maschine neu gestartet wird, muss evtl. die ISO entfernt werden, um einen erneuten Start des Installers zu vermeiden. Mit Reboot wird das die Virtuelle Maschine neu gestartet.
Einrichten der Android-VM:
Die Android-VM ist jetzt installiert und sollte erfolgreich gestartet sein.
Das System kann nach den eigenen Bedürfnissen konfiguriert und eingerichtet werden.
Im Folgenden werden (chronologisch) noch nötige und empfehlenswerte Einstellungen gezeigt:
-
Launcher: Beim ersten Start wird nach einem Launcher gefragt. In meinem Fall ist es
Launcher2, welcher dem „bekannten“ Launcher-Design entspricht. -
Sprache, Tastaturlayout und Datum/Uhrzeit: Standartmäßig ist Englisch und das US-Layout voreingestellt.
Zum Ändern in die Einstellungen öffnen und den PunktSystem -> Lanuguages & inputauswählen.
Die Sprache lässt sich unterLanguageshinzufügen und als erste Priorität nach oben schieben. Das deutsche Tastaturlayout lässt sich unterPhysische Tastatur/Physical Keyboardunter dem PunktAT Translates Set 2 keyboardaktivieren.
Datum und Uhrzeit lassen sich unterSystem -> Datum & Uhrzeitfestlegen. -
Die Gestensteuerung ist mit der Maus doch etwas unpraktisch zu verwenden.
Unter dem PunktBedienungshilfen -> Systemsteuerelemente -> Systemsteuerunglässt sich dieBedienung über 3 Schaltflächenauswählen. -
Netzwerk/Internet: Der Netzwerk wird durch ein „virtuelles Wlan“ bereitgestellt.
Zunächst den PunktNetzwerk und Internet -> Internetaufrufen. Hier wird das NetzwerkVirtWifiangezeigt, mit welchem man sich verbinden kann.
Möchte man eine IP-Adresse und einen DNS-Server direkt selber festlegen, kann man das überWLAN hinzufügenmachen. Im FeldNetzwerknameVirtWifieintragen und überErweiterte Optionenden PunktIP-EinstellungenaufStatischsetzen.
(Bei mir konnte ich duchr scrollen mit der Maus nicht das Ende der Seite erreichen. Am rechten Rand befindet sich ein nicht sichtbarer Scrollbalken, den man mit der Maus nach unten ziehen kann.)
Hat man im vorhinein die Firewall aktiviert, sollte im Wlan-Symbol in der Statusleiste ein Ausrufezeichen angezeigt werden. Das ist in diesem Fall Normal, da das System noch nicht ins Internet kommt. -
Entwickleroptionen und ADB aktivieren:
Zum aktivieren der Entwickleroptionen zunächst den PunktÜber das Tabletaufrufen. Dort oft genug auf dieBuild-Nummerklicken, bis die Entwickleroptionen aktiv sind.
In die Entwickleroptionen gelangt man überSystem -> Entwickleroptionen. Hier bis zum PunktDebugging über WLANscrollen und diesen aktivieren. Mit einem Klick auf den Text lassen sich weitere Optionen anzeigen. Hier muss man sich unterIP-Adresse & Portdie Portnummer nach der IP-Adresse notieren/merken.
Hinweis: Es empfiehlt sich, die ADB nach Verwendung wieder zu schließen, um eine Verwendung durch Dritte auszuschließen. Der Port ändert sich nach jedem Neustart, erneutem aktivieren der ADB oder erneutem Verbinden des virtuellen Wlan’s. -
(Optional) Firewall-Regeln in Proxmox festlegen: Hat man die Proxmox-Firewall aktiviert ist es jetzt ein guter Zeitpunkt, Regeln festzulegen. So kann man sich auch mit der ADB verbinden.
Hier gibt es zwei Möglichkeiten:- In der Virtuellen Maschine unter
Firewalldie einzelnen Regeln festlegen. - Auf der Datacenter-Ebene unter
Firewall -> Security-Gruppeeine Gruppe an Regeln festlegen, welche dann in der Virtuelle Maschine angewendet werden.
Folgend wird das Vorgehen nach der ersten Option gezeigt: - Im Punkt Firewall durch
Hinzufügenden Dialog zum ersellen einer Regel öffnen. - Für ADB gelten folgende Einstellungen:
- Richtung:
in - Aktion:
ACCEPT - (optional) Quelle: IP-Adresse eures Computer, um den Zugang zu beschränken.
- Aktivieren: Häckchen setzen (Das Häckchen legt fest, ob die Regel aktiv ist. Ein Häckchen kann auch später gesetzt/entfernt werden, um die Regel zu aktivieren/deaktivieren.)
- Protokoll:
tcp - Ziel-Port: der vorhin gemerkte/notierte Port.
- Richtung:
- Für DNS gelten folgende Regeln:
- Richtung:
out - Aktion:
ACCEPT - Aktivieren: Häckchen setzen
- Makro:
DNS(Ein Makro enthält vordefinierte Regeln für einen Dienst)
- Richtung:
- Für einen (TOR-)Proxy verwendet werden soll, gelten folgende Regeln:
- Richtung:
out - Aktion:
ACCEPT - Aktivieren: Häckchen setzen
- Protokoll:
tcp - Ziel-Port:
9050(oder den Port, der für den Socks-Proxy definiert wurde)
- Richtung:
- (optional) Jeweils eine Regel für HTTP/HTTPS: (wenn ein Proxy genutzt wird, sollte diese Regel nicht gesetzt werden, um eine Internetverbindung auserhalb des Proxys zu vermeiden.)
- Richtung:
out - Aktion:
ACCEPT - Aktivieren: Häckchen setzen
- Makro:
HTTPundHTTPS
- Richtung:
- Sollte die Uhrzeit (trotz richtige Zeitzone) nicht stimmen oder aus dem Intenet abgerufen werden:
- Richtung:
out - Aktion:
ACCEPT - Aktivieren: Häckchen setzen
- Makro:
NTP
- Richtung:
- In der Virtuellen Maschine unter
-
Android Debug Bridge:
Über die Android Debug Bridge lassen sich u.a. Einstellungen setzen und Apps installieren.- Zum verbinden mit ADB muss folgender Befehl abgesetzt werden:
adb connect <IP-Adresse>:<Port>Folgender Befehl listet verbundene Geräte an:
adb devices- Die Standartdomain des Captive-Portals (Überprüfen der Internetverbindung), lässt sich wie in der Empfehlungsecke des Kuketz-Blog beschrieben ändern.
- Zum ändern des NTP-Servers (Einstellen der Systemzeit) muss folgender Befehl abgesetzt werden:
adb shell settings put global ntp_server ntp1.adminforge.deZum Überprüfen kann folgender Befehl abgesetzt werden:
adb shell 'settings get global ntp_server'- Zum Installieren von Apps muss folgender Befehl abgesetzt werden:
adb install <Pfad-zur-apk-Datei>Wenn die Firewall-Regeln für
HTTP/HTTPSnicht gesetzt worden sind, sollte jetzt noch keine Internetverbindung stehen und eine Installation von Apps nicht möglich sein.
Um einen TOR-Proxy zu verwenden, sollte man jetzt die RethinkDNS-APK installieren. -
(optional) Einrichten von RethinkDNS:
Zur Nutzung von RethinkDNS diese App starten und einrichten.- In der Einstellungen-App unter dem Punkt
Netzwerk und Internet -> VPN -> RethinkDNS/Einstellungsrädchendie OptionenDurchgehend aktives VPN" und "Verbindungen ohne VPN blockieren - In RethinkDNS unter dem Punkt
Konfigurieren -> Proxydie OptionSOCKS5-Proxy einrichtenaktivieren und folgende Einstellungen setzen:- Hostname: IP-Adresse des TOR-Proxys
- Port: Port des TOR-Proxys, falls dieser von 9050 abweicht
- Blockiere UDP, außer DNS und NTP: Häckchen setzen
- Loopback Proxy-Forwarder-Apps: Häckchen setzen
MitFestlegenwerden die Einstellungen gespeichert.
Unter dem PunktStartseitein RethinkDNS sollte unter dem KnopfSTARTbzw.STOPPder TextGeschützt mit Socks-Proxystehen.
Zum Testen der Verbindung lässt sich im Browser die Domaincheck.torproject.org
- In der Einstellungen-App unter dem Punkt
-
Zum Installieren von Apps können der vorinstallierte
Neo StoreundAurora Storeverwendet werden. Es empfiehlt sich ein Update durchzuführen, da die Apps nicht auf dem aktuellsten Stand sind. -
WhatsApp Responder:
Wenn man WhatsApp in der Android VM nutzen möchte, ist die AppWatomaticaus dem F-Droid-Repo ganz interessant. Die App ermöglicht es, automatisiert Antworten über WhatsApp zu senden. So lassen sich z.B. Kontakt darauf hinweisen, dass man über WhatsApp nicht erreichbar ist oder nur sporadisch antwortet.
Bei der Einrichtung kann man auf eine Stolperfalle stoßen:
Setzt man den SchalterAutomatische Antwort AUSauf an, fordert die App die BerechtigungGeräte- und App-Benachrichtigungenan, welche sich nicht immer aktivieren lässt.
Dazu in den Einstellunge in die App-Übersicht vonWatomaticwechseln. Oben rechts sollte ein Drei-Punkte-Menü angezeigt werden, mit welchem sich das Aktivieren freischalten lässt. -
Matrix-Bridge:
Für Matrix lassen sich auch verschiedene Bridges zu anderen Messengern nutzen. Für die WhatsApp-Bridge benötigt man einen WhatsApp-Client wie diese VM.