私が2014年にMac book airを購入した当時、お金を持っていなかったので本体ストレージをケチって128GBにしました。購入した後に気づいたのですが、128GBってOSやアプリ、adobeなどのソフト類をインストールしただけでほとんど容量いっぱいになってしまうんですよね。。。仕方なくPCの筐体からはみ出さない特殊形状のSDカードを増設ストレージ代わりとして使用していました。
ただ1つ問題が。SDカードを挿入したままPCをスリープすると、スリープから復帰した時にSDカードが勝手にアンマウントされてしまうのです。SDカードをずっと挿入したまま使用したいのに、毎度勝手にアンマウントされてしまうと、マウントし直さなければならずとても不便。
そこで今回は、スリープ時・スリープ復帰時にSDカードを自動でアンマウント・マウントして、SDカードを挿入したまま増設ストレージのように使用する方法をお伝えします。
- SDカードを挿しっぱなしで使えるようにできる
- 作業の流れは以下のとおり
下準備する
まずは下準備をします。
下準備の作業リスト
- SleepWatcherをダウンロードする
- ターミナルを開く
- SDカードのマウント場所名を確認
SleepWatcherをダウンロードする
外部デバイスを自動でアンマウント・マウントするためにSleepWatcherというツールをダウンロードして使用します。SleepWatcherはHomebrewでもサポートされているツールです。
SleepWatcherはbb’s Homepageからダウンロードします。
- Mac OS X 10.5 (Leopard) 以上 —> SleepWatcher 2.2.1をダウンロード
- Mac OS X 10.3 (Panther) 10.4 (Tiger) —> SleepWatcher 2.0.5をダウンロード
- Mac OS X 10.1 (Puma) 10.2 (Jaguar) —> SleepWatcher 1.0.1.をダウンロード
ダウンロードできたら解凍して、フォルダごとデスクトップに移動させてください。
私はSleepWatcher 2.2.1をダウンロードしたので、このようなフォルダ名になっています。
ターミナルを開く
ターミナルを開いてコマンドを実行する準備をします。
「アプリケーション>ユーティリティ>ターミナル」の順番で移動してターミナルを開きます。
ユーティリティからターミナルを開く。
ターミナルが開きました。
「$」の後にコマンドを書いていきます。
SDカードのマウント場所名を確認
SDカードをPCに差し込んでから、マウント場所の名前を確認します。私たちは「右側のSDカードスロット」などのように捉えていますが、これはPCの認識しているマウント場所名ではないからです。
以下のコマンドを実行してください。
$ diskutil list
上記のコマンドを実行すると、PCにマウントされているデバイス一覧が表示されます。私の場合配下のように表示されました。
TYPE(フォーマット)、NAME(デバイス名)、SIZE(容量)を頼りに、先ほど差し込んだSDカードをデバイス一覧から探します。SDカードが見つかったら、マウント場所の名前「IDENTIFIER(識別名)」をメモしましょう。私の場合、Mac OS拡張(ジャーナル)でフォーマットした容量128GBのSDカードを差し込んだので、SDカードはデバイス一覧の一番下に表示されていて、IDENTIFIER名は「disk2s2」だとわかりました。
SleepWatcherを設定する
ここからSleepWatcherを使うための準備をしていきます。
作業リスト
- SleepWatcherをコピーする
- 「sleepwatcher」と「sleepwatcher.8」をコピーする
- plistファイルをLaunchDaemonsにコピーする
- スリープ時、スリープ復帰時の実行スクリプトをコピーする
- MacPCを複数ユーザーアカウントで使う場合
- スリープ時の実行スクリプトのファイル編集画面に移動する
- スリープ時の実行スクリプトを編集する
- スリープ復帰時の実行スクリプトのファイル編集画面に移動する
- スリープ復帰時の実行スクリプトを編集する
- 実行スクリプトの動作確認をする
- sleepwatcherの設定(plistファイル)をロードして自走させる
- MacPCを1つのユーザーアカウントのみで使う場合
- global配下の実行スクリプトファイルを削除する
- plistファイルをLaunchAgentsにコピーする
- スリープ時の実行スクリプトのファイル編集画面に移動する
- スリープ時の実行スクリプトを編集する
- スリープ復帰時の実行スクリプトのファイル編集画面に移動する
- スリープ復帰時の実行スクリプトを編集する
- 実行スクリプトの動作確認をする
- sleepwatcherの設定(plistファイル)をロードして自走させる
SleepWatcherをコピーする
(1)「sleepwatcher」と「sleepwatcher.8」をコピーする
ディレクトリ「usr/local/⋯⋯」を作って、その中に「sleepwatcher」と「sleepwatcher.8」をコピーします。
以下のコマンドを実行してください。
$ sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8 $ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin $ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8
上記のコマンドを実行すると、非表示ディテクトリ「usr」内にディレクトリ「/local/sbin」と「/local/share/man/man8」が作られて、それぞれに先ほどダウンロードしたファイルから「sleepwatcher」と「sleepwatcher.8」がコピーされます。
(2)plistファイルをLaunchDaemonsにコピーする
次に、sleepwatcherがシステム起動時に自動的に起動するようにするための設定(plistファイル)が書かれたファイルをLaunchDaemonsにコピーします。
以下を実行してください。
$ sudo cp ~/Desktop/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
上記のコマンドを実行すると「Library/LaunchDaemons/」ディレクトリ内に、sleepwatcherがシステム起動時に自走するためのファイルがコピーされます。
(3)スリープ時、スリープ復帰時の実行スクリプトをコピーする
システムのスリープ時、スリープ復帰時に実行されるスクリプトをコピーします。
以下のコマンドを実行してください。
$ sudo cp ~/Desktop/sleepwatcher_2.2/config/rc.* /etc
上記のコマンドを実行すると非表示ディレクトリ「etc」内に、システムのスリープ時、スリープ復帰時に実行されるスクリプト「rc.sleep」「rc.wakeup」がコピーされます。
ここからは、SleepWatcherを使うMacPC環境によって設定方法が2通りに分かれます。ご自分の使用環境に合わせて設定してください。
- MacPCを複数ユーザーアカウントで使う場合
- MacPCを1つのユーザーアカウントのみで使う場合
MacPCを複数ユーザーアカウントで使う場合
Macを複数のユーザーアカウントで使用していて、SleepWatcherを利用してSDカードの自動マウント・アンマウントを行なう場合は、以下の作業を続けてください。この方法を行なうとglobal配下にSleepWatcherの実行スクリプトファイルを配置することになります。この方法はSleepWatcherの基本的な設定方法であり、MacPCを1つのユーザーアカウントのみで使う場合でも使用できる設定方法です。
(1)スリープ時の実行スクリプトのファイル編集画面に移動する
スリープ時にSDカードを自動でアンマウントする実行スクリプトを書きます。このスクリプトは、先ほど非表示ディレクトリ「etc」内のファイル「rc.sleep」に書き込みます。
以下のコマンドを実行してください。
$ sudo vim /etc/rc.sleep
上記のコマンドを実行すると、非表示ディレクトリ「etc」内のファイル「rc.sleep」を編集する画面に移ります。
(2)スリープ時の実行スクリプトを編集する
rc.sleepには元々コマンドや説明が書かれています。まずはそれを削除します。削除の方法は「d」を押してください。「d」を押すと元々入力されていたコマンド等が削除できます。
削除が終わったら「i」を押してインサートモードに切り替えください。一番下のコマンドラインに「INSERT」と表示されていれば、インサートモードに切り替わっています。
インサートモードになったら、以下のコードをコピペしてください。
#!/bin/sh /usr/sbin/diskutil unmount disk2s2
「disk2s2」の部分は自分のIDENTIFIER名に変更して入力してください。入力が終わったら「esc」を押して、インサートモードからコマンドモードに戻します。コマンドモードに戻ると一番下のコマンドラインに表示されていた「INSERT」が消えます。
コマンドモードに戻したら「:wq」を入力して「enter」を押します。「:wq」はファイルを保存して閉じるためのコマンドです。
(3)スリープ復帰時の実行スクリプトのファイル編集画面に移動する
次に、スリープから復帰した時にSDカードを自動でマウントする実行スクリプトを書きます。
手順はスリープ時の実行スクリプトrc.sleepを編集したときと全く同じです。スリープ復帰時のスクリプトは、先ほど非表示ディレクトリ「etc」内のファイル「rc.wakeup」に書き込みます。
以下のコマンドを実行してください。
$ sudo vim /etc/rc.wakeup
上記のコマンドを実行すると、非表示ディレクトリ「etc」内のファイル「rc.wakeup」を編集する画面に移ります。
(4)スリープ復帰時の実行スクリプトを編集する
rc.wakeupにもrc.sleepと同様に元々コマンドや説明が書かれています。まずはそれを削除します。削除の方法は「d」を押してください。「d」を押すと元々入力されていたコマンド等が削除できます。
削除が終わったら「i」を押してインサートモードに切り替えください。一番下のコマンドラインに「INSERT」と表示されていれば、インサートモードに切り替わっています。
インサートモードになったら、以下のコードをコピペしてください。
#!/bin/sh /usr/sbin/diskutil mount disk2s2
「disk2s2」の部分は自分のIDENTIFIER名に変更して入力してください。入力が終わったら「esc」を押して、インサートモードからコマンドモードに戻します。コマンドモードに戻ると一番下のコマンドラインに表示されていた「INSERT」が消えます。
コマンドモードに戻したら「:wq」を入力して「enter」を押します。「:wq」はファイルを保存して閉じるためのコマンドです。
(5)実行スクリプトの動作確認をする
(1)〜(4)で作成した実行スクリプトの動作確認をします。
以下のコマンドを実行してください。
$ /usr/local/sbin/sleepwatcher --verbose --sleep /etc/rc.sleep --wakeup /etc/rc.wakeup
上記のコマンドを実行すると、先ほど作成したスリープ時にSDカードをアンマウントする「rc.sleep」、スリープ復帰時にSDカードをアンマウントする「rc.wakeup」が作動します。
ターミナルのメニューバーから「シェル>新規ウィンドウ」を選択して、新しいコマンドラインウィンドウを開きます。
新しいウィンドウが開いたら、そこに以下のコマンドを実行してください。
$ /usr/local/sbin/sleepwatcher --now
上記のコマンドを実行すると、スリープ状態になります。
スリープから復帰させて元々のコマンドラインウィンドウを見てみてください。
Volume MicroSD128GB on disk2s2 unmounted sleepwatcher: sleep: /etc/rc.sleep: 0 Volume MicroSD128GB on disk2s2 mounted sleepwatcher: wakeup: /etc/rc.wakeup: 0
「MicroSD128GB」と「disk2s2」はSDカードのNAMEとIDENTIFIERです。上記のように表示されていたら、作成した実行スクリプトは正常に作動しています。「Ctrl + Z」を押して一度停止させましょう。
(6)sleepwatcherの設定(plistファイル)をロードして自走させる
最後に、先ほどコピーしたsleepwatcherがシステム起動時に自走するための設定(plistファイル)をロードして、sleepwatcherを自走させて、SDカードのマウント・アンマウントを自動で行なうようにします。
以下のコマンドを実行してください。
$ sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
上記のコマンドを実行すると「LaunchDaemons」に登録した plistファイルがロードされてsleepwatcherが常駐化されます。
MacPCを1つのユーザーアカウントのみで使う場合
Macを1つのユーザーアカウントのみで使用していて、SleepWatcherを利用してSDカードの自動マウント・アンマウントを行なう場合は、local(ユーザーアカウント配下)にSleepWatcherの実行スクリプトファイルを配置することをSleepWatcherは推奨しています。Macを1つのユーザーアカウントのみで使用していて、globalではなくてlocalにSleepWatcherの実行スクリプトファイルを配置したい場合は、以下の作業を続けてください。ただし、これをせず先に説明した複数ユーザーアカウントの設定でもSleepWatcherは問題なく動きます。
(1)global配下の実行スクリプトファイルを削除する
global配下の非表示ディレクトリ「etc」内にコピーした「rc.sleep」と「rc.wakeup」を削除します。
以下のコマンドを実行してください。
$ sudo rm -f /etc/rc.sleep /etc/rc.wakeup
これでglobal配下の非表示ディレクトリ「etc」内にコピーした「rc.sleep」と「rc.wakeup」が削除されました。
(2)plistファイルをLaunchAgentsにコピーする
localにディレクトリ「LaunchAgents」を作り、sleepwatcherがシステム起動時に自動的に起動するようにするための設定(plistファイル)が書かれたファイルをそのLaunchAgentsにコピーします。このplistファイルはlocal環境用のplistファイルで、SleepWatcher設定作業の始め頃にLaunchDaemonsにコピーしたものとは別物です。以下を実行してください。
$ mkdir ~/Library/LaunchAgents $ cp ~/Desktop/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
上記のコマンドを実行すると、「Library」に「LaunchAgents」というディレクトリを作り、その作ったディレクトリ内にlocal環境内でsleepwatcherがシステム起動時に自走するための設定(plistファイル)がコピーされます。
ここからは、local環境にスリープ時、スリープ復帰時の実行スクリプトファイルを配置し、スクリプトを書き込んでいきます。
(3)スリープ時の実行スクリプトのファイル編集画面に移動する
まずはスリープ時にSDカードを自動でアンマウントする実行スクリプトを書きます。このスクリプトは、local(ユーザーアカウント配下)に配置するファイル「.sleep」に書き込みます。以下のコマンドを実行してください。
$ sudo vim ~/.sleep
上記のコマンドを実行すると、local(ユーザーアカウント配下)に配置されるファイル「.sleep」を編集する画面に移ります。
(4)スリープ時の実行スクリプトを編集する
.sleepは新たに作るファイルなので、何も書かれていません。
「i」を押してインサートモードに切り替えください。一番下のコマンドラインに「INSERT」と表示されていれば、インサートモードに切り替わっています。
インサートモードになったら、以下のコードをコピペしてください。
#!/bin/sh /usr/sbin/diskutil unmount disk2s2
「disk2s2」の部分は自分のIDENTIFIER名に変更して入力してください。入力が終わったら「esc」を押して、インサートモードからコマンドモードに戻します。コマンドモードに戻ると一番下のコマンドラインに表示されていた「INSERT」が消えます。
コマンドモードに戻したら「:wq」を入力して「enter」を押します。「:wq」はファイルを保存して閉じるためのコマンドです。
(5)スリープ復帰時の実行スクリプトのファイル編集画面に移動する
次に、スリープから復帰した時にSDカードを自動でマウントする実行スクリプトを書きます。手順はスリープ時の実行スクリプト.sleepを編集したときと全く同じです。
スリープ復帰時のスクリプトも.sleepファイルと同様にlocal(ユーザーアカウント配下)に配置します。以下のコマンドを実行してください。
$ sudo vim ~/.wakeup
上記のコマンドを実行すると、local(ユーザーアカウント配下)に配置されるファイル「.wakeup」を編集する画面に移ります。
(6)スリープ復帰時の実行スクリプトを編集する
.wakeupも.sleep同様新たに作るファイルなので、何も書かれていません。
「i」を押してインサートモードに切り替えください。一番下のコマンドラインに「INSERT」と表示されていれば、インサートモードに切り替わっています。
インサートモードになったら、以下のコードをコピペしてください。
#!/bin/sh /usr/sbin/diskutil mount disk2s2
「disk2s2」の部分は自分のIDENTIFIER名に変更して入力してください。入力が終わったら「esc」を押して、インサートモードからコマンドモードに戻します。コマンドモードに戻ると一番下のコマンドラインに表示されていた「INSERT」が消えます。
コマンドモードに戻したら「:wq」を入力して「enter」を押します。「:wq」はファイルを保存して閉じるためのコマンドです。
(7)実行スクリプトの動作確認をする
(3)〜(6)で作成した実行スクリプトの動作確認をします。以下のコマンドを実行してください。
$ /usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep --wakeup ~/.wakeup
上記のコマンドを実行すると、先ほど作ったスリープ時にSDカードをアンマウントする「.sleep」、スリープ復帰時にSDカードをアンマウントする「.wakeup」が作動します。
ターミナルのメニューバーから「シェル>新規ウィンドウ」を選択して、新しいコマンドラインウィンドウを開きます。新しいウィンドウが開いたら、そこに以下のコマンドを実行してください。
$ /usr/local/sbin/sleepwatcher --now
上記のコマンドを実行すると、スリープ状態になります。スリープから復帰させて元々のコマンドラインウィンドウを見てみてください。
Volume MicroSD128GB on disk2s2 unmounted sleepwatcher: sleep: /Users/⋯⋯(ユーザー名)⋯⋯/.sleep: 0 Volume MicroSD128GB on disk2s2 mounted sleepwatcher: wakeup: /Users/⋯⋯(ユーザー名)⋯⋯/.wakeup: 0
「MicroSD128GB」と「disk2s2」はSDカードのNAMEとIDENTIFIERです。上記のように表示されていたら、作成した実行スクリプトは正常に作動しています。「Ctrl + Z」を押して一度停止させましょう。
(8)sleepwatcherの設定(plistファイル)をロードして自走させる
最後に、(2)でLaunchAgents内にコピーした、sleepwatcherがシステム起動時に自走するための設定(plistファイル)をロードし、sleepwatcherを自走させて、SDカードのマウント・アンマウントを自動で行なうようにします。以下のコマンドを実行してください。
$ launchctl load ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
上記のコマンドを実行すると「LaunchAgents」に登録した plistファイルがロードされてsleepwatcherが常駐化されます。
SDカードとマイクロSD用アダプタの購入例
一応、MacPCの筐体からはみ出さない特殊形状のSDカード・マイクロSD用アダプタ・マイクロSDカードのリンクを貼り付けておきます。私はマイクロSD用アダプタとマイクロSDを購入して使用中です。
PCの筐体からはみ出さない特殊形状のSDカード
MacPCの筐体からはみ出さない特殊形状のSDカードはTranscendから販売されています。
Macbook Air 13インチ(Late 2010 〜 2017専用 SDスロット対応拡張メモリーカード 256GB(TS256GJDL130)
- 製品特徴:空いているMacBookのカードスロットにピッタリ納まり、利用可能なストレージ容量が即座に増やせます。 対応モデル:Macbook Air 13″ (Late 2010 ~ 2017)の各モデルに対応 最大読出速度95MB/s 容量:256GB
- 価格:5,980円(2021年2月26日時点)
Macbook Pro Retina 13インチ (Late 2012 〜 Ealy 2015)専用 SDスロット対応拡張メモリーカード256GB(TS256GJDL330)
- 対応モデル : Macbook Pro Retina display 13″ (Late 2012 – Late 2013) 最大読出速度95MB/s、最大書込速度60MB/s 容量:256GB
- 価格:5,838円(2021年2月26日時点)
Macbook Pro Retina 15インチ (Mid 2012 〜 Early 2013)専用 SDスロット対応拡張メモリーカード256GB(TS256GJDL350)
- 対応モデル : Macbook Pro Retina display 15″ (Mid 2012 – Early 2013) 最大読出速度95MB/s、最大書込速度60MB/s 容量:256GB
- 価格:6,580円(2021年2月26日時点)
Macbook Pro Retina 15インチ(Late2013 / Mid2014 / Mid2015)専用 SDスロット対応拡張メモリーカード256GB(TS256GJDL360)
- 対応モデル : Macbook Pro Retina display 15″ (Late2013 / Mid2014 / Mid2015) 最大読出速度95MB/s、最大書込速度60MB/s 容量:256GB
- 価格:6,480円(2021年2月26日時点)
PCの筐体からはみ出さない特殊形状のMicroSDカードアダプタ
接続できるマイクロSD容量は512GBまでです。
Macbook Air 13インチ用MicroSDカードアダプタ MacbookPro 13、15インチ(〜 mid 2012)用MicroSDカードアダプタ
- Ninja Stealth ドライブは、Macbook Air 13″ & Pro 13″ / 15″ (~mid 2012) non-retina 機種にぴったりフィット、はみ出さない高精度アルミニウム製のMicroSDカードアダプターです。 市販のMicroSDカードを利用し、あなたのMacbook Air 13″ & Pro 13″ / 15″ (~mid 2012) non-retina に(現行)1TBまでのストレージスペースを増設できます。
- 価格:2,840円(2021年2月26日時点)
MacBook Pro Retina 13インチ用MicroSDカードアダプタ
- Ninja Stealth ドライブは、Macbook Pro 13″ Retina 機種にぴったりフィット、はみ出さない高精度アルミニウム製のMicroSDカードアダプターです。市販のMicroSDカードを利用し、あなたのMacbook Pro 13″ Retina に(現行)512GBまでのストレージスペースを増設できます。
- 価格:2,840円(2021年2月26日時点)
MacBook Pro Retina 15インチ(Late 2013 – Mid 2015)用MicroSDカードアダプタ
- Ninja Stealth ドライブは、Macbook Pro 15″ Retina (late 2013~mid 2015) 機種にぴったりフィット、はみ出さない高精度アルミニウム製のMicroSDカードアダプターです。 市販のMicroSDカードを利用し、あなたの Macbook Pro 15″ Retina (late 2013~mid 2015)に(現行)1TB までのストレージスペースを増設できます。
- 価格:2,840円(2021年2月26日時点)
マイクロSDカード
Samsung EVO Plus 256GB microSDXC UHS-I U3 100MB/s(MB-MC256GA/ECO)
- 最大転送速度 : 読み出し 100MB/秒、書き込み 90MB/秒、使用用途 : 任天堂Switch、携帯電話、スマートフォン、タブレット、タブレットPC、耐久性 : 防水、耐温度、耐磁、耐X線
- 価格:4,590円(2021年2月26日時点)
Samsung EVO Plus 512GB microSDXC UHS-I U3 100MB/s(MB-MC512GA/ECO)
- 最大転送速度 : 読み出し 100MB/秒、書き込み 90MB/秒、使用用途 : 任天堂Switch、携帯電話、スマートフォン、タブレット、タブレットPC、耐久性 : 防水、耐温度、耐磁、耐X線
- 価格:8,999円(2021年2月26日時点)
まとめ
設定が無事にできると、マウント・アンマウントが自動で行われ、SDカードを挿しっぱなしにしたまま増設ストレージのように使うことができます。本当に便利です。私はこのセッティングで6年近く使用していました。
S.P.⋯⋯
私は2021年1月に入って本体ストレージSSDをM.2 NVMeに自分で交換してみました。
本体ストレージSSDの交換方法は別の記事に書いていますので、気になった方は見てみてください。