Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.

Should continued work on 10.6.8 PowerPC and Xcode 3.2.X have its own dedicated thread?

  • Yes - I would like to be able to follow and/or contribute to a Developer Preview thread specifically

    Votes: 0 0.0%
  • Indifferent - I don't care either way i just appreciate the work that's being done

    Votes: 0 0.0%

  • Total voters
    15
  • Poll closed .
Feel free to try the script and find out if you like, or create a new image. You could even use another pre-existing image if you’d prefer. Using A5 is not compulsory. We all have lives and busy schedules.

**edit to add;

This is an ongoing work in progress. All builds will contain bugs, now and moving forward. Feedback, patches, fixes all welcomed. Install test builds, updates and other software shared on this thread at your own risk and convenience.

@ChrisCharman I extend a request to find time to make a corrected A6 image. I very well understand time constraints, but @educovas is not being involved at the moment, and you and him know this matter the best. I could probably handle making a new image, but that would mean dropping work on ports for some time (because I never worked on that and acquiring expertise takes time), which gonna hurt users. AFAIK only A5 has a [mostly] usable networking without special tools, so recommending other images to end-users is not an option. If we care about adoption of our work by others, it is important to have initial set-up straightforward and free from a need to hack it to a usable state. This doesn’t imply any obligations, but it is also a matter-of-fact thing: it is not really about “anyone can spend 5 minutes running a script” (which is true) but rather about “fewer people will be willing to use it, if installation requires unfamiliar steps”.
 
  • Like
Reactions: ChrisCharman
Hi mate. I haven’t booted my PowerPC systems in almost a year and i’ve been in hospital this week for vision loss, so i’m genuinely not in a position to be able to do this currently. If i find the time i will of course create and share, but for now all i can provide is the post-install script which **should** fix the main complaints about A5.

Bash:
#!/bin/bash
#
# Snow Leopard PPC A5 Post-Release Repair Utility
# Version: 8.0
#
# Purpose:
#   Repairs residual build-user artifacts ("powerpcdeveloper", UID/GID 501)
#   left on the released A5 image. These remnants can cause permission issues,
#   ownership mismatches, and broken network behavior on user systems.
#
# Targets:
#   Snow Leopard PPC A5 installs on G4/G5 systems
#
# What this script does:
#   1. Repairs stray UID/GID 501 ownership on system files
#   2. Restores critical permissions on key binaries
#   3. Resets stale network identity/configuration state
#   4. Rebuilds caches
#   5. Optionally applies performance tuning
#
# What this script does NOT do:
#   - It does NOT wipe /Users
#   - It does NOT delete user home folders
#   - It does NOT intentionally alter personal files
#
# Usage:
#   sudo bash slppc-a5-repair.sh
#

set -u

SCRIPT_NAME="Snow Leopard PPC A5 Post-Release Repair Utility"
SCRIPT_VERSION="8.0"
LOG_FILE="/var/log/slppc-a5-repair.log"
BACKUP_DIR="/var/backups/slppc-a5-repair-$(date +%Y%m%d-%H%M%S)"

log() {
    echo "$1"
    echo "$1" >> "$LOG_FILE"
}

run_quiet() {
    "$@" >> "$LOG_FILE" 2>&1
    return $?
}

ask_yes_no() {
    prompt="$1"
    read -p "$prompt [y/N]: " reply
    case "$reply" in
        y|Y|yes|YES)
            return 0
            ;;
        *)
            return 1
            ;;
    esac
}

mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null
touch "$LOG_FILE" 2>/dev/null

log "============================================================"
log "$SCRIPT_NAME v$SCRIPT_VERSION"
log "Started: $(date)"
log "============================================================"

if [ "$(id -u)" -ne 0 ]; then
    echo "Error: This script must be run as root."
    echo "Use: sudo bash $0"
    exit 1
fi

echo
echo "This utility repairs leftover developer-account artifacts from the"
echo "released A5 image."
echo
echo "Specifically, it targets residual ownership/state from:"
echo "  powerpcdeveloper (UID/GID 501)"
echo
echo "It will:"
echo "  - fix affected system file ownership"
echo "  - restore critical permissions"
echo "  - reset stale network configuration"
echo "  - rebuild caches"
echo
echo "It will NOT wipe user home folders."
echo

if ! ask_yes_no "Continue with repair"; then
    echo "Aborted."
    exit 0
fi

mkdir -p "$BACKUP_DIR" 2>/dev/null

log ""
log "--- 1. REPAIRING LEFTOVER BUILD-USER OWNERSHIP ---"
log "[*] Scanning core system paths for UID/GID 501 remnants ..."
SYSTEM_PATHS="/bin /sbin /usr /System /Library /etc /var"

for path in $SYSTEM_PATHS; do
    if [ -e "$path" ]; then
        find "$path" -user 501 -exec chown root:wheel {} + 2>/dev/null
        find "$path" -group 501 -exec chgrp wheel {} + 2>/dev/null
    fi
done

log "[*] Normalizing /Applications ownership and permissions ..."
if [ -d /Applications ]; then
    run_quiet chown -R root:admin /Applications
    run_quiet chmod -R 775 /Applications
fi

log "[*] Restoring SUID bits on critical executables ..."
for bin in /usr/bin/sudo /usr/bin/passwd /usr/bin/chsh /sbin/mount_nfs /usr/sbin/pppd; do
    if [ -e "$bin" ]; then
        run_quiet chmod 4755 "$bin"
    fi
done

log ""
log "--- 2. NETWORK STATE REPAIR ---"
log "[*] Backing up existing network configuration to $BACKUP_DIR ..."
for f in \
    /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist \
    /Library/Preferences/SystemConfiguration/preferences.plist \
    /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist
do
    if [ -f "$f" ]; then
        cp -p "$f" "$BACKUP_DIR"/ >> "$LOG_FILE" 2>&1
    fi
done

log "[*] Rebuilding resolver configuration ..."
mkdir -p /etc/resolver 2>/dev/null
cat > /etc/resolver/local <<'EOF'
nameserver 8.8.8.8
options use-vc
EOF

log "[*] Removing stale network identity/preferences files ..."
rm -f /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/preferences.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist >> "$LOG_FILE" 2>&1

log ""
log "--- 3. CACHE REFRESH ---"
log "[*] Rebuilding DYLD shared cache ..."
if command -v update_dyld_shared_cache >/dev/null 2>&1; then
    update_dyld_shared_cache -force -arch ppc >> "$LOG_FILE" 2>&1 || log "[!] ppc DYLD cache rebuild failed."
    if [ "$(machine 2>/dev/null)" = "ppc970" ]; then
        update_dyld_shared_cache -force -arch ppc64 >> "$LOG_FILE" 2>&1 || log "[!] ppc64 DYLD cache rebuild failed."
    fi
else
    log "[!] update_dyld_shared_cache not found; skipping."
fi

log "[*] Rebuilding kext caches ..."
if command -v kextcache >/dev/null 2>&1; then
    kextcache -system-caches >> "$LOG_FILE" 2>&1 || log "[!] kext cache rebuild failed."
else
    log "[!] kextcache not found; skipping."
fi

log ""
log "--- 4. OPTIONAL PERFORMANCE TUNING ---"
echo
echo "The repair phase is complete."
echo
echo "Optional performance tuning is also available."
echo "This can apply boot arguments, sysctl tuning, and some UI/disk tweaks."
echo "These are optional and not required for the ownership/network repair."
echo

if ask_yes_no "Apply optional performance fixes"; then
    log "[*] User opted in to optional performance tuning."

    log "[*] Setting boot-args ..."
    if command -v nvram >/dev/null 2>&1; then
        run_quiet nvram boot-args="serverperfmode=1 -v debug=0x144 keepsyms=1 maxmem=16384"
    else
        log "[!] nvram not found; skipping boot-args update."
    fi

    log "[*] Applying runtime sysctl tuning ..."
    SYSCTLS="
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.sched_latency=10
net.inet.tcp.rfc1323=1
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
vm.vm_page_free_target=2000
"

    echo "$SYSCTLS" | while IFS= read -r entry; do
        [ -z "$entry" ] && continue
        key="${entry%%=*}"
        value="${entry#*=}"
        if command -v sysctl >/dev/null 2>&1; then
            sysctl -w "${key}=${value}" >> "$LOG_FILE" 2>&1 || log "[!] Failed to set ${key}"
        fi
    done

    log "[*] Attempting to remount root with noatime ..."
    mount -u -o noatime / >> "$LOG_FILE" 2>&1 || log "[!] Could not remount / with noatime; continuing."

    log "[*] Applying UI responsiveness tweaks ..."
    if command -v defaults >/dev/null 2>&1; then
        defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false >> "$LOG_FILE" 2>&1
        defaults write NSGlobalDomain NSWindowResizeTime -float 0.001 >> "$LOG_FILE" 2>&1
    else
        log "[!] defaults command not found; skipping UI tweaks."
    fi
else
    log "[*] User skipped optional performance tuning."
fi

log ""
log "--- COMPLETE ---"
log "[+] Repair complete."
log "[+] Residual build-user ownership/state has been addressed."
log "[+] User accounts and home folders were preserved."
log "[+] Network settings may need to be re-entered after restart."
log "[+] Log written to: $LOG_FILE"
log "[+] Backups stored in: $BACKUP_DIR"

echo
echo "Repair complete."
echo "Log: $LOG_FILE"
echo "Backups: $BACKUP_DIR"
echo

if ask_yes_no "Reboot now"; then
    log "[*] Rebooting now ..."
    sleep 2
    reboot
else
    log "[*] Reboot skipped by user."
    echo "Please reboot manually when convenient."
fi

exit 0

@srp I’ve attached a new zipped version of this script to this post and the previous post, as it’s come to my attention that the files were corrupted on my iPhone. The new .zip should work.
 

Attachments

Last edited:
  • Like
Reactions: barracuda156
Hi mate. I haven’t booted my PowerPC systems in almost a year and i’ve been in hospital this week for vision loss, so i’m genuinely not in a position to be able to do this currently. If i find the time i will of course create and share, but for now all i can provide is the post-install script which **should** fix the main complaints about A5.

Bash:
#!/bin/bash
#
# Snow Leopard PPC A5 Post-Release Repair Utility
# Version: 8.0
#
# Purpose:
#   Repairs residual build-user artifacts ("powerpcdeveloper", UID/GID 501)
#   left on the released A5 image. These remnants can cause permission issues,
#   ownership mismatches, and broken network behavior on user systems.
#
# Targets:
#   Snow Leopard PPC A5 installs on G4/G5 systems
#
# What this script does:
#   1. Repairs stray UID/GID 501 ownership on system files
#   2. Restores critical permissions on key binaries
#   3. Resets stale network identity/configuration state
#   4. Rebuilds caches
#   5. Optionally applies performance tuning
#
# What this script does NOT do:
#   - It does NOT wipe /Users
#   - It does NOT delete user home folders
#   - It does NOT intentionally alter personal files
#
# Usage:
#   sudo bash slppc-a5-repair.sh
#

set -u

SCRIPT_NAME="Snow Leopard PPC A5 Post-Release Repair Utility"
SCRIPT_VERSION="8.0"
LOG_FILE="/var/log/slppc-a5-repair.log"
BACKUP_DIR="/var/backups/slppc-a5-repair-$(date +%Y%m%d-%H%M%S)"

log() {
    echo "$1"
    echo "$1" >> "$LOG_FILE"
}

run_quiet() {
    "$@" >> "$LOG_FILE" 2>&1
    return $?
}

ask_yes_no() {
    prompt="$1"
    read -p "$prompt [y/N]: " reply
    case "$reply" in
        y|Y|yes|YES)
            return 0
            ;;
        *)
            return 1
            ;;
    esac
}

mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null
touch "$LOG_FILE" 2>/dev/null

log "============================================================"
log "$SCRIPT_NAME v$SCRIPT_VERSION"
log "Started: $(date)"
log "============================================================"

if [ "$(id -u)" -ne 0 ]; then
    echo "Error: This script must be run as root."
    echo "Use: sudo bash $0"
    exit 1
fi

echo
echo "This utility repairs leftover developer-account artifacts from the"
echo "released A5 image."
echo
echo "Specifically, it targets residual ownership/state from:"
echo "  powerpcdeveloper (UID/GID 501)"
echo
echo "It will:"
echo "  - fix affected system file ownership"
echo "  - restore critical permissions"
echo "  - reset stale network configuration"
echo "  - rebuild caches"
echo
echo "It will NOT wipe user home folders."
echo

if ! ask_yes_no "Continue with repair"; then
    echo "Aborted."
    exit 0
fi

mkdir -p "$BACKUP_DIR" 2>/dev/null

log ""
log "--- 1. REPAIRING LEFTOVER BUILD-USER OWNERSHIP ---"
log "[*] Scanning core system paths for UID/GID 501 remnants ..."
SYSTEM_PATHS="/bin /sbin /usr /System /Library /etc /var"

for path in $SYSTEM_PATHS; do
    if [ -e "$path" ]; then
        find "$path" -user 501 -exec chown root:wheel {} + 2>/dev/null
        find "$path" -group 501 -exec chgrp wheel {} + 2>/dev/null
    fi
done

log "[*] Normalizing /Applications ownership and permissions ..."
if [ -d /Applications ]; then
    run_quiet chown -R root:admin /Applications
    run_quiet chmod -R 775 /Applications
fi

log "[*] Restoring SUID bits on critical executables ..."
for bin in /usr/bin/sudo /usr/bin/passwd /usr/bin/chsh /sbin/mount_nfs /usr/sbin/pppd; do
    if [ -e "$bin" ]; then
        run_quiet chmod 4755 "$bin"
    fi
done

log ""
log "--- 2. NETWORK STATE REPAIR ---"
log "[*] Backing up existing network configuration to $BACKUP_DIR ..."
for f in \
    /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist \
    /Library/Preferences/SystemConfiguration/preferences.plist \
    /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist
do
    if [ -f "$f" ]; then
        cp -p "$f" "$BACKUP_DIR"/ >> "$LOG_FILE" 2>&1
    fi
done

log "[*] Rebuilding resolver configuration ..."
mkdir -p /etc/resolver 2>/dev/null
cat > /etc/resolver/local <<'EOF'
nameserver 8.8.8.8
options use-vc
EOF

log "[*] Removing stale network identity/preferences files ..."
rm -f /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/preferences.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist >> "$LOG_FILE" 2>&1

log ""
log "--- 3. CACHE REFRESH ---"
log "[*] Rebuilding DYLD shared cache ..."
if command -v update_dyld_shared_cache >/dev/null 2>&1; then
    update_dyld_shared_cache -force -arch ppc >> "$LOG_FILE" 2>&1 || log "[!] ppc DYLD cache rebuild failed."
    if [ "$(machine 2>/dev/null)" = "ppc970" ]; then
        update_dyld_shared_cache -force -arch ppc64 >> "$LOG_FILE" 2>&1 || log "[!] ppc64 DYLD cache rebuild failed."
    fi
else
    log "[!] update_dyld_shared_cache not found; skipping."
fi

log "[*] Rebuilding kext caches ..."
if command -v kextcache >/dev/null 2>&1; then
    kextcache -system-caches >> "$LOG_FILE" 2>&1 || log "[!] kext cache rebuild failed."
else
    log "[!] kextcache not found; skipping."
fi

log ""
log "--- 4. OPTIONAL PERFORMANCE TUNING ---"
echo
echo "The repair phase is complete."
echo
echo "Optional performance tuning is also available."
echo "This can apply boot arguments, sysctl tuning, and some UI/disk tweaks."
echo "These are optional and not required for the ownership/network repair."
echo

if ask_yes_no "Apply optional performance fixes"; then
    log "[*] User opted in to optional performance tuning."

    log "[*] Setting boot-args ..."
    if command -v nvram >/dev/null 2>&1; then
        run_quiet nvram boot-args="serverperfmode=1 -v debug=0x144 keepsyms=1 maxmem=16384"
    else
        log "[!] nvram not found; skipping boot-args update."
    fi

    log "[*] Applying runtime sysctl tuning ..."
    SYSCTLS="
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.sched_latency=10
net.inet.tcp.rfc1323=1
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
vm.vm_page_free_target=2000
"

    echo "$SYSCTLS" | while IFS= read -r entry; do
        [ -z "$entry" ] && continue
        key="${entry%%=*}"
        value="${entry#*=}"
        if command -v sysctl >/dev/null 2>&1; then
            sysctl -w "${key}=${value}" >> "$LOG_FILE" 2>&1 || log "[!] Failed to set ${key}"
        fi
    done

    log "[*] Attempting to remount root with noatime ..."
    mount -u -o noatime / >> "$LOG_FILE" 2>&1 || log "[!] Could not remount / with noatime; continuing."

    log "[*] Applying UI responsiveness tweaks ..."
    if command -v defaults >/dev/null 2>&1; then
        defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false >> "$LOG_FILE" 2>&1
        defaults write NSGlobalDomain NSWindowResizeTime -float 0.001 >> "$LOG_FILE" 2>&1
    else
        log "[!] defaults command not found; skipping UI tweaks."
    fi
else
    log "[*] User skipped optional performance tuning."
fi

log ""
log "--- COMPLETE ---"
log "[+] Repair complete."
log "[+] Residual build-user ownership/state has been addressed."
log "[+] User accounts and home folders were preserved."
log "[+] Network settings may need to be re-entered after restart."
log "[+] Log written to: $LOG_FILE"
log "[+] Backups stored in: $BACKUP_DIR"

echo
echo "Repair complete."
echo "Log: $LOG_FILE"
echo "Backups: $BACKUP_DIR"
echo

if ask_yes_no "Reboot now"; then
    log "[*] Rebooting now ..."
    sleep 2
    reboot
else
    log "[*] Reboot skipped by user."
    echo "Please reboot manually when convenient."
fi

exit 0
I hope you feel better, and that your recovery goes well!
 
Hi mate. I haven’t booted my PowerPC systems in almost a year and i’ve been in hospital this week for vision loss, so i’m genuinely not in a position to be able to do this currently. If i find the time i will of course create and share, but for now all i can provide is the post-install script which **should** fix the main complaints about A5.

Wish you a fast recovery!
 
  • Love
Reactions: ChrisCharman
I hope you feel better, and that your recovery goes well!
Wish you a fast recovery!

Thank you both. I had a scare but the worst potential causes were ruled out, and i’ll just have to be mindful that over time my eyesight is going to deteriorate more significantly. I’ll just buy the eye upgrades when Elon releases them it’s all good.
 
Last edited:
Thank you both. I had a scare but the worst potential causes were ruled out, and i’ll just have to be mindful that over time my eyesight is going to deteriorate more significantly. I’ll just buy the eye upgrades when Elon releases them it’s all good.
Chris,

I’ve been through cataract and cornea surgery (one eye at a time during gaps in COVID lockdown - six months with one nearsighted eye and the other farsighted). Scary, but came through it OK.

I hope that there is a similar light at the end of your tunnel, unrelated to Musk delivering on random promises.
 
Thank you for sharing @ADunsmuir.

Sounds like you’ve been through an ordeal, and come through it. I should be ok for a good while, hopefully, before needing anything like that. Stories like yours really remind us how fragile we are and how strong and resilient we can be as well. Most importantly that this community, is a place where we support each other and cheer each other on, in a world that is far too negative, far too often.
 
Thank you both. I had a scare but the worst potential causes were ruled out, and i’ll just have to be mindful that over time my eyesight is going to deteriorate more significantly.
Or... maybe it won't. Against all odds, it may even get better. Either way, rather than worry about the future, let's just put one foot in front of the other, one day at a time. Let us also have gratitude for the present and everything it brings, because tomorrow is never guaranteed.

If you need anyone, I am here for you my friend. 🙂
 
Last edited:
Hello, haven't been here from moment here,
So I started tinkering around with SL and I have a lot of CDs, so I started copying them on iTunes on SL but MacOS SL has the usb issues also with CDs, they are not disconnected/ejected in finder tho they are physically.
I can't remember if I already told this but Airport TimeCapsule are having issues connecting (I have many and finder do not let me connect)
and I cannot access via afp/smb/ftp my powermac from my apple silicon map
 
Last edited:
Hello, haven't been here from moment here,
So I started tinkering around with SL and I have a lot of CDs, so I started copying them on iTunes on SL but MacOS SL has the usb issues also with CDs, they are not disconnected/ejected in finder tho they are physically.

That is a displaying glitch, they are actually ejected.

and I cannot access via afp/smb/ftp my powermac from my apple silicon map

ssh works, you can also mount a volume via nfs. Neither is straightforward “click-to-make-it-work”, admittedly.
 
Hi mate. I haven’t booted my PowerPC systems in almost a year and i’ve been in hospital this week for vision loss, so i’m genuinely not in a position to be able to do this currently. If i find the time i will of course create and share, but for now all i can provide is the post-install script which **should** fix the main complaints about A5.

Bash:
#!/bin/bash
#
# Snow Leopard PPC A5 Post-Release Repair Utility
# Version: 8.0
#
# Purpose:
#   Repairs residual build-user artifacts ("powerpcdeveloper", UID/GID 501)
#   left on the released A5 image. These remnants can cause permission issues,
#   ownership mismatches, and broken network behavior on user systems.
#
# Targets:
#   Snow Leopard PPC A5 installs on G4/G5 systems
#
# What this script does:
#   1. Repairs stray UID/GID 501 ownership on system files
#   2. Restores critical permissions on key binaries
#   3. Resets stale network identity/configuration state
#   4. Rebuilds caches
#   5. Optionally applies performance tuning
#
# What this script does NOT do:
#   - It does NOT wipe /Users
#   - It does NOT delete user home folders
#   - It does NOT intentionally alter personal files
#
# Usage:
#   sudo bash slppc-a5-repair.sh
#

set -u

SCRIPT_NAME="Snow Leopard PPC A5 Post-Release Repair Utility"
SCRIPT_VERSION="8.0"
LOG_FILE="/var/log/slppc-a5-repair.log"
BACKUP_DIR="/var/backups/slppc-a5-repair-$(date +%Y%m%d-%H%M%S)"

log() {
    echo "$1"
    echo "$1" >> "$LOG_FILE"
}

run_quiet() {
    "$@" >> "$LOG_FILE" 2>&1
    return $?
}

ask_yes_no() {
    prompt="$1"
    read -p "$prompt [y/N]: " reply
    case "$reply" in
        y|Y|yes|YES)
            return 0
            ;;
        *)
            return 1
            ;;
    esac
}

mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null
touch "$LOG_FILE" 2>/dev/null

log "============================================================"
log "$SCRIPT_NAME v$SCRIPT_VERSION"
log "Started: $(date)"
log "============================================================"

if [ "$(id -u)" -ne 0 ]; then
    echo "Error: This script must be run as root."
    echo "Use: sudo bash $0"
    exit 1
fi

echo
echo "This utility repairs leftover developer-account artifacts from the"
echo "released A5 image."
echo
echo "Specifically, it targets residual ownership/state from:"
echo "  powerpcdeveloper (UID/GID 501)"
echo
echo "It will:"
echo "  - fix affected system file ownership"
echo "  - restore critical permissions"
echo "  - reset stale network configuration"
echo "  - rebuild caches"
echo
echo "It will NOT wipe user home folders."
echo

if ! ask_yes_no "Continue with repair"; then
    echo "Aborted."
    exit 0
fi

mkdir -p "$BACKUP_DIR" 2>/dev/null

log ""
log "--- 1. REPAIRING LEFTOVER BUILD-USER OWNERSHIP ---"
log "[*] Scanning core system paths for UID/GID 501 remnants ..."
SYSTEM_PATHS="/bin /sbin /usr /System /Library /etc /var"

for path in $SYSTEM_PATHS; do
    if [ -e "$path" ]; then
        find "$path" -user 501 -exec chown root:wheel {} + 2>/dev/null
        find "$path" -group 501 -exec chgrp wheel {} + 2>/dev/null
    fi
done

log "[*] Normalizing /Applications ownership and permissions ..."
if [ -d /Applications ]; then
    run_quiet chown -R root:admin /Applications
    run_quiet chmod -R 775 /Applications
fi

log "[*] Restoring SUID bits on critical executables ..."
for bin in /usr/bin/sudo /usr/bin/passwd /usr/bin/chsh /sbin/mount_nfs /usr/sbin/pppd; do
    if [ -e "$bin" ]; then
        run_quiet chmod 4755 "$bin"
    fi
done

log ""
log "--- 2. NETWORK STATE REPAIR ---"
log "[*] Backing up existing network configuration to $BACKUP_DIR ..."
for f in \
    /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist \
    /Library/Preferences/SystemConfiguration/preferences.plist \
    /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist
do
    if [ -f "$f" ]; then
        cp -p "$f" "$BACKUP_DIR"/ >> "$LOG_FILE" 2>&1
    fi
done

log "[*] Rebuilding resolver configuration ..."
mkdir -p /etc/resolver 2>/dev/null
cat > /etc/resolver/local <<'EOF'
nameserver 8.8.8.8
options use-vc
EOF

log "[*] Removing stale network identity/preferences files ..."
rm -f /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/preferences.plist >> "$LOG_FILE" 2>&1
rm -f /Library/Preferences/SystemConfiguration/com.apple.network.identification.plist >> "$LOG_FILE" 2>&1

log ""
log "--- 3. CACHE REFRESH ---"
log "[*] Rebuilding DYLD shared cache ..."
if command -v update_dyld_shared_cache >/dev/null 2>&1; then
    update_dyld_shared_cache -force -arch ppc >> "$LOG_FILE" 2>&1 || log "[!] ppc DYLD cache rebuild failed."
    if [ "$(machine 2>/dev/null)" = "ppc970" ]; then
        update_dyld_shared_cache -force -arch ppc64 >> "$LOG_FILE" 2>&1 || log "[!] ppc64 DYLD cache rebuild failed."
    fi
else
    log "[!] update_dyld_shared_cache not found; skipping."
fi

log "[*] Rebuilding kext caches ..."
if command -v kextcache >/dev/null 2>&1; then
    kextcache -system-caches >> "$LOG_FILE" 2>&1 || log "[!] kext cache rebuild failed."
else
    log "[!] kextcache not found; skipping."
fi

log ""
log "--- 4. OPTIONAL PERFORMANCE TUNING ---"
echo
echo "The repair phase is complete."
echo
echo "Optional performance tuning is also available."
echo "This can apply boot arguments, sysctl tuning, and some UI/disk tweaks."
echo "These are optional and not required for the ownership/network repair."
echo

if ask_yes_no "Apply optional performance fixes"; then
    log "[*] User opted in to optional performance tuning."

    log "[*] Setting boot-args ..."
    if command -v nvram >/dev/null 2>&1; then
        run_quiet nvram boot-args="serverperfmode=1 -v debug=0x144 keepsyms=1 maxmem=16384"
    else
        log "[!] nvram not found; skipping boot-args update."
    fi

    log "[*] Applying runtime sysctl tuning ..."
    SYSCTLS="
kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.sched_latency=10
net.inet.tcp.rfc1323=1
net.inet.tcp.sendspace=131072
net.inet.tcp.recvspace=131072
vm.vm_page_free_target=2000
"

    echo "$SYSCTLS" | while IFS= read -r entry; do
        [ -z "$entry" ] && continue
        key="${entry%%=*}"
        value="${entry#*=}"
        if command -v sysctl >/dev/null 2>&1; then
            sysctl -w "${key}=${value}" >> "$LOG_FILE" 2>&1 || log "[!] Failed to set ${key}"
        fi
    done

    log "[*] Attempting to remount root with noatime ..."
    mount -u -o noatime / >> "$LOG_FILE" 2>&1 || log "[!] Could not remount / with noatime; continuing."

    log "[*] Applying UI responsiveness tweaks ..."
    if command -v defaults >/dev/null 2>&1; then
        defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false >> "$LOG_FILE" 2>&1
        defaults write NSGlobalDomain NSWindowResizeTime -float 0.001 >> "$LOG_FILE" 2>&1
    else
        log "[!] defaults command not found; skipping UI tweaks."
    fi
else
    log "[*] User skipped optional performance tuning."
fi

log ""
log "--- COMPLETE ---"
log "[+] Repair complete."
log "[+] Residual build-user ownership/state has been addressed."
log "[+] User accounts and home folders were preserved."
log "[+] Network settings may need to be re-entered after restart."
log "[+] Log written to: $LOG_FILE"
log "[+] Backups stored in: $BACKUP_DIR"

echo
echo "Repair complete."
echo "Log: $LOG_FILE"
echo "Backups: $BACKUP_DIR"
echo

if ask_yes_no "Reboot now"; then
    log "[*] Rebooting now ..."
    sleep 2
    reboot
else
    log "[*] Reboot skipped by user."
    echo "Please reboot manually when convenient."
fi

exit 0

@srp I’ve attached a new zipped version of this script to this post and the previous post, as it’s come to my attention that the files were corrupted on my iPhone. The new .zip should work.
I just tried the script on SL but I got 2 major issues, one affecting only SL and the second affecting all MacOS
Now when I plug a usb or put a CD/DVD the computer do not see it, and the second issue is that the booting apple logo disappeared on all MacOS's booting (I have instead a verbose mode booting, and if I do not select the boot disk with ALT, the screen go black after the verbose mode boot)
1775118024633.jpeg

(PS: sorry for the bad quality)
 
  • Like
Reactions: ChrisCharman
That is a displaying glitch, they are actually ejected.
I remember for the USB a while back ago but well it is logic that the CD/DVD have the same issue
ssh works, you can also mount a volume via nfs. Neither is straightforward “click-to-make-it-work”, admittedly.
I had zero access to it, I can use VNC but could not connect via ftp/afp/smb and I did not tried SSH, but I don't need SSH
 
I remember for the USB a while back ago but well it is logic that the CD/DVD have the same issue

I had zero access to it, I can use VNC but could not connect via ftp/afp/smb and I did not tried SSH, but I don't need SSH

Well, you can send files over ssh (with scp), not just control the terminal remotely. It should be possible to mount a file system over ssh too.
FTP must work, I believe, you will need an FTP server and client though. Maybe, Filezilla will work.
For AFP chances are Netatalk will work. Once someone forces themselves to read the man, since it requires set-up.
NFS does work: I asked Claude for specific instructions, and got a volume from Catalina mounted in 10.6.8 ppc.
 
  • Like
Reactions: Gamerabbit
I just tried the script on SL but I got 2 major issues, one affecting only SL and the second affecting all MacOS
Now when I plug a usb or put a CD/DVD the computer do not see it, and the second issue is that the booting apple logo disappeared on all MacOS's booting (I have instead a verbose mode booting, and if I do not select the boot disk with ALT, the screen go black after the verbose mode boot)
View attachment 2619114
(PS: sorry for the bad quality)
Bash:
#!/bin/bash

# --- Check for Root Privileges ---
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run with sudo."
   exit 1
fi

echo "----------------------------------------------------"
echo "Starting FULL maintenance for OS X 10.6 Snow Leopard"
echo "----------------------------------------------------"

# --- 1. Disable Verbose Boot ---
echo "[1/7] Disabling verbose boot mode..."
nvram boot-args=""

# --- 2. Repair Disk Permissions ---
echo "[2/7] Repairing disk permissions (this may take a few minutes)..."
diskutil repairPermissions /

# --- 3. Delete & Rebuild Kext Caches ---
echo "[3/7] Cleaning and rebuilding kext caches..."
rm -rf /System/Library/Caches/com.apple.kext.caches/ 2>/dev/null
rm -f /System/Library/Extensions.mkext 2>/dev/null
rm -rf /System/Library/Extensions/Caches/ 2>/dev/null
kextcache -system-caches
touch /System/Library/Extensions

# --- 4. Clear System & User Caches ---
echo "[4/7] Clearing system, user, and DNS caches..."
rm -rf ~/Library/Caches/*
rm -rf /Library/Caches/*
dscacheutil -flushcache
killall -HUP mDNSResponder

# --- 5. Reset Core Plists ---
echo "[5/7] Resetting Finder and LaunchServices preferences..."
rm -f ~/Library/Preferences/com.apple.finder.plist
rm -f ~/Library/Preferences/com.apple.LaunchServices.plist

# --- 6. Run Periodic Scripts ---
echo "[6/7] Running daily, weekly, and monthly maintenance..."
periodic daily weekly monthly

# --- 7. Automated Restart ---
echo "[7/7] Maintenance complete."
echo "----------------------------------------------------"
echo "The system will RESTART in 60 seconds."
echo "Press Ctrl+C now to cancel the restart."
echo "----------------------------------------------------"

sleep 60
echo "Restarting now..."
shutdown -r now

How to Use It​


  1. Save: Copy the code into a plain text file named maintenance.sh.
  2. Make Executable: Open Terminal and type:
    chmod +x ~/Desktop/maintenance.sh
  3. Run: Type:
    sudo ~/Desktop/maintenance.sh
Note: Since this script deletes the Finder .plist, your desktop icons and Finder settings will reset to their original positions/defaults after the reboot. Restarting Finder to refresh ejected volumes is a known issue unfortunately with no current fix.
 
I figured out that you can keep Tiger and don't need to install Leopard to install Snow Leopard on another partition. I booted off a Leopard install disc and then restored the Snow Leopard image to the partition following the usual instructions. I tried restoring it from within Tiger, but it wouldn't work.

Also, I found that the internet isn't working with the A5 image over Airport. I tried installing the UTdns app, but I'm not sure what to do with it or what other settings need to be changed. I only ran it by opening it with Terminal, but it doesn't seem to do anything.
 
Also, I found that the internet isn't working with the A5 image over Airport. I tried installing the UTdns app, but I'm not sure what to do with it or what other settings need to be changed. I only ran it by opening it with Terminal, but it doesn't seem to do anything.

I think it was, but not all networks are supported (which is probably hardware constraint). Does it not work with a network which works on the same hardware with 10.4 or 10.5?

I never needed `utdns` with A5, but with a different image I ran it as `sudo utdns 8.8.8.8` after setting network config in Preferences manually (i.e. that may need to have another system with working DHCP from where settings are copied). Then dns server is set to 127.0.0.1 (localhost).
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.