segavvy’s blog

ドラクエ11、Mac、ガジェットetc...

通電と同時にMac miniを起動させる方法

はじめに

我が家では一括スイッチ付きの電源タップにMac miniやディスプレイ、スピーカー、デスクライトなどをつないでいます。使っている電源タップは、一つのスイッチで全部連動する次のようなものです(実際に使っているのはもっと古いものですが)。

ディスプレイ、スピーカー、デスクライトなどはスイッチ連動で電源ONになるのですが、肝心のMac miniだけは連動してくれず、わざわざMac miniの電源ボタンを押さないといけません。たいした手間ではないのですがスイッチ1つで全部連動させたくなってしまい、ちょっと調べてみました。そのまとめです。

なお、今回ご紹介する方法はシステム終了の手順を変えるので、あまりスマートな方法ではありません。また、通常のシステム終了ではなくディープスリープ(後述)になるようなので、起動と終了が少し遅くなります。あらかじめご了承ください。

前提条件など

  • 動作を確認したのは、Mac mini(Late 2012)+ macOS Mojave バージョン 10.14.6 です。

  • 今回の方法は内部でsudoコマンドを使う関係で、管理者アカウントを使っていることが前提です。またパスワードの設定が必須です*1

準備

1.「システム環境設定」の「省エネルギー」で「停電後に自動的に起動」をチェックします。

f:id:segavvy:20201010113502p:plain

これで前回異常終了していた場合のみ、通電するとMacが起動するようになります。前回正しく終了している場合は起動してくれないため、shutdownコマンドやhaltコマンドで-uを指定して、正しく終了させつつも異常状態だと認識させる必要があります*2

毎回ターミナルでコマンド打つのは面倒なので、コマンドを実行するアプリを作りました。ここからはその手順です。

2.「Automator」を起動します*3。起動すると書類の種類を聞いてくるので「アプリケーション」を「選択」します。

f:id:segavvy:20201010140037p:plain

3.左から2番目の一覧にある「AppleScriptを実行」をダブルクリックします。

f:id:segavvy:20201010141456p:plain

4.右側の入力欄に次の内容を入れます。もともと入力欄に入っていた内容は消してください。

on run
    
    display dialog "システムを終了してもよろしいですか?" buttons {"キャンセル", "システム終了"} default button "キャンセル" with icon caution
    if button returned of result is "システム終了" then
        do shell script "echo ★★★ | sudo -S shutdown -h -u now"
    end if
    
end run

なお、★★★のところには、ご利用の管理者アカウントのパスワードを入れてください。

f:id:segavvy:20201010143556p:plain

5.「ファイル」メニューの「保存...」で、好きな場所に好きな名前で保存してください。私は「システム終了(deep sleep)」という名前でアプリケーション フォルダに保存しています。

f:id:segavvy:20201010142845p:plain

6.「Automator」を終了してください。これで準備は完了です。なお、作ったアプリはアイコンがAutomatorのロボットになっていますが、これは簡単に変えられます。やり方は割愛しますので、「mac アプリアイコン 変更」などでググってみてください。私はFinderアイコン*4をコピペしました。

f:id:segavvy:20201010165124p:plain

このアプリをDockに入れて使っています。

f:id:segavvy:20201010145159p:plain

使い方

システムを終了する時に、今作ったアプリを実行してください。確認画面で「システム終了」すると、しばらくしてから電源がOFFになります。

f:id:segavvy:20201010143416p:plain

この形でシステム終了させた場合は、次に通電した時に自動的にMacが起動します。一括スイッチ付きの電源タップで、ディスプレイ、スピーカー、デスクライト、Macと全部一発でONになって爽快?です。

ディープスリープについて

今回の方法は、通常のシステム終了と挙動が異なることに気づきました。今回の方法では、前回終了時の状態がほぼそのまま復元されます。

例えば編集中でまだ保存していないファイルがある場合、通常のシステム終了では保存の確認画面が表示されてシステムの終了が中断されます。しかし今回の方法では保存の確認画面は表示されず、ファイルへ保存されないままシステムが終了します。でも編集中の内容は失われておらず、再び電源を入れるとファイルに保存していない編集中の状態が復元されるのです。これはどうやら、ディープスリープ(終了時にメモリの状態をHDD/SDDへ書き出して電源を落とし、起動時にそれを読み込んでメモリの状態を復元する)の動きになっている模様です。

詳しい解説を見つけられなかったのですが、今回利用したshutdownコマンドやhaltコマンドの-uオプションは、電源ダウン時にUPS無停電電源装置)からシステムの終了依頼を受け付けるためのものらしいので、ディープスリープになるのはうなずけます。

注意!

通常のシステム終了とは異なる動きになりますので、ご注意ください。何度か試していたところ、起動時にChromeが「Chromeは正しく終了しませんでした」のエラーを表示することがありました。アプリによっては完全に復元されるとは限らない模様です。編集中のファイルはきちんと保存してから終了するのが良いですね。

お試しになる際は自己責任でお願いします。

*1:パスワードを設定されていない場合は、macOS ユーザアカウントのパスワードを変更またはリセットするの手順で設定できます。

*2: Mac: オムロンのUPSで保護しているMacの商用電源復旧時の自動起動について(1)で知りました。

*3:Automator」はアプリケーション フォルダにあるロボットのアイコンのアプリです。

*4:Finderアプリはアプリケーション フォルダではなく /System/Library/CoreServices/ に入っています。Finderの「移動」メニューの「フォルダへ移動」でこの場所を入れると移動できます。