再インストール後にアプリをSnow Leopardにインストールし、MacBookを初回起動前の状態に保つ方法は?


8

2007 White MacBookを販売しています。

オンラインで見た多くの提案に沿って、ドライブを安全にワイプして再インストールしましたが、問題が発生しました。

このマシンにはOS X 10.4 Tigerが搭載されていましたが、それ以降はLeopardにアップグレードしてからSnow Leopardにアップグレードしました。

理想的には、新しい所有者に、回転するWelcomeテキストで新しいMacBookエクスペリエンスを提供したいのですが、最新のSnow Leopardにもそれらを貼り付けたいです。問題は、Snow Leopardの新規インストールを実行すると、マシンにiLifeアプリケーションがない(元のTigerインストールディスクにある)ことです。

マシンにアカウントを設定しなくても、iLifeアプリをそこにインストールできる方法はありますか?

そうでない場合、何をするのが最善ですか?アカウントを設定することは、私がやりたくないものです(中古のMacBookを購入していて、アカウントがすでにあると、私は不快に思うでしょう)。一方、Tigerをインストールしてアップグレードディスクを提供することも少し悪いようです。

何か提案してください?

前もって感謝します。

フォローアップ:
以下のすべての回答は非常に有益で、明確に説明され、おそらく同等に効果的でした。私は自分の状況に最も適したものを選びましたが、うまくいけば、それらすべてがこの質問の将来の読者に役立つでしょう。貢献してくれたすべての人に感謝します。

回答:


7

2つのこと-UNIXシェル構文の基本を知らない場合(適切な場所にスペースを置くことが重要で、/のような句読点が重要です)すべてを再インストールする余裕がない限り、ステップ2を実行しないでください- rmコマンドは許されない-で間違ったファイルまたはディレクトリを削除するrm -rfと、Macは起動しません。srm代わりにコマンドを使用することでより安全にすることができrm、ファイルを徐々に細断します- 以下のsrm -sz -rf代わりにrm -rf一度細断してゼロアウトします(最終的に2つのパスになり、削除されます-私のニーズに対して十分に安全で、削除前のデフォルトの35パスの上書きと同じくらい遅い)

  1. マシンを購入する人が、リカバリディスクを入手する対象を確実に知っているようにしてください。Snow Leopardディスクを渡すのではなく、すべてのアップデートを実行するためのテストアカウントを作成するのは本当に素晴らしいことです。

  2. Snow Leopard Macをセットアップして、testという名前の管理者アカウントをパスワードなしで1つ追加し、testアカウントを使用して他のアカウントを削除します。command+ キーを押してシングルユーザーモードで再起動しs、次のように正確に入力します。

    / sbin / mount -uw /
    cd / var / db
    srm .AppleSetupDone
    cd dslocal / nodes / Default / users
    srm test.plist
    cd / Users
    rm -rfテスト
    止める

Macを起動して、セットアップウェルカムムービーの再生を確認し、名前の質問をし始めたときにcommand+ を使用してアシスタントをいくつかの手順でq終了すると、アカウントは作成されずにすべてのアプリケーションが保持されてシャットダウンします。Wi-Fiの設定が記憶されるので、手順2を開始する前にそれらを削除するか、そのようなことが心配な場合は、イーサネット/安全なパブリックWi-Fiを使用して更新を実行してください。


私はこのアプローチのために行ったすべてのオプションを検討した後。すべての更新を実行し、コマンドを明確にレイアウトすることについてのヒントをありがとう。
ダレングリーブズ

ここで、Hobsのより堅牢な(そしてより複雑な)スクリプトを使用した素晴らしいフィードバック。私はこれを何十回も使って、新しいユーザーのためにマシンを更新しました。
bmike

7

あなたは間違いなくiLifeをインストールし、シングルユーザーモードで起動し、このスーパーユーザーリンク(以下でも、シングルユーザーモードでそれを行う)を介してユーザーアカウント削除し、シングルユーザーモードでrm /var/db/.AppleSetupDoneトグルスイッチのようにタイプするだけで、それがわかりますMacを最初の起動から開始します。

#!/bin/bash

# cf. http://www.macos.utah.edu/documentation/authentication/dscl.html

if [[ "$(/usr/bin/whoami)" != "root" ]]; then printf '\nMust be run as root!\n\n'; exit 1; fi

OPATH=$PATH
export PATH=/usr/bin:/usr/sbin:/bin:/sbin

OIFS=$IFS
export IFS=$' \t\n'

declare sudo=/usr/bin/sudo

printf "\e[1mDelete user account\e[m: "
read user

if [[ -z "$user" ]]; then printf '\nNo user specified! Please, try again!\n\n'; exit 1; fi

# make sure the user exists
usertest="$(/usr/bin/dscl . -search /Users name "$user" 2>/dev/null)"

if [[ -z "$usertest" ]]; then printf "\nUser does not exist: $user\n\n"; exit 1; fi 


# get user's group memberships
groups_of_user="$(/usr/bin/id -Gn $user)"

if [[ $? -eq 0 ]] && [[ -n "$(/usr/bin/dscl . -search /Groups GroupMembership "$user")" ]]; then 
   # delete the user's group memberships
   for group in $groups_of_user; do
      $sudo /usr/bin/dscl . -delete "/Groups/$group"  GroupMembership "$user"
      #$sudo /usr/sbin/dseditgroup -o edit -d "$user" -t user "$group"           
   done
fi


# delete the user's primary group
if [[ -n "$(/usr/bin/dscl . -search /Groups name "$user")" ]]; then
   $sudo /usr/sbin/dseditgroup -o delete "$user"
fi

# if the user's primary group has not been deleted ...
if [[ -n "$(/usr/bin/dscl . -search /Groups name "$user")" ]]; then
printf "
   \e[1mWarning\e[m:
   The group memberships of the user \e[1m$user\e[m have been deleted\x21
   groups_of_user: $groups_of_user
   The user's primary group \e[1m$user\e[m, however, has not been deleted\x21
   Please, try again\x21
   Exiting ...\n
"
  exit 1
fi


# find the GeneratedUID of the user and remove the password hash file 
# from /private/var/db/shadow/hash/<GeneratedUID>
# sudo ls -a /private/var/db/shadow/hash
# sudo ls -l /private/var/db/shadow/hash/<GeneratedUID>

guid="$(/usr/bin/dscl . -read "/Users/$user" GeneratedUID | /usr/bin/awk '{print $NF;}')"

if [[ -f "/private/var/db/shadow/hash/$guid" ]]; then
   $sudo /bin/rm -f /private/var/db/shadow/hash/$guid
fi


# delete the user
$sudo /usr/bin/dscl . -delete "/Users/$user"

# make a backup
if [[ -d "/Users/$user" ]]; then
   $sudo /usr/bin/ditto -rsrc -c -k "/Users/$user" "/Users/${user}-archive-$(/bin/date).zip"
fi

# remove the user's home directory
if [[ -d "/Users/$user" ]]; then
   $sudo /bin/rm -rf "/Users/$user"
fi

export IFS=$OIFS
export PATH=$OPATH

exit 0

情報をありがとう-他の提案されたオプションを試すつもりですが、それが失敗した場合はこれを試します。
ダレングリーブス

幸運を!どうなるか教えてください。
ConstantineK

Snow Leopardでシングルユーザーモードで起動すると、このスクリプトは機能しません-ユーザーが存在しないと表示されます。
Ivan X

その後、何らかの理由で/ usr / bin / dsclを実行するときにrootが存在しません。-search / Users name "$ user"($ userはrootです)。それはかなり奇妙です。
ConstantineK

2

通常どおりTigerをインストールしてから、Snow Leopardインストールディスクから起動し、内蔵ドライブから起動してユーザーアカウントを作成せずにアップグレードインストールを実行します。


これは、提案されたクリーンアップオプションよりも少し簡単に聞こえるので、試してみてください。
ダレングリーブス

また、テストユーザーを削除するのも非常に簡単です。これは、上記のスクリプトよりもはるかに単純で、もう少し詳細ですが、「空の」ホームフォルダーのバックアップコピーを残しておいても、あなたが説明する状況では保証されないことをカバーするために回答します。
bmike
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.