Fix MBP 16": Nvidia blacklisten, nomodeset, Compositor aus, SSH, sudo

Probleme beim ersten MBP 16" Setup behoben:
- Nvidia-Treiber werden NICHT mehr installiert, stattdessen alle
  Nvidia-Module komplett geblockt (blacklist-nvidia.conf)
- GRUB: nomodeset fuer MBP 16" (verhindert GPU-Artefakte)
- XFCE Compositor deaktiviert fuer MBP 16"
- Sleep/Suspend waehrend Installation verhindert
- openssh-server in Paketliste (SSH-Zugriff ab erstem Boot)
- user-data: rene zur sudo-Gruppe, install-server: true
- FreeCAD Snap: Fehler in chroot abfangen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
rene 2026-03-08 09:22:19 +01:00
parent 32b49f81a5
commit de67fff30c
2 changed files with 60 additions and 23 deletions

View file

@ -32,13 +32,18 @@ echo "════════════════════════
echo " setup-base.sh für MBP $MODEL\" startet" echo " setup-base.sh für MBP $MODEL\" startet"
echo "════════════════════════════════════════════" echo "════════════════════════════════════════════"
# ── 0. Sleep/Suspend verhindern während Installation ─────────────────────
echo -e "\n=== 0/9 Sleep verhindern ==="
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
ok "Sleep/Suspend deaktiviert (für Installation)"
# ── 1. System aktualisieren ────────────────────────────────────────────── # ── 1. System aktualisieren ──────────────────────────────────────────────
echo -e "\n=== 1/8 System aktualisieren ===" echo -e "\n=== 1/9 System aktualisieren ==="
apt update && apt upgrade -y apt update && apt upgrade -y
ok "System aktuell" ok "System aktuell"
# ── 2. Pakete installieren ─────────────────────────────────────────────── # ── 2. Pakete installieren ───────────────────────────────────────────────
echo -e "\n=== 2/8 Pakete installieren ===" echo -e "\n=== 2/9 Pakete installieren ==="
apt install -y \ apt install -y \
xubuntu-desktop \ xubuntu-desktop \
bcmwl-kernel-source \ bcmwl-kernel-source \
@ -51,6 +56,7 @@ apt install -y \
python3 python3-pip python3-venv \ python3 python3-pip python3-venv \
nodejs npm \ nodejs npm \
wireguard wireguard-tools \ wireguard wireguard-tools \
openssh-server \
libreoffice libreoffice-l10n-de \ libreoffice libreoffice-l10n-de \
thunderbird thunderbird-locale-de \ thunderbird thunderbird-locale-de \
keepassxc \ keepassxc \
@ -64,22 +70,26 @@ apt install -y \
ok "Pakete installiert (apt)" ok "Pakete installiert (apt)"
# FreeCAD via Snap (nicht in Ubuntu 24.04 Repos verfügbar) # FreeCAD via Snap (nicht in Ubuntu 24.04 Repos verfügbar)
snap install freecad snap install freecad 2>/dev/null || warn "FreeCAD Snap übersprungen (chroot)"
ok "FreeCAD installiert (snap)" ok "FreeCAD installiert (snap)"
# ── 3. Nvidia (nur MBP 16") ────────────────────────────────────────────── # ── 3. Nvidia blacklisten (MBP 16") ─────────────────────────────────────
if [[ "$MODEL" == "16" ]]; then if [[ "$MODEL" == "16" ]]; then
echo -e "\n=== 3/8 Nvidia Optimus (MBP 16\") ===" echo -e "\n=== 3/9 Nvidia blacklisten (MBP 16\") ==="
apt install -y nvidia-driver-535 nvidia-prime bbswitch-dkms cat > /etc/modprobe.d/blacklist-nvidia.conf <<NVEOF
prime-select intel blacklist nouveau
ok "Nvidia installiert, Intel als Standard-GPU gesetzt" blacklist nvidia
blacklist nvidia_drm
blacklist nvidia_modeset
NVEOF
ok "Nvidia-Module komplett geblockt"
else else
echo -e "\n=== 3/8 Nvidia (MBP 13\") — übersprungen ===" echo -e "\n=== 3/9 Nvidia (MBP 13\") — übersprungen ==="
ok "Kein Nvidia auf MBP 13\"" ok "Kein Nvidia auf MBP 13\""
fi fi
# ── 4. Brave Browser ───────────────────────────────────────────────────── # ── 4. Brave Browser ─────────────────────────────────────────────────────
echo -e "\n=== 4/8 Brave Browser ===" echo -e "\n=== 4/9 Brave Browser ==="
curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg \ curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg \
https://brave-keyring.s3.brave.com/brave-browser-archive-keyring.gpg https://brave-keyring.s3.brave.com/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] \ echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] \
@ -89,7 +99,7 @@ apt update && apt install -y brave-browser
ok "Brave installiert" ok "Brave installiert"
# ── 5. Konfigurationsdateien ───────────────────────────────────────────── # ── 5. Konfigurationsdateien ─────────────────────────────────────────────
echo -e "\n=== 5/8 Systemkonfigurationen ===" echo -e "\n=== 5/9 Systemkonfigurationen ==="
# Tastaturbelegung # Tastaturbelegung
tee /etc/default/keyboard > /dev/null <<EOF tee /etc/default/keyboard > /dev/null <<EOF
@ -110,17 +120,37 @@ cp /tmp/mbpfan.conf /etc/mbpfan.conf
wget -q -O /usr/local/bin/temp-watch.sh "$SETUP_RAW/temp-watch.sh" wget -q -O /usr/local/bin/temp-watch.sh "$SETUP_RAW/temp-watch.sh"
chmod +x /usr/local/bin/temp-watch.sh chmod +x /usr/local/bin/temp-watch.sh
# Nvidia blacklist (nur MBP 16", optional) # GRUB: nomodeset für MBP 16" (Nvidia/GPU-Probleme verhindern)
if [[ "$MODEL" == "16" ]]; then if [[ "$MODEL" == "16" ]]; then
wget -q -O /tmp/blacklist-nvidia.conf "$SETUP_RAW/blacklist-nvidia.conf" sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"/' /etc/default/grub
warn "MBP 16\": blacklist-nvidia.conf liegt in /tmp — nur aktivieren wenn Nvidia nicht gebraucht wird" update-grub 2>/dev/null || true
ok "GRUB: nomodeset gesetzt (MBP 16\")"
fi fi
update-initramfs -u update-initramfs -u
ok "Systemkonfigurationen gesetzt" ok "Systemkonfigurationen gesetzt"
# ── 6. Energieeinstellungen (systemd) ──────────────────────────────────── # ── 6. XFCE Compositor deaktivieren (MBP 16") ────────────────────────────
echo -e "\n=== 6/8 Energieeinstellungen ===" if [[ "$MODEL" == "16" ]]; then
echo -e "\n=== 6/9 XFCE Compositor deaktivieren ==="
XFWM4_DIR="/home/rene/.config/xfce4/xfconf/xfce-perchannel-xml"
mkdir -p "$XFWM4_DIR"
cat > "$XFWM4_DIR/xfwm4.xml" <<XFEOF
<?xml version="1.0" encoding="UTF-8"?>
<channel name="xfwm4" version="1.0">
<property name="general" type="empty">
<property name="use_compositing" type="bool" value="false"/>
</property>
</channel>
XFEOF
chown -R 1000:1000 /home/rene/.config/xfce4
ok "XFCE Compositor deaktiviert (MBP 16\")"
else
echo -e "\n=== 6/9 XFCE Compositor — beibehalten (MBP 13\") ==="
fi
# ── 7. Energieeinstellungen (systemd) ────────────────────────────────────
echo -e "\n=== 7/9 Energieeinstellungen ==="
tee /etc/systemd/sleep.conf > /dev/null <<EOF tee /etc/systemd/sleep.conf > /dev/null <<EOF
[Sleep] [Sleep]
@ -134,31 +164,36 @@ EOF
ok "Energieeinstellungen gesetzt" ok "Energieeinstellungen gesetzt"
# ── 7. Lokalisierung ──────────────────────────────────────────────────── # ── 8. Lokalisierung ────────────────────────────────────────────────────
echo -e "\n=== 7/8 Lokalisierung ===" echo -e "\n=== 8/9 Lokalisierung ==="
locale-gen de_DE.UTF-8 locale-gen de_DE.UTF-8
update-locale LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8 update-locale LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8
timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime timedatectl set-timezone Europe/Berlin 2>/dev/null || ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
ok "Lokalisierung: Deutsch / Berlin" ok "Lokalisierung: Deutsch / Berlin"
# ── 8. Services aktivieren ────────────────────────────────────────────── # ── 9. Services aktivieren ──────────────────────────────────────────────
echo -e "\n=== 8/8 Services aktivieren ===" echo -e "\n=== 9/9 Services aktivieren ==="
systemctl enable mbpfan systemctl enable mbpfan
systemctl enable thermald systemctl enable thermald
systemctl enable tlp systemctl enable tlp
systemctl enable ssh
# --now nur wenn nicht in chroot # --now nur wenn nicht in chroot
if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then if [[ "$(stat -c %d:%i /)" == "$(stat -c %d:%i /proc/1/root/.)" ]] 2>/dev/null; then
systemctl start mbpfan systemctl start mbpfan
systemctl start thermald systemctl start thermald
systemctl start ssh
sensors-detect --auto 2>/dev/null || true sensors-detect --auto 2>/dev/null || true
ok "mbpfan, thermald, tlp aktiv (gestartet)" ok "mbpfan, thermald, tlp, ssh aktiv (gestartet)"
else else
ok "mbpfan, thermald, tlp aktiviert (Start nach Reboot)" ok "mbpfan, thermald, tlp, ssh aktiviert (Start nach Reboot)"
fi fi
# ── zsh als Standard-Shell für rene ────────────────────────────────────── # ── zsh als Standard-Shell für rene ──────────────────────────────────────
chsh -s /bin/zsh rene 2>/dev/null || true chsh -s /bin/zsh rene 2>/dev/null || true
# ── Sleep wieder erlauben ────────────────────────────────────────────────
systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
echo "" echo ""
echo "════════════════════════════════════════════" echo "════════════════════════════════════════════"
echo -e " ${GREEN}setup-base.sh abgeschlossen!${NC}" echo -e " ${GREEN}setup-base.sh abgeschlossen!${NC}"

View file

@ -10,11 +10,13 @@ autoinstall:
username: rene username: rene
password: "$6$lXt4c5wub9FgGOj2$rjwW.UjraH2yYwxabXH.diOu86KSfW.AZvIVRmScbH7Nmh.zLbeMbNITGtRKfpGhe01nqgw4fL8QK67B1oWaq." password: "$6$lXt4c5wub9FgGOj2$rjwW.UjraH2yYwxabXH.diOu86KSfW.AZvIVRmScbH7Nmh.zLbeMbNITGtRKfpGhe01nqgw4fL8QK67B1oWaq."
ssh: ssh:
install-server: false install-server: true
storage: storage:
layout: layout:
name: lvm name: lvm
late-commands: late-commands:
# User rene zur sudo-Gruppe hinzufuegen
- curtin in-target --target=/target -- usermod -aG sudo rene
# System-Setup in chroot (Pakete, Configs, Locale, Services) # System-Setup in chroot (Pakete, Configs, Locale, Services)
- curtin in-target --target=/target -- bash -c 'curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-base.sh | bash -s -- 13' - curtin in-target --target=/target -- bash -c 'curl -fsSL https://git.motocamp.de/rene/macbook-setup/raw/branch/main/setup-base.sh | bash -s -- 13'
# Desktop-Setup als Firstboot-Autostart einrichten # Desktop-Setup als Firstboot-Autostart einrichten