Ehrweb.de

macOS-Tipps: Linux-System von Mac aus vorbereiten

Praxiswissen für Systemadministratorinnen, Administratoren und technische Assistenten (KI): typische Stolperfallen beim Schreiben eines Linux-Rootfs auf eine externe SSD unter macOS. Die Hinweise sind bewusst allgemein gehalten.

Schnellfindung: Stichwort suchen oder rechts eine Kategorie wählen – Tipps lassen sich einzeln aufklappen.

Dateirechte & Kopieren

sudo meldet fehlendes setuid nach dem Kopieren
rsyncsetuidkritisch

Symptom: Nach dem Imaging vom Mac startet Linux, aber privilegierte Werkzeuge wie sudo verweigern den Dienst.

Tipp: Das mitgelieferte macOS-rsync (oft BSD-/openrsync-Variante) überträgt setuid-/setgid-Bits auf ext4 nicht zuverlässig. Nach dem Kopieren im Quell-Image Dateien mit gesetzten Bits ermitteln und die Modi auf dem Ziel explizit wiederherstellen – bevor der erste Login erwartet wird.

Beispiel (Pfade anpassen)
# Im Quell-Image setuid/setgid finden
find /mnt/src -xdev \( -perm -4000 -o -perm -2000 \) -type f -printf '%m %p\n'

# Auf dem Ziel beispielhaft wiederherstellen
chmod 4755 /mnt/root/usr/bin/sudo
chown root:root /mnt/root/usr/bin/sudo

Apple-Metadaten

Seltsame Fehler durch versteckte Zusatzdateien
AppleDouble._*dpkg

Symptom: „exec format error“ in Login-Skripten, leere XML-Fehler in MIME-Tools oder „Directory not empty“ bei Paketaufräumen.

Tipp: Beim Schreiben von macOS auf Linux entstehen häufig ._*- und Spotlight-/Trash- Artefakte. Beim Kopieren Metadaten deaktivieren, solche Muster ausschließen und danach bereinigen. Zusätzlich im ersten Boot-Setup defensiv nachräumen.

Beispiel (Pfade anpassen)
export COPYFILE_DISABLE=1
rsync -aH \
  --exclude='._*' --exclude='.DS_Store' \
  --exclude='.Spotlight-V100' --exclude='.fseventsd' \
  --exclude='.Trashes' --exclude='.TemporaryItems' \
  /mnt/src/ /mnt/root/

find /mnt/root -xdev -name '._*' -delete
find /mnt/root -xdev -name '.DS_Store' -delete

ext4 unter macOS

Volume wirkt gemountet, ist aber nur lesbar
ext4MountLizenz

Symptom: Kopieren „läuft“, ändert aber nichts oder bricht mit Schreibfehlern ab.

Tipp: Für schreibbaren ext4-Zugriff unter macOS braucht es typischerweise einen dedizierten Treiber. Vor großen Kopierläufen mit einer Testdatei prüfen, ob der Mount wirklich schreibbar ist. Abgelaufene Trials melden oft stillen Nur-Lese-Modus – dann hart abbrechen statt weiterzukopieren.

Beispiel (Pfade anpassen)
# Nach dem Mount: Schreibbarkeit prüfen (Mountpunkt anpassen)
touch /Volumes/ROOT/.write-test && rm /Volumes/ROOT/.write-test && echo "RW OK"

# Wenn der Test fehlschlägt: nicht weiterkopieren
mount | grep -E 'ROOT|ext4' || true
Dateisystem bleibt „dirty“ und mountet nur RO
fsckSuperblock

Symptom: Prüfung läuft, danach bleibt das Volume trotzdem schreibgeschützt.

Tipp: Manche macOS-fsck-Läufe reparieren Inodes, setzen aber den „sauber“-Zustand nicht dauerhaft. Dann hilft oft nur Neuformatieren der betroffenen Partition und erneutes Aufspielen – nicht endlos mit Low-Level-Editoren „flicken“.

Beispiel (Pfade anpassen)
# Nur prüfen (Gerät anpassen), kein Blind-Reparatur-Loop
e2fsck -n /dev/diskXsY

# Bei dauerhaft „dirty“: Partition neu formatieren statt endlos flicken
# mkfs.ext4 -F -L ROOT /dev/diskXsY

Boot & erste Inbetriebnahme

Boot scheitert wegen Partitionskennung
UUIDcmdlinefstab

Symptom: Kernel findet Root nicht; Meldung zu fehlender Partitionskennung.

Tipp: Von macOS aus ermittelte Partitionskennungen weichen oft von dem ab, was Linux erwartet (fehlende führende Nullen, andere UUID-Quellen). Für Mac-gebaute Images Dateisystem-UUID bzw. klare Labels bevorzugen; Partitionskennungen nur nutzen, wenn sie unter Linux verifiziert wurden.

Beispiel (Pfade anpassen)
# Unter Linux gelesene Kennungen sind für Boot-Zeilen zuverlässiger
blkid -o export /dev/sdXN

# Bevorzugt Dateisystem-UUID / Label nutzen, z. B.:
# root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Low-Level-Änderungen am ungemounteten Volume
debugfsQuirks

Symptom: Einzelbefehle scheitern still oder Verzeichnisse entstehen nicht.

Tipp: Werkzeuge für ungemountete ext4-Volumes verhalten sich unter macOS empfindlich: Befehle gebündelt übergeben, Partition vorher aushängen, Dateimodi als vollständigen Modus setzen. Virtuelle Mountpunkte (proc, sys, dev, run, tmp), die beim Kopieren ausgeschlossen wurden, müssen vor dem Boot wieder existieren.

Beispiel (Pfade anpassen)
# Partition vorher aushängen, dann Verzeichnisse anlegen
diskutil unmount /dev/diskXsY 2>/dev/null || true
debugfs -w /dev/diskXsY <<'EOF'
mkdir /proc
mkdir /sys
mkdir /dev
mkdir /run
mkdir /tmp
quit
EOF
First-Boot-Dienste zerstören Custom-Partitionierung
systemdresizecloud-init

Symptom: Nach dem ersten Start ist das geplante Layout verändert oder der Boot instabil.

Tipp: Viele Board-Images bringen Dienste mit, die Root automatisch auf die volle Gerätegröße aufblasen. Bei eigener GPT-Aufteilung diese Resize-/First-Boot-Dienste vor dem ersten Start deaktivieren (Maskierung, Wants bereinigen, Cloud-Init-Resize abschalten).

Beispiel (Pfade anpassen)
# Im gemounteten Rootfs Auto-Resize/First-Boot maskieren
ROOT=/mnt/root
for u in \
  systemd-growfs@root.service \
  rpi-resize.service \
  rpi-firstboot.service
do
  mkdir -p "$ROOT/etc/systemd/system"
  ln -sfn /dev/null "$ROOT/etc/systemd/system/$u"
done

mkdir -p "$ROOT/etc/cloud/cloud.cfg.d"
printf '%s\n' 'growpart:' '  mode: false' 'resize_rootfs: false' \
  > "$ROOT/etc/cloud/cloud.cfg.d/99-disable-growpart.cfg"
Home-Verzeichnis gehört dem falschen Benutzer
UIDHome

Symptom: Login möglich, aber Schreibzugriff im Home scheitert.

Tipp: Vorab angelegte Home-Verzeichnisse bleiben oft root-owned. Nach dem Anlegen der User-Konten Besitz und Rechte passend setzen und fehlende Standarddateien aus dem System-Skeleton nachziehen.

Beispiel (Pfade anpassen)
# Benutzer/Pfad anpassen; typisch UID/GID 1000
USER=meinuser
HOME_DIR=/mnt/root/home/$USER
chown -R 1000:1000 "$HOME_DIR"
chmod 750 "$HOME_DIR"
cp -n /mnt/root/etc/skel/.bashrc "$HOME_DIR/" 2>/dev/null || true
cp -n /mnt/root/etc/skel/.profile "$HOME_DIR/" 2>/dev/null || true

Zeit, TLS & erste Updates

HTTPS schlägt mit „certificate not yet valid“ fehl
NTPTLSkritisch

Symptom: Paketquellen, Installer-Skripte oder Zertifikatsausstellung scheitern unmittelbar nach dem ersten Boot.

Tipp: Geräte ohne Echtzeituhr starten oft mit der Build-Zeit des Images. Weicht die Uhr stark ab, gelten Serverzertifikate als ungültig. Zeitzone und Zeitsync vor allen TLS-abhängigen Schritten setzen.

Beispiel (Pfade anpassen)
# Auf dem Zielsystem als Erstes mit Netz
sudo timedatectl set-timezone Europe/Berlin
sudo timedatectl set-ntp true
timedatectl status
date -u

Vertrauensspeicher & ACME

curl meldet fehlende Zertifikatsdatei
CA-Bundlecurl

Symptom: HTTPS-Clients finden den lokalen Vertrauensspeicher nicht; Folgeschritte wirken „kaputt“, obwohl das Netz steht.

Tipp: Beim Imaging den Vertrauensspeicher nicht aussparen. Nach dem ersten Boot prüfen, ob das CA-Bundle vorhanden und gültig ist; bei Bedarf das Paket für CA-Zertifikate neu installieren und den Store neu erzeugen.

Beispiel (Pfade anpassen)
# Bundle prüfen
test -s /etc/ssl/certs/ca-certificates.crt && \
  grep -q 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt && echo OK

# Bei Bedarf neu erzeugen (Debian/Ubuntu)
sudo apt-get install --reinstall -y ca-certificates
sudo update-ca-certificates -f
Automatische Zertifikate (HTTP-01) schlagen fehl
ACMEDNSFirewall

Symptom: Die Zertifizierungsstelle kann die Domain nicht bestätigen.

Tipp: Für HTTP-01 muss der Validierungspfad aus dem Internet ohne Login erreichbar sein, DNS muss auf den richtigen Host zeigen, und der Zugang darf nicht hinter CGNAT ohne öffentliche Erreichbarkeit stecken. Bei wiederholten Fehlversuchen Rate-Limits beachten und Tests ggf. gegen eine Staging-Umgebung fahren.

Beispiel (Pfade anpassen)
# Domain anpassen – Erreichbarkeit für HTTP-01 prüfen
DOMAIN=example.com
dig +short "$DOMAIN" A
curl -fsSI "http://$DOMAIN/.well-known/acme-challenge/ping" | head -n 8 || true

# Tests besser gegen Staging
# sudo certbot certonly --dry-run --webroot -w /var/www/html -d "$DOMAIN"

Verwandt: Linux-Tipps für Host-Imaging · IT Wissen