Как установить приложения на Snow Leopard после новой переустановки и при этом сохранить MacBook в состоянии перед первой загрузкой?

8

Я продаю свой белый MacBook 2007 года.

В соответствии со многими предложениями, которые я видел в Интернете, я надежно очистил диск и сделал переустановку, но столкнулся с проблемой.

Машина шла с OS X 10.4 Tiger, но с тех пор я обновил ее до Leopard, а затем до Snow Leopard.

В идеале я хотел бы дать новому владельцу новый MacBook с вращающимся текстом приветствия, но я также хотел бы прикрепить их к последней версии Snow Leopard. Проблема в том, что когда я делаю новую установку Snow Leopard, на машине не будет приложений iLife (они находятся на оригинальных установочных дисках Tiger).

Есть ли способ, которым я могу получить приложения iLife там без необходимости создавать учетную запись на машине?

Если нет, что лучше всего сделать? Настроить учетную запись я бы не стал (я знаю, что был бы раздражен, если бы купил подержанный MacBook и на нем уже была учетная запись). С другой стороны, установка Tiger и предоставление им дисков для обновления также кажется немного плохим.

Любые предложения, пожалуйста?

Заранее спасибо.

Последующие действия:
все ответы ниже были очень информативными, четко объясненными и, вероятно, одинаково эффективными. Я выбрал тот, который наилучшим образом соответствовал моим обстоятельствам, но, надеюсь, все они пригодятся будущим читателям этого вопроса. Спасибо всем, кто внес свой вклад.

Даррен Гривз
источник

Ответы:

7

Две вещи - если вы не знаете основ синтаксиса оболочки Unix (пробел в нужном месте имеет значение, пунктуация, как / имеет значение), не выполняйте шаг 2, если вы не можете позволить себе переустановить все заново - rmкоманда не простит - удалите неправильный файл или каталог, rm -rfи Mac не загрузится. Вы можете быть более безопасными, используя srmкоманду вместо, rmи она будет медленно уничтожать файлы - я использую srm -sz -rfвместо rm -rfниже, чтобы уничтожить один раз, а затем обнулить (что в итоге составляет два прохода, а затем удаление - достаточно безопасно для моих нужд, а не так медленно, как по умолчанию 35 проходов перезаписать перед удалением)

  1. Удостоверьтесь, что человек, покупающий машину, знает, для чего он получает диски восстановления. Очень приятно создать тестовую учетную запись для запуска всех обновлений, а не передавать их на диск Snow Leopard.

  2. Настройте свой Snow Leopard Mac, чтобы добавить одну учетную запись администратора с именем test без пароля и удалить любые другие учетные записи, используя тестовую учетную запись. Перезагрузите компьютер в однопользовательском режиме, удерживая command+, sи введите его точно:

    / sbin / mount -uw /
    кд / вар / дБ
    srm .AppleSetupDone
    cd dslocal / node / Default / users
    srm test.plist
    CD / Пользователи
    rm -rf test
    стой

Теперь вы можете загрузить Mac, чтобы увидеть, как запускается приветственное видео, и выйти из помощника, выполнив несколько шагов, используя command+, qкогда он начнет задавать вопросы об именах и завершит работу без создания учетной записи, но все приложения будут сохранены. Он запомнит ваши настройки Wi-Fi, поэтому удалите их перед началом шага 2 или используйте ethernet / безопасный общедоступный Wi-Fi для запуска обновлений, если вы беспокоитесь о подобных вещах.

bmike
источник
Взвесив все варианты, я пошел на этот подход. Спасибо за совет о запуске всех обновлений и четком изложении команд.
Даррен Гривз
Хорошие отзывы здесь и с более надежным (и более сложным) сценарием Хобса. Я использовал это много десятков раз, чтобы освежить машину для нового пользователя.
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
источник
Спасибо за информацию - я собираюсь попробовать другой предложенный вариант, но попробую это, если тот отказывает.
Даррен Гривз
Удачи! Дайте нам знать, как оно идет.
КонстантинK
При загрузке в однопользовательском режиме в Snow Leopard этот скрипт не работает для меня - он говорит, что пользователь не существует.
Иван Икс
Тогда по какой-то причине root не существует при запуске / usr / bin / dscl. -search / Имя пользователя "$ user" (где $ user - root). Это довольно странно.
КонстантинK
2

Установите Tiger как обычно, затем загрузитесь с установочных дисков Snow Leopard и выполните установку с обновлением без загрузки с внутреннего диска и создания учетной записи пользователя.

Cajunluke
источник
Это звучит немного проще, чем предложенная опция очистки, так что попробуйте - спасибо.
Даррен Гривз
Также довольно легко удалить тестового пользователя. Я приведу ответ для покрытия, который гораздо проще, чем приведенный выше сценарий, который немного более тщателен, но что дополнительная проверка и оставление резервной копии «пустой» домашней папки не гарантируется в описываемой вами ситуации.
bmike