[win->macos13] Wie man macOS Ventura (13) auf VMWare (Windows 10/11) zum laufen bringt

Diese Anleitung ist rein Akademisch, keine Nachahmung empfohlen und ist von Seiten Apples nicht gestattet. Ich betreibe keine Downloads zu dem Thema und habe nach der Anleitung alle virtuellen Maschinen wieder gelöscht. Nachmachen auf eigene Gefahr und Verantwortung.

Zuerst laden wir uns den VMWare Player 17 herunter:

https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-player/workstation-player-evaluation.html.html

Dann das macOS Ventura (13) VMDK Image herunterladen: (eine VMDK ist fertig installiert, also ein „Clone“ von einer Festplatte, damit geht es schneller und vor allem es funktioniert! Man braucht nicht mühsam von einer .ISO das Betriebssystem zu installieren)

https://drive.google.com/file/d/1pKppcUCT6StvNGDeqwELyoLheNrilE_K/view?usp=sharing
https://drive.google.com/file/d/1XvYBTeFBNfU6lEjCoHl1YxlMbpjugA7H/view?usp=sharing
https://drive.google.com/file/d/1vSr7apfvIB0Ufq9SCDKhMgmILCuideWz/view?usp=sharing

Credits für die VM und den unlocker gehen an https://www.sysprobs.com/macos-13-ventura-vmware-pre-installed-image-download-windows-11-10?utm_content=cmp-true

Falls einmal die Downloads nicht mehr gehen, bitte mir eine kurze Nachricht schicken, ich kann euch dann auf einen alternativen google.drive.com verlinken.

Warum verlinke ich nicht gleich auf https://www.sysprobs.com?? Natürlich, damit Ihr a) weniger Werbung seht, b) die Anleitung nun auf Deutsch habt und c) ein „Mirror“ ist, für alle Eventualitäten und d) ich habe den Installationsvorgang sehr detailliert abgebildet, damit auch weniger PC begabte die Schritte nachvollziehen können. Aber bitte klickt bitte auf den oberen Link und macht einen Hit, damit sysprobs.com etwas davon hat!

Disclaimer: Die Bilder habe ich natürlich nicht von Sysprobs geklaut, das sind hübsch meine, die bitte nur mit meiner Erlaubnis verlinken/verwenden, vielen Dank!

Dann benötigen wir noch 7-Zip zum entpacken:

https://www.7-zip.org/download.html

Nun noch den VM Ware Player 17 und 7Zip installieren… das müsst Ihr hinbekommen, Spoiler: nachher wird’s noch schwieriger… oder Ihr lasst euch helfen?!

Dann laden wir uns noch den VMWare Unlocker herunter:

https://github.com/paolo-projects/unlocker/releases/download/3.0.4/unlocker.zip

Entpacken, nach unlocker, ich entpacke immer gleich im Download Ordner, danach lösche ich den Ordner wieder, nach getaner Arbeit.

Die Installation vom unlocker (keine Illegale Software, schaltet nur in der VMWare die Option macOS frei!!) soll erfolgen, wenn VMWare nicht läuft, sonst funktioniert das nicht. Also VMWare beenden, dann öffnet Ihr einen Explorer, klickt mit der rechten Maustaste auf „win-install.cmd“ und wählt „Als Administrator ausführen“…

damit schaltet Ihr MacOS in VMWare frei, sonst könnt Ihr MacOS nicht installlieren…

Öffnet den Task-Manager (STRG+SHIT+ESC), seht nach in „Leistung/CPU“ und schaut unten auf „Virtualisierung“, wenn dort steht „Aktiviert“ ist alles roger, keine Änderung notwendig, falls dort „Virtualisierung“ auf „Deaktiviert“ steht, müsst Ihr die VT-x für den Prozessor im BIOS einschalten, nur so funktioniert die VMWare. Virtualisierung aktivieren falls man Hilfe braucht.

So damit haben wir die Voraussetzungen und können loslegen:

Zuerst entpacken wir die 3 Image Teile, damit wir die .vmdk erhalten:
Wir kopieren alle 3 Teile in ein Verzeichnis, drücken die rechte Maustaste auf die erste ZIP Datei (.001) und wählen Extract to „macOS13_ventura\“

Im Verzeichnis macOS13_ventura sollte sich nun die macOS13_ventura.vmdk befinden!

Wir starten VMWare und erzeugen eine neue Virtuelle Maschine:

Dann wählen wir später installieren und drücken „Next“:

Dank des „unlocker“ Patches, können wir nun Apple Max OS X auswählen und „Next“ drücken:

Nun können wir den Namen der VM bestimmen und auch den Speicherort und drücken „Next“:

Dann die Festplattengröße festlegen, ist egal, wir tauschen dann diese Festplatte gegen unsere entpackte VMDK vorinstallierte Festplatte aus. Drücken Sie „Next“

So, dann auf „Finish“ drücken:

Nun ändern wir die neu erstellte Virtuelle Maschine, drücken Sie dazu auf den Namen „macOS 13“ oder so wie Sie die VM genannt haben und drücken unten auf „Edit virtual machine settings“

Nun ändern wir die Ram Größe auf 6144MB = 6GB Ram:

Dann ändern wir die Anzahl der Prozessoren auf 6:

Nun fügen wir die Festplatte hinzu, wählen Sie Hard Disk (SATA) und drücken Sie unten auf „Add“:

dann wählen wir Harddisk und drücken auf „Next“

Wählen Sie SATA und drücken Sie auf „Next“:

Im nächsten Bildschirm wählen Sie „Use an existing virtual disk“ und drücken auf „Next“:

Wählen Sie nun die heruntergeladene VMDK aus und drücken Sie auf „Finish“:

Nachdem die VMDK schon älter ist (VMWare 16) kann man diese noch auf das neueste Format bringen, das habe ich gemacht:

Man kann, muss man aber nicht, die Größe von 60GB auf 80GB oder größer nun verändern, das kann man mit dem Button „Expand“, einfach die neue Größe eingeben, macOS verwendet dann die neue Größe ohne die Partition ändern zu müssen.

Nun müssen wir nur noch die .vmx Datei ändern, dazu öffnen wir das Verzeichnis, wo wir die VM installiert haben, dazu können wir nochmal in den Virtual Machine Settings nachsehen, wo die VM vorhanden ist:

Diesen Pfad kopieren wir und setzen ihn im Adressfeld von einem Windows Explorer ein, dann drücken wir mit der rechten Maustaste darauf und wählen „Öffnen mit“:

und wählen dann den Editor und drücken Ok:

dann im Editor fügen wir ganz unten smc.version = “0” ein:

Im nächsten Schritt suchen wir nach „ethernet0.virtualDev“, den Eintrag müssen wir von ethernet0.virtualDev=“e1000e“ auf ethernet0.virtualDev=“vmxnet3″ ändern

Speichern wir die Datei und wir können die VM starten:

das Passwort für den Sysprobs Benutzer Account lautet: sysprobs123: (wenn das Passwort falsch ist, probiert szsprobs123 (im Englischen sind Z und Y vertauscht!)

In der VM zuerst die Tastatur auf Deutsch umstellen, dann sich im Apple Account Anmelden. Der Klammeraffe @ ist auf der Apple Tastatur ALTGR+L statt ALTGR+Q

Kann man diese VM updaten z.B. später mal auf macOS 14 usw., JA

Kann man den Sysprobs Account ändern: JA (einfach einen neuen Admin Benutzer hinzufügen und den Sysprobs Account löschen)

Kann man das Passwort ändern, JA

Eigentlich kann man nun mit der funktionierenden VM so ziemlich alles machen was man möchte, mit XCode Programme schreiben, Handys verbinden (die USB einfach freigeben) usw. Den Bildschirm kann man größer anpassen, Vollbild geht auch, ich habe 3 Bildschirme, der linke ist dann für macOS.

Aja natürlich geht das ganze auch direkt am Mac, da ich einen mac mini late 2014 besitze und Xocde natürlich die Mindestanforderung macOS 13 hat, habe ich mich überhaupt darum bemüht, macOS 13 zum Laufen zu bringen. Mit VMWare Fusion kann man auch am Mac direkt, macOS 13 emulieren:

Disclaimer: Ich besitze einen Mac Mini darauf läuft macOS, ich habe diese Anleitung nur geschrieben, damit Andere macOS testen können, aber wenn man macOS benutzen möchte, sei es Privat, Beruflich oder gar in Firmem verwenden möchte, bitte kauft einen Apple Mac! Ich habe macOS nicht mehr in der VM laufen (nach dem Testen gelöscht) und distanziere mich von jedem finanziellem Interesse. Grundsätzlich ist der Betrieb und Installation von macOS auf einer nicht Apple Hardware untersagt und verstößt daher gegen die Bestimmungen von Apple!

Der Download ist von einem anderen User, der nicht mit mir verwandt oder mir bekannt ist, ich stehe in keiner Verbindung mit dieser Person. Falls eine Beanstandung dieser Links besteht, bitte um eine Nachricht auf office[add]predl.cc, ich werde diese umgehend entfernen.

Ich erhalte keine Finanzielle Unterstützung von irgendwem und werde auch nicht Werbefinanziert. Diese Seite ist ein Hobby Projekt und alle Anleitungen sollen nur als „Proof of Concept“ gesehen werden, nachmachen auf eigene Gefahr und Verantwortung.

Apple und macOS alle Rechte (Markenrechte und Copyright) liegen bei Apple Inc.One Apple Park Way, Cupertino, CA 95014.

Getestet unter Windows 10 und VMWare Player 17

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden. Die Links auf dieser Seite wurden von mir nicht überprüft, ich übernehme keine Haftung für die Inhalte.

Happy coding!

[Python3] MySQL verwenden

Um MySQL mit dem MySql Connector zu verwenden muss dieser zuerst in Python installiert werden:

sudo python -m pip install mysql-connector-python
oder sudo pip install mysql-connector-python
oder pip install mysql-connector-python
oder pip3 install mysql-connector-python

Für Windows halt ohne "sudo", ich empfehle: führen Sie CMD immer als Administrator aus, das geht mit WIN+R, dann cmd.exe eingeben und Shift+Strg+Enter drücken, dann startet man die CMD "elevated" also als Administrator. Dann bleibt man nirgendwo stecken, nur weil man keine Rechte hat...

Dann legen wir eine neue Datenbank am lokalen Computer/Server an:

DROP TABLE IF EXISTS `sample`;
CREATE TABLE IF NOT EXISTS `sample` (
  `id` int NOT NULL AUTO_INCREMENT,
  `record_no` int NOT NULL,
  `description` varchar(50) NOT NULL,
  `start_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `record_no_key` (`record_no`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
COMMIT;

Einfach mit PhpMyAdmin auf die lokale Datenbank verbinden und das .SQL Script ausführen, natürlich kann man noch das Script als .sql Datei speichern und dann per „Importieren“ dann ausführen, bei kleineren Dateien geht Copy/Paste bei größeren Importieren, wenn die Datei riesig ist, muss man direkt die Datei importieren (z.B. mit mysql -u username -p database_name < sample.sql)

Dann erstellen wir unser Pythonscript:

(Anmerkung: das Script NICHT mysql.py benennen, sonst überschreiben wir das Modul mysql mit unserem und das mysql Modul wird nicht gefunden!)

sudo nano mysql_test.py

Der Inhalt:

import mysql.connector
from datetime import date

cn_connect = mysql.connector.connect(
    host='localhost',
    user='root',
    password='admin',
    database='test_py'
)

# connect to mysql, cursor is our "recordset"
cursor = cn_connect.cursor()

# date of today
datum = date.today()

try:
    # select last record_no
    sql_query = "SELECT * FROM sample ORDER BY record_no DESC LIMIT 1 OFFSET 0"
    cursor.execute(sql_query)
    
    # fetch all records, even only one is in the buffer
    record = cursor.fetchone()
    
    # if we got a record, then get it
    if record:
        # read last_record_no
        last_record_no=record[1]
    else:
        # otherwise last_record_no=0
        last_record_no=0    
except mysql.connector.Error as error:
    print("Error while connecting to MySQL", error)

# prepare sql query for insert
sql_insert = "INSERT INTO sample (record_no, description, start_date) VALUES (%s, %s, %s)"
data = (last_record_no+1, "*Automatic insert*", datum)

# add record to database
cursor.execute(sql_insert, data)

# finish transaction = important!
cn_connect.commit()

# close cursor
cursor.close()

# close connection
cn_connect.close()

Ausführen:

sudo python mysql_test.py

Unser Script liest den letzten Datensatz in der Tabelle „sample“, liest den letzten „record_no“ aus, später wird dieser wieder mit +1 eingefügt. Wenn kein Datensatz ursprünglich in der Tabelle war (wir testen mit if record:) dann wird die variable last_record_no mit 0 initialisiert. 0+1 ergibt dann den Start record_no als 1. Bitte nicht record_no als ID verwenden, das überlassen wir hübsch MySQL mit der Auto-ID, das funktioniert und hat mit der record_no nichts zu tun, die verwenden wir später für Relationen, Links usw. um z.B. 2 Datenbanken verbinden zu können oder sauber zu Synchronisieren, wir verlassen uns nicht auf die MySQL-ID.

Getestet unter CentOs 7, Debian 11 und diesmal auch Windows 10 (wird mit Windows 11 genau so funktionieren)

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Happy coding!

[Python3] Eine Flask Anwendung unter Linux

So es geht weiter mit dem Blog, heute beschäftigen wir uns mit einer Flask Anwendung einer REST API. Ich verwende das selbst, um mit meinem laufenden Python Service zu kommunizieren.

Damit ist es einfach eine API mit Python zu erstellen. Diese wird immer per HTTP angesprochen, kann mit WSGI und Apache auch über SSL laufen. In diesem Test starten wir Flask aber als Service ohne SSL und direkt über einen Port, dieser sollte unterschiedlich zu Port 80, 443 usw. sein. Bitte nur zu Testzwecken Flask so betreiben.

Zuerst ändern wir den Code vom Python Debian Service, diesen haben wir bei https://www.predl.cc/python-debian-service/ erstellt.

Öffnen wir die my_service.py und ändern den Code auf:

from flask import Flask
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def meine_aufgabe_route():
    # Hier kannst du zusätzlichen Code für den API-Zugriff schreiben
    return 'API-Antwort'
if __name__ == '__main__':
    app.run(port=5001)

Damit ist das Service fertig, es kann getestet werden, zuerst stoppen wir das alte Service:

sudo systemctl stop my_service.service
sudo systemctl start my_service.service

Dann sollte folgendes herauskommen:

 * Serving Flask app 'test'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI serr instead.
 * Running on http://127.0.0.1:5001
Press CTRL+C to quit

Um mit dem Service zu kommunizieren, öffnen wir eine weitere Shell, lassen diese aber geöffnet, sonst beendet sich unsere Flask Anwendung:

sudo wget http://127.0.0.1:5001/api
--2023-06-17 11:50:57--  http://127.0.0.1:5001/api
Connecting to 127.0.0.1:5001... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11 [text/html]
Saving to: ‘api’

100%[===========================================================================================================================================>] 11          --.-K/s   in 0s

2023-06-17 11:50:57 (2.43 MB/s) - ‘api’ saved [11/11]

Wget erstellt die api Textdatei, in dieser ist die Antwort enthalten:

sudo nano api

Oder wir lassen uns den Inhalt gleich ausgeben:

sudo wget -q -O- http://127.0.0.1:5001/api
API-Antwort

Getestet unter CentOs 7 und Debian 11

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Happy coding!

[Python3] Ein Service unter Linux

Wir starten heute unseren Blog mit einer Anleitung für ein Linux Python Service. Ein Programm dass ständig läuft und auch nach dem Neustart des Computers wieder gestartet wird:

Zuerst einmal den Python Code, der ständig laufen soll:

sudo nano my_service.py

Dann den Python Code:

import time

while True:
    print("Service läuft...")
    time.sleep(5)

Dann müssen wir noch das Service selbst erstellen, das ist einfacher als man denkt:

sudo nano /etc/systemd/system/my_service.service

Der Inhalt des Services:

[Unit]
Description=My Python Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /Pfad/zum/Python-Skript/my_service.py
WorkingDirectory=/Pfad/zum/Python-Skript/

[Install]
WantedBy=multi-user.target

So nun ist alles vorbereitet, wir können unser Service aktivieren, damit das Service auch nach einem Neustart wieder verfügbar ist:

sudo systemctl enable my_service.service

Das Service starten:

sudo systemctl start my_service.service

Überprüfen ob das Service läuft:

sudo systemctl status my_service.service

Und wieder beenden:

sudo systemctl stop my_service.service

Getestet unter CentOs 7 und Debian 11

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Happy coding!

Page 1 Page 2