- Shell 66.5%
- Python 30.7%
- Lua 2.8%
Die sieben .conf-Dateien enthalten private Schluessel und Preshared Keys aller Geraete. Sie lagen versioniert im Repo, das ein Remote auf git.motocamp.de hat und sie nicht per .gitignore ausnahm -- wer Lesezugriff bekaeme, haette damit den VPN-Zugang zu allen darin abgelegten Geraeten. Jetzt aus der Versionierung genommen (git rm --cached, die Dateien bleiben auf der Platte) und per .gitignore ausgeschlossen. Die Setup-Skripte lesen sie unveraendert weiter; fehlt eine, ueberspringt build-iso.sh den WireGuard-Teil mit einer Warnung. wireguard/README.md erklaert, welche Dateien erwartet werden, wie sie aufgebaut sind und wie man ein Schluesselpaar erzeugt -- auch ohne wireguard-tools, ueber OpenSSL. Dazu zwei Fallen, die heute Zeit gekostet haben: "sudo wg syncconf <(sudo wg-quick strip ...)" scheitert an der Prozess-Substitution, und ein fehlendes [Peer] haengt den neuen Block an den vorherigen an und ueberschreibt dessen Schluessel. Die Historie wird bewusst NICHT umgeschrieben. Das haette die Schluessel nur hier unsichtbar gemacht -- in aelteren Klonen blieben sie gueltig -- und einen Force-Push ueber 94 Commits bedeutet. Stattdessen bekommen im Oktober 2026 alle Geraete neue Schluessel; danach sind die alten wertlos. Sicherung vor dem Eingriff: macbook-setup-sicherung-20260912-0819.bundle (vollstaendige Historie, geprueft). Claude-Session: https://claude.ai/code/session_019Vjs28zZGXAchuvfCBgNig |
||
|---|---|---|
| wireguard | ||
| .gitignore | ||
| blacklist-nvidia.conf | ||
| build-iso.sh | ||
| CLAUDE.md | ||
| diagnose-claude-profiles.sh | ||
| dino.py | ||
| hid_apple.conf | ||
| keyboard | ||
| mbpfan-13.conf | ||
| mbpfan-16.conf | ||
| meta-data | ||
| pacman.py | ||
| README.md | ||
| setup-base-asahi.sh | ||
| setup-base.sh | ||
| setup-claude-profiles.sh | ||
| setup-desktop-asahi.sh | ||
| setup-desktop.sh | ||
| setup.sh | ||
| temp-watch.sh | ||
| user-data | ||
| wezterm.lua | ||
macbook-setup
Automatisiertes Ubuntu 24.04 (Xubuntu-Desktop) Setup fuer alte MacBook Pros.
Unterstuetzte Hardware
| Bezeichnung | Modell | CPU | GPU | Besonderheiten |
|---|---|---|---|---|
| m16 | MBP 15" Mid 2015 (MacBookPro11,5) | i7-4980HQ (Haswell) | Intel Iris Pro 5200 + AMD R9 M370X | Dual-GPU, siehe Troubleshooting |
| m13 | MBP 13" Late 2013 | i5 | Intel Iris | keine Dual-GPU-Probleme |
WLAN: m13 hat BCM4360 (proprietaerer wl-Treiber noetig, kein Treiber im Ubuntu-Installer!), m16 hat BCM43602 [14e4:43ba] und laeuft mit dem In-Kernel-Treiber brcmfmac.
Projekte synchronisieren
Alle Git-Projekte zwischen Macs synchron halten:
gitsync # lokales Skript - taegliche Arbeit
mac-sync # holt Skript frisch vom Server - nach laengerer Pause
Auf einem komplett frischen Mac (noch ohne .zshrc) einmalig:
curl -fsSL https://git.motocamp.de/rene/dotfiles-rene/raw/branch/main/bin/git-sync-all.sh | bash
Danach stehen gitsync und mac-sync als Alias zur Verfuegung.
Das Skript klont fehlende Repos, pullt Remote-Aenderungen und pusht lokale Commits.
Installations-Ablauf
WICHTIG: Immer das Stock Ubuntu 24.04 Server ISO verwenden, NICHT das custom ISO (build-iso.sh). Grund: Broadcom-WLAN hat keinen Treiber in der Live-Umgebung. Nur der interaktive Installer hat einen eingebauten WLAN-Schritt.
1. USB-Stick vorbereiten
# Stock ISO herunterladen
# https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
# Auf USB-Stick schreiben (macOS)
sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/rdiskN bs=4m status=progress
2. Ubuntu installieren
- USB-Stick einstecken, MacBook einschalten, Alt-Taste gedrückt halten
- "EFI Boot" auswaehlen
- Interaktiv installieren:
- Sprache: Deutsch
- Tastatur: Deutsch
- WLAN im Installer einrichten (wichtig!)
- User:
rene - LVM: ja
- Neustarten, als
reneeinloggen
3. System-Setup (setup-base.sh)
# Fuer MBP 16":
curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-base.sh | sudo bash -s -- 16
# Fuer MBP 13":
curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-base.sh | sudo bash -s -- 13
Installiert: xubuntu-desktop, Treiber, WireGuard, NetworkManager, mbpfan, Flatpak, SSH-Server u.v.m.
Danach: sudo reboot
4. Desktop-Setup (setup-desktop.sh)
In XFCE einloggen. Das Skript startet automatisch via Autostart im Terminal-Fenster.
Falls nicht automatisch gestartet:
curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-desktop.sh | bash
Installiert: oh-my-zsh, Powerlevel10k, Claude Code, PrusaSlicer, Dotfiles, XFCE-Konfiguration.
5. Manuelle Schritte
- Synology Drive Client:
.debvon synology.com,sudo dpkg -i ... - Thunderbird: Profil aus Synology Drive einbinden
- Brave Browser: Sync-Kette beitreten
Dateien
| Datei | Beschreibung |
|---|---|
setup-base.sh |
System-Setup: Pakete, Configs, Locale, Services |
setup-desktop.sh |
Desktop-Setup: oh-my-zsh, Claude Code, Dotfiles, XFCE |
setup.sh |
Wrapper (ruft beide auf) |
CLAUDE.md |
Projektkontext fuer Claude Code (Erkenntnisse, Lessons Learned) |
mbpfan-13.conf |
Lueftersteuerung MBP 13" |
mbpfan-16.conf |
Lueftersteuerung MBP 16" (aggressiver) |
hid_apple.conf |
Fn-Tasten als Standard |
keyboard |
Tastaturbelegung Deutsch (Macintosh) |
blacklist-nvidia.conf |
Nvidia/nouveau blacklisten (MBP 13", optional) |
wezterm.lua |
WezTerm-Konfiguration (Cross-platform: macOS + Linux) |
temp-watch.sh |
Temperatur-Ueberwachung mit Notification |
wireguard/ |
WireGuard-Konfigurationen — nicht im Repo, lokal bereitstellen (siehe wireguard/README.md) |
WezTerm
WezTerm ist das gemeinsame Terminal fuer macOS und Linux. Eine einzige Config-Datei funktioniert auf allen Geraeten identisch (Catppuccin Macchiato, MesloLGS NF, Powerlevel10k).
Auf neuen Maschinen wird WezTerm automatisch durch die Setup-Skripte eingerichtet.
Konfiguration auf bestehenden Maschinen (m13/m16) aktualisieren:
# WezTerm installieren (falls noch nicht vorhanden)
curl -fsSL https://apt.fury.io/wez/gpg.key | sudo gpg --yes --dearmor -o /usr/share/keyrings/wezterm-fury.gpg
echo 'deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *' | sudo tee /etc/apt/sources.list.d/wezterm.list
sudo apt update && sudo apt install -y wezterm
# Konfiguration aus Repo laden (WezTerm laedt sie automatisch neu)
curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/wezterm.lua -o ~/.wezterm.lua
# WezTerm als Standard-Terminal setzen (x-terminal-emulator + XFCE)
sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/wezterm 50
sudo update-alternatives --set x-terminal-emulator /usr/bin/wezterm
grep -q "^TerminalEmulator=" ~/.config/xfce4/helpers.rc 2>/dev/null \
&& sed -i 's/^TerminalEmulator=.*/TerminalEmulator=wezterm/' ~/.config/xfce4/helpers.rc \
|| echo "TerminalEmulator=wezterm" >> ~/.config/xfce4/helpers.rc
macOS: WezTerm einfach starten — als Standard in System Settings > Desktop & Dock > "Standard-Terminalanwendung" manuell auf WezTerm setzen.
Paketquellen
| App | Quelle | Grund |
|---|---|---|
| LibreOffice | Snap | .deb zeigt "benutzerdefinierte Installation nicht abgeschlossen" |
| FreeCAD | Snap | Standard |
| Brave Browser | Flatpak | .deb crasht (SIGTRAP/int3) auf aelterer Hardware |
| PrusaSlicer | Flatpak | Standard |
Netzwerk
- Heimnetz:
10.47.11.0/24 - Fritz!Box:
10.47.11.1 - Synology:
10.47.11.10(dsm.motocamp.de) - WireGuard VPN:
10.13.13.x(Server:24.134.39.137:443) - m16 erreichbar per
ssh rene@m16.local
Troubleshooting
WLAN geht nicht nach Installation
Nur m13 (BCM4360) braucht den proprietaeren Treiber:
sudo apt install bcmwl-kernel-source
sudo modprobe wl
m16 (BCM43602) nutzt brcmfmac aus dem Kernel. Dort darf bcmwl-kernel-source
gerade nicht installiert sein: der DKMS-Treiber von 2015 baut gegen neuere
Kernel nicht mehr und laesst danach jede Paketinstallation in einen
dpkg-Fehler laufen.
Grafik: kein Hardware-Rendering (MBP 15" Mid 2015)
Symptom: glxinfo -B zeigt llvmpipe und Accelerated: no, der XFCE-Compositor
muss aus bleiben, alles fuehlt sich zaeh an.
Ursache (gemessen 2026-08-28): Apples Firmware schaltet die Intel-GPU ab, wenn
etwas anderes als macOS bootet — sie ist dann nicht einmal auf dem PCI-Bus. Wer
zusaetzlich radeon und amdgpu blockt (so stand es hier frueher), hat gar
keine GPU mehr: der Desktop laeuft auf dem EFI-Framebuffer (simpledrm) in
Software.
Pruefen:
ls /dev/dri/ # renderD128 fehlt => keine GPU
lspci -nn | grep -i vga # taucht 8086:0d26 auf?
cat /sys/class/drm/card*-eDP-1/status # wer hat das Panel?
Loesung:
sudo apt install linux-generic-hwe-24.04 # >= 6.11: EFI-Stub gibt die iGPU frei
echo "blacklist amdgpu" | sudo tee /etc/modprobe.d/blacklist-radeon.conf
# in /etc/default/grub an GRUB_CMDLINE_LINUX_DEFAULT anhaengen:
# radeon.si_support=1 amdgpu.si_support=0 iommu=pt
sudo update-initramfs -u -k all && sudo update-grub && sudo reboot
iommu=pt gehoert zwingend dazu. Ohne den Parameter weist die IOMMU (VT-d) die
DMA-Zugriffe der Radeon zurueck und das Bild flackert:
sudo dmesg | grep -c "DMAR:.*fault" # 90 in 65 s ohne iommu=pt, 0 mit
Danach: VERDE (radeonsi), Accelerated: yes, 2 GB VRAM, Panel auf eDP-1.
Die Intel-GPU ist dann ebenfalls aktiv (card1, i915), hat aber kein Panel —
das haengt am gmux auf der AMD-Seite. Umschalten waere ueber
/sys/kernel/debug/vgaswitcheroo/switch moeglich (nur mit gestopptem X);
der dauerhafte Weg per EFI-NVRAM (gpu-switch -i) hat auf MacBookPro11,5 einen
dokumentierten Schwarzbild-Fall — Rueckweg nur per PRAM-Reset.
Boot haengt (wartet auf Netzwerk)
sudo systemctl disable systemd-networkd-wait-online.service
Display-Einstellungen oeffnen sich in Endlosschleife (MBP 16")
sudo mv /usr/bin/xfce4-display-settings /usr/bin/xfce4-display-settings.bak
WireGuard: keine Verbindung
sudo wg show
# Pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein!
# Falls doch: falscher Key in der Config, Server-PublicKey einsetzen.