Mac Mini M4: Unterschied zwischen den Versionen

Aus WIKI
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Externes Laufwerk automatisch einbinden lassen <pre> sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true </pre>“)
 
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Externes Laufwerk automatisch einbinden lassen
Was möchte ich haben:
 
# [[Mac Mini M4#Externe Festplatte anbinden|Externe Festplatte anbinden]]
# [[Mac Mini M4#Sensordaten versenden|Ich möchte Sensor-daten versenden]]
# [[Mac Mini M4#Docker|Ich möchte einen Docker container laufen lassen]]
 
 
= Externe Festplatte anbinden =
; Externes Laufwerk automatisch einbinden lassen
: <code>sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true</code>
 
= Sensordaten versenden =
 
* Dafür hab ich ein script unter "bin" abgelegt
<pre>
<pre>
sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true
#!/bin/bash
Uuid=$(hostname)
Load10m=$(uptime | awk '{print $(NF-1)}')
Load15m=$(uptime | awk '{print $NF}')
Load1m=$(uptime | awk '{print $10}' | sed 's/,//')
Processes=$(ps hax | wc -l | awk '{$1=$1; print}')
Users=$(who | cut -f 1 -d ' ' | sort | uniq | wc -l | awk '{$1=$1; print}')
 
JsonLoad10m="{\"value_type\":\"load 10 min\",\"value\":\"$Load10m\"}"
JsonLoad15m="{\"value_type\":\"load 15 min\",\"value\":\"$Load15m\"}"
JsonLoad1m="{\"value_type\":\"load 1 min\",\"value\":\"$Load1m\"}"
JsonProcesses="{\"value_type\":\"Processes\",\"value\":\"$Processes\"}"
JsonUsers="{\"value_type\":\"Users\",\"value\":\"$Users\"}"
 
Json="{\"software_version\":\"1\",\"uuid\":\"$Uuid\",\"sensordatavalues\":[$JsonLoad1m,$JsonLoad10m,$JsonLoad15m,$JsonProcesses,$JsonUsers]}"
 
#echo "Sending JSON: $Json"
/usr/bin/curl --silent -H "Content-Type: application/json" -X POST -d "$Json" -u <user>:<password> https://sensors.sig-nux.de/data.php > /dev/null
 
</pre>
 
* Datei <code>send.semnsor.data.plist</code> unter <code>/Library/LaunchDaemons</code> mit dem folgenden Inhalt angelegt:
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>send.semnsor.data</string>
 
    <key>ProgramArguments</key>
    <array>
        <string>/Users/DEINUSER/bin/sendsensordata.sh</string>
    </array>
 
    <!-- alle 2 minuten ausf??hren -->
    <key>StartInterval</key>
    <integer>120</integer>
 
    <key>RunAtLoad</key>
    <true/>
 
    <!-- Error log -->
    <key>StandardErrorPath</key>
    <string>/tmp/send.sensor.data.err</string>
 
    <!-- Default log -->
    <key>StandardOutPath</key>
    <string>/tmp/send.sensor.data.out</string>
</dict>
</plist>
</pre>
 
* Rechte setzen
<pre>
sudo chown root:wheel /Library/LaunchDaemons/send.semnsor.data.plist
sudo chmod 644 /Library/LaunchDaemons/send.semnsor.data.plist
</pre>
 
* Job starten
<pre>
sudo launchctl load /Library/LaunchDaemons/send.semnsor.data.plist
</pre>
 
* Damit der Job durch weg daten senden kann sollte der Rechner nicht sich nicht in den sleep-Modus versetzen, dies kann via pmset konfiguriert werden.
** Einstellungen abfragen:
<pre>
user@mac% pmset -g           
System-wide power settings:
Currently in use:
standby              0
Sleep On Power Button 1
autorestart          1
powernap            1
networkoversleep    0
disksleep            0
sleep                0 (sleep prevented by powerd)
ttyskeepawake        1
displaysleep        5
tcpkeepalive        1
lowpowermode        0
womp                0
</pre>
** Ruhezustand deaktivieren mit <code>pmset -a sleep 0</code>
** Bildschirm nach 5min inaktivität abschalten lassen <code>pmset -a displaysleep 5</code>
** Automatischer neustart nach Stromausfall <code>pmset -a autorestart 1</code>
 
 
* Im ersten versuch hatte ich es mit einem Cronjob versucht, aber das hatte nur zuverlässig funktioniert wenn ein Benutzer angemeldet war...
** das sript wird via cronjob ausgeführt
** conjob kann mit <code>crontab -e</code> angelegt werden
** mit <code>export EDITOR=nano</code> kann man den default editor auf nano umstellen
 
= Docker =
== Colima ==
* Installation via brew: <code>brew install colima</code>
* Start: <code>colina start</code>
* Informationen: <code>colima ls</code>
<pre>   
PROFILE    STATUS    ARCH      CPUS    MEMORY    DISK      RUNTIME    ADDRESS
default    Running    aarch64    2      2GiB      100GiB    docker
</pre>
* Startparameter:
<pre>
-c, --cpus int                    number of CPUs (default 2)
-d, --disk int                    disk size in GiB (default 100)
-m, --memory float32              memory in GiB (default 2)
</pre>
</pre>

Aktuelle Version vom 20. November 2025, 05:29 Uhr

Was möchte ich haben:

  1. Externe Festplatte anbinden
  2. Ich möchte Sensor-daten versenden
  3. Ich möchte einen Docker container laufen lassen


Externe Festplatte anbinden

Externes Laufwerk automatisch einbinden lassen
sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true

Sensordaten versenden

  • Dafür hab ich ein script unter "bin" abgelegt
#!/bin/bash
Uuid=$(hostname)
Load10m=$(uptime | awk '{print $(NF-1)}')
Load15m=$(uptime | awk '{print $NF}')
Load1m=$(uptime | awk '{print $10}' | sed 's/,//')
Processes=$(ps hax | wc -l | awk '{$1=$1; print}')
Users=$(who | cut -f 1 -d ' ' | sort | uniq | wc -l | awk '{$1=$1; print}')

JsonLoad10m="{\"value_type\":\"load 10 min\",\"value\":\"$Load10m\"}"
JsonLoad15m="{\"value_type\":\"load 15 min\",\"value\":\"$Load15m\"}"
JsonLoad1m="{\"value_type\":\"load 1 min\",\"value\":\"$Load1m\"}"
JsonProcesses="{\"value_type\":\"Processes\",\"value\":\"$Processes\"}"
JsonUsers="{\"value_type\":\"Users\",\"value\":\"$Users\"}"

Json="{\"software_version\":\"1\",\"uuid\":\"$Uuid\",\"sensordatavalues\":[$JsonLoad1m,$JsonLoad10m,$JsonLoad15m,$JsonProcesses,$JsonUsers]}"

#echo "Sending JSON: $Json"
/usr/bin/curl --silent -H "Content-Type: application/json" -X POST -d "$Json" -u <user>:<password> https://sensors.sig-nux.de/data.php > /dev/null

  • Datei send.semnsor.data.plist unter /Library/LaunchDaemons mit dem folgenden Inhalt angelegt:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>send.semnsor.data</string>

    <key>ProgramArguments</key>
    <array>
        <string>/Users/DEINUSER/bin/sendsensordata.sh</string>
    </array>

    <!-- alle 2 minuten ausf??hren -->
    <key>StartInterval</key>
    <integer>120</integer>

    <key>RunAtLoad</key>
    <true/>

    <!-- Error log -->
    <key>StandardErrorPath</key>
    <string>/tmp/send.sensor.data.err</string>

    <!-- Default log -->
    <key>StandardOutPath</key>
    <string>/tmp/send.sensor.data.out</string>
</dict>
</plist>
  • Rechte setzen
sudo chown root:wheel /Library/LaunchDaemons/send.semnsor.data.plist
sudo chmod 644 /Library/LaunchDaemons/send.semnsor.data.plist
  • Job starten
sudo launchctl load /Library/LaunchDaemons/send.semnsor.data.plist
  • Damit der Job durch weg daten senden kann sollte der Rechner nicht sich nicht in den sleep-Modus versetzen, dies kann via pmset konfiguriert werden.
    • Einstellungen abfragen:
user@mac% pmset -g            
System-wide power settings:
Currently in use:
 standby              0
 Sleep On Power Button 1
 autorestart          1
 powernap             1
 networkoversleep     0
 disksleep            0
 sleep                0 (sleep prevented by powerd)
 ttyskeepawake        1
 displaysleep         5
 tcpkeepalive         1
 lowpowermode         0
 womp                 0
    • Ruhezustand deaktivieren mit pmset -a sleep 0
    • Bildschirm nach 5min inaktivität abschalten lassen pmset -a displaysleep 5
    • Automatischer neustart nach Stromausfall pmset -a autorestart 1


  • Im ersten versuch hatte ich es mit einem Cronjob versucht, aber das hatte nur zuverlässig funktioniert wenn ein Benutzer angemeldet war...
    • das sript wird via cronjob ausgeführt
    • conjob kann mit crontab -e angelegt werden
    • mit export EDITOR=nano kann man den default editor auf nano umstellen

Docker

Colima

  • Installation via brew: brew install colima
  • Start: colina start
  • Informationen: colima ls
    
PROFILE    STATUS     ARCH       CPUS    MEMORY    DISK      RUNTIME    ADDRESS
default    Running    aarch64    2       2GiB      100GiB    docker
  • Startparameter:
-c, --cpus int                    number of CPUs (default 2)
-d, --disk int                    disk size in GiB (default 100)
-m, --memory float32              memory in GiB (default 2)