С Mavericks на Yosemite и обратно: простое переключение ОС на Маке через AppleScript

Если вы уже установили на свой Мак бета-версию OS X 10.10 Yosemite и отвели ей роль второстепенной операционной системы, значит, вам постоянно приходится перезагружать Мак то под одной «осью», то под другой. Сложного в этом ничего нет, но этот процесс можно значительно упростить. Поможет в этом старый-добрый AppleScript.

Перезагрузить Мак под другой операционкой вручную можно двумя основными способами. Во-первых, это удержание клавиши ⌥ в момент стартовой загрузки компьютера (когда звучит хорошо всем знакомый аккорд) — после этого появляется меню выбора загрузочного раздела, где остается только выбрать нужный дисковый том и нажать клавишу ввода, чтобы загрузилась соответствующая ось.

Второй способ более простой и очевидный: открыть «Системные настройки», щелкнуть на значке Загрузочный том, выбрать диск с системой для загрузки и нажать кнопку Перезагрузить, после чего остается только подождать, пока загрузится выбранная вами система.

В обоих случаях нужно выполнить всего несколько простых действий. Но все можно упростить до двойного щелчка мыши и ввода администраторского пароля, после чего можно хоть уйти от компьютера по каким-нибудь делам — требуемая система загрузится сама собой.

Создание программы перезагрузки

Запустите редактор AppleScript и вставьте в окно следующий короткий код:
set currentHD to "Macintosh HD"
set toBoot to "Yosemite HD"
set deviceID to (do shell script "diskutil list | awk '/" & toBoot & "/ {print $NF}'")
do shell script "bless -device /dev/" & deviceID & " -setBoot -nextonly" with administrator privileges
tell application "Finder" to restart

Эти пять строчек делают следующее. В первой строке указан дисковый том, на котором установлена ваша текущая система. Во второй строке — раздел, на котором установлена OS X Yosemite. Если ваши диски называются под другому, вставьте в кавычки их имена.

Далее, через консольную команду AppleScript определяет программный идентификатор дискового раздела, указанного во второй строке (именно на нем находится ОС, под которой мы хотим быстро перезагрузиться).

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

Наконец пятая строка перезапускает систему с новыми параметрами.

Сохранение программы

Готовый код с правильными именами дисковых разделов нужно сохранить в виде приложения. Нажмите клавиши ⌘S (или выберите команду меню Файл / Сохранить) и в диалоге сохранения выберите формат файла Программа. Задайте имя приложения — например, Загрузить Yosemite — и нажмите кнопку Сохранить.

Также нужно создать аналогичную программу для возврата из Yosemite в вашу рабочую систему. Для этого нажмите клавиши ⌥⌘S (или выберите команду Файл / Дублировать) и в новом окне поменяйте местами названия дисковых разделов в первой и второй строке кода. После этого сохраните новую программу под именем, например, Вернуться в Mavericks. Скопируйте это приложение на внешний диск, чтобы, будучи в Yosemite, перенести ее на рабочий стол OS X 10.10.

Все готово. Двойным щелчком откройте программу Загрузить Yosemite, введите пароль администратора — и подождите, пока загрузится OS X 10.10. Поиграв с бета-версией новой операционки, запустите приложение Вернуться в Mavericks — и, снова введя пароль админа, подождите, пока загрузится ваша рабочая система. Все просто и удобно.

И Windows — тоже

Таким же макаром можно перезапускать Мак с любого загрузочного тома, доступного на вашем компьютере. Даже с Windows-раздела, который вы создали через Boot Camp. Правда, для перезагрузки под виндой код программы должен быть чуточку другим.

Во-первых, конечно, во второй строке исходного кода нужно указать имя Windows-тома (по умолчанию это Bootcamp). А во-вторых, в четвертой строке в консольной команде нужно добавить флаг -legacy

В целом код программы перезагрузки Мака под Windows выглядит так:
set currentHD to "Macintosh HD"
set toBoot to "Bootcamp"
set deviceID to (do shell script "diskutil list | awk '/" & toBoot & "/ {print $NF}'")
do shell script "bless -device /dev/" & deviceID & " -legacy -setBoot -nextonly" with administrator privileges
tell application "Finder" to restart

Сохраните этот код в формате программы под названием Загрузить Windows. Единственное но — из Windows обратно в OS X придется возвращаться вручную. Хотя если вы знаете волшебный batch-сценарий, который позволит выполнить такую же автоматическую перезагрузку — добро пожаловать в комментарии. :)

Это упрощённая версия страницы.

Читать полную версию
Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Юра Белоцкий
09.08.14 21:05
подскажите - в чём проблема - на win не грузится
Iten Hant
21.02.15 02:37
tell application "Finder" empty the trash end tell Что делаю не так? просит подверждения - вы точно хотите стереть. Как сделать без доп нажатий?
Aña Davidova
30.12.20 09:18
у меня скрипт не работает:(. выдает ошибку Couldn't find I/O Registry information for device /dev/
Студент ВШЭ
27.04.22 22:35
при запуске скрипта выдает ошибку: Could not set boot device property: 0xe00002e2как пофиксить?
Читать все комментарии