# macbook-setup Automatisiertes Ubuntu 24.04 (Xubuntu-Desktop) Setup fuer alte MacBook Pros. ## Unterstuetzte Hardware | Bezeichnung | Modell | CPU | GPU | Besonderheiten | |---|---|---|---|---| | m16 | MBP 15" Mid 2014 | i7-4980HQ | Intel HD 5200 + AMD Radeon R9 M370X | AMD wird geblockt | | m13 | MBP 13" Late 2013 | i5 | Intel Iris | keine Dual-GPU-Probleme | Beide haben Broadcom BCM4360 WLAN (kein Treiber im Ubuntu-Installer!). ## Projekte synchronisieren Alle Git-Projekte zwischen Macs synchron halten: ```bash gitsync # lokales Skript - taegliche Arbeit mac-sync # holt Skript frisch vom Server - nach laengerer Pause ``` Auf einem komplett frischen Mac (noch ohne .zshrc) einmalig: ```bash 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 ```bash # 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 1. USB-Stick einstecken, MacBook einschalten, **Alt-Taste** gedrückt halten 2. "EFI Boot" auswaehlen 3. Interaktiv installieren: - Sprache: Deutsch - Tastatur: Deutsch - **WLAN im Installer einrichten** (wichtig!) - User: `rene` - LVM: ja 4. Neustarten, als `rene` einloggen ### 3. System-Setup (setup-base.sh) ```bash # 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: ```bash 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:** `.deb` von 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 (m13, m16) | ## 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:** ```bash # 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 ```bash sudo apt install bcmwl-kernel-source sudo modprobe wl ``` ### Bildschirm flackert / Grafikartefakte (MBP 16") AMD Radeon R9 M370X muss geblockt werden: ```bash echo -e "blacklist radeon\nblacklist amdgpu" | sudo tee /etc/modprobe.d/blacklist-radeon.conf sudo update-initramfs -u && sudo reboot ``` ### Boot haengt (wartet auf Netzwerk) ```bash sudo systemctl disable systemd-networkd-wait-online.service ``` ### Display-Einstellungen oeffnen sich in Endlosschleife (MBP 16") ```bash sudo mv /usr/bin/xfce4-display-settings /usr/bin/xfce4-display-settings.bak ``` ### WireGuard: keine Verbindung ```bash sudo wg show # Pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein! # Falls doch: falscher Key in der Config, Server-PublicKey einsetzen. ```