macbook-setup/CLAUDE.md
rene cac6336c94 setup-base: Terminal-Tools (bat, eza, fd, fzf, rg, tldr, ncdu, duf)
Moderne CLI-Tools als apt-Pakete aufgenommen. CLAUDE.md um
asciiquarium-Abhaengigkeiten und Powerlevel10k Instant Prompt
Hinweis ergaenzt.
2026-03-15 11:31:24 +01:00

5.5 KiB
Raw Blame History

macbook-setup - Projektkontext fuer Claude Code

Projekt-Uebersicht

Setup-Skripte fuer Ubuntu 24.04 auf alten MacBook Pros (Xubuntu-Desktop). Repo liegt auf Gitea: git.motocamp.de/rene/macbook-setup

Hardware

Bezeichnung Modell CPU GPU Display Besonderheiten
m16 MBP 15" Mid 2014 i7-4980HQ Intel HD 5200 + AMD Radeon R9 M370X Retina (2x) AMD muss geblockt werden (amdgpu blacklist)
m13 MBP 13" Late 2013 - nur Intel Retina (2x) -
  • WLAN: Broadcom BCM4360 (kein Treiber im Ubuntu-Installer!)
  • m16 erreichbar per ssh rene@m16.local, sudo ohne Passwort konfiguriert

Netzwerk

  • Subnetz: 10.47.11.0/24
  • Fritz!Box: 10.47.11.1
  • Synology: 10.47.11.10 (dsm.motocamp.de)

Installations-Workflow (WICHTIG)

  1. Stock Ubuntu 24.04 Server ISO auf USB-Stick (dd) - NICHT das custom ISO (build-iso.sh)!
  2. Interaktiv installieren: Sprache, Tastatur, WLAN im Installer einrichten, User rene, LVM
  3. Neustarten, einloggen als rene
  4. curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-base.sh | sudo bash -s -- 16
  5. Neustarten, in XFCE einloggen
  6. curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-desktop.sh | bash

Warum kein custom ISO: Broadcom-WLAN hat keinen Treiber in der Live-Umgebung. Der interaktive Installer hat einen eingebauten WLAN-Schritt. Ohne Netzwerk koennen die Setup-Skripte nicht heruntergeladen werden.

Arbeitsweise

  • Rene verbindet sich per SSH auf das MacBook und fuehrt Befehle dort aus
  • Wenn Befehle auf dem MacBook noetig sind: per ssh rene@<ip> verbinden und dort ausfuehren (statt den User bitten, Befehle abzutippen)

Paketquellen-Zuordnung

  • apt: System-Pakete, xubuntu-desktop, Thunderbird, KeePassXC, default-jre etc.
  • Snap: FreeCAD, LibreOffice (wegen "benutzerdefinierte Installation nicht abgeschlossen" Bug bei .deb), Bitwarden
  • Flatpak: Brave Browser (wegen SIGTRAP/int3 Crash bei .deb auf aelterer HW), PrusaSlicer
  • flatpak muss in setup-base.sh (root) installiert werden, nicht in setup-desktop.sh (user)

Geloeste Probleme (Lessons Learned)

Brave Browser

  • .deb Version crasht mit SIGTRAP (int3) auf aelterer Hardware
  • AppArmor apparmor_restrict_unprivileged_userns=1 war NICHT die Ursache
  • Loesung: Flatpak verwenden

LibreOffice

  • .deb Version zeigt "benutzerdefinierte Installation nicht abgeschlossen"
  • Loesung: Snap verwenden
  • default-jre Paket noetig (behebt "javaldx failed" in Writer)

HiDPI / Retina Display

  • GDK WindowScalingFactor=2 + DPI=96 (NICHT 128!)
  • Cursor-Groesse: 48
  • xfwm4: Default-xhdpi Theme
  • XFCE Compositor deaktivieren
  • xfce4-display-settings deaktivieren (verursacht Endlosschleife)

Tastatur

  • iso_layout=1 + de (mit Dead Keys, NICHT nodeadkeys) + lv3:lalt_switch
  • nodeadkeys verhindert Akzent-Kombination (´e statt é)
  • XFCE Keyboard-Override deaktivieren (XkbDisable)

Netzwerk & WLAN

  • NetworkManager statt netplan fuer WLAN
  • WLAN-Config beim netplan-zu-NM Umstieg erhalten
  • systemd-networkd-wait-online deaktivieren
  • cloud-init deaktivieren nach Installation
  • /etc/hosts: dsm.motocamp.de → 10.47.11.10 (Synology direkt), git.motocamp.de → 10.47.11.23 (NPM/macvlan, da Gitea hinter Reverse Proxy)

WireGuard VPN

  • Konfiguration via NetworkManager .nmconnection (nicht wg-quick)
  • DNS + dns-search direkt im NM-Profil
  • Key-Verwechslung: m16/m13 hatten eigenen PublicKey als Peer-PublicKey eingetragen. NM zeigt keinen Fehler, wg show zeigt einfach keine Peers. Immer pruefen: local public key darf NICHT gleich dem Peer-PublicKey sein.
  • Server-PublicKey gegen funktionierende Clients verifizieren

WireGuard Server-Referenz

  • Server: 24.134.39.137:443 (VPS, Interface ens3)
  • Server-PublicKey: mp0YKEjsUbnld3aTAnF6cSzTfixhZETQCoKiFHIcF30=
  • Peer-IPs: .2=iPhoneR, .3=iPhoneM, .4=iPadR, .5=iPadM, .6=m1, .7=m16, .8=m13
  • DNS im VPN: 10.47.11.20 (Fritz!Box), 10.47.11.1 (Gateway)
  • Server macht NAT/Masquerade ueber ens3

EFI / Boot

  • auto-boot EFI-Variable auf false setzen: verhindert automatischen Start beim Anstecken des Netzteils
  • Variable: /sys/firmware/efi/efivars/auto-boot-7c436110-ab2a-4bbb-a880-fe41995c9f82

Setup-Skripte

  • macOS-Installer hinterlaesst macOS-sudoers: setup-base.sh ersetzt sie durch Linux-Standard
  • setup-desktop.sh: set -e entfernt, Unicode durch ASCII ersetzt
  • setup-desktop.sh Autostart braucht Terminal-Fenster (xfce4-terminal) fuer interaktive Eingaben
  • setup.sh: read von /dev/tty bei curl|bash
  • Sleep/Suspend waehrend Installation verhindern
  • DPMS gestaffelt: 5/6/7 Min (Blank/Sleep/Off)

Zsh & Tools

  • oh-my-zsh, Powerlevel10k, zsh-syntax-highlighting, MesloLGS NF Font
  • PlatformIO via pipx
  • h2j (HEIC-Konverter), zoxide, micro
  • Terminal-Tools (apt): bat, eza, fd-find, fzf, ripgrep, tldr, ncdu, duf
  • Ubuntu: fd heisst fdfind, bat heisst batcat — Aliases in .zshrc gesetzt
  • tools Alias zeigt Cheat-Sheet mit allen Befehlen, Aliases und Skripten
  • gitcheck Alias funktioniert in interaktiver Shell (nicht via zsh -l -c, das ist normal)
  • Powerlevel10k Instant Prompt: POWERLEVEL9K_INSTANT_PROMPT=quiet muss VOR dem source stehen, nicht in .p10k.zsh (wird sonst ueberschrieben)

asciiquarium

  • benoetigt Perl-Modul Term::Animation (nicht in apt verfuegbar)
  • Abhaengigkeiten: libcurses-perl (apt) + Term::Animation (CPAN)

Autoinstall (archiviert, nicht mehr verwendet)

  • YAML-Heredocs brechen den Parser: printf mit \n verwenden
  • Kernel-Parameter-Syntax fuer autoinstall dokumentiert
  • Wurde verworfen wegen fehlendem WLAN-Treiber im Live-System