7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[macOS] 外部NASを起動時に自動的にマウントする [Sierra]

Last updated at Posted at 2017-07-27

ぎっくり腰からのリハビリで記事を一つ書きます。

私はずっと悩んでいました。automount を使って、外部のNASドライブをSMBでマウントしていると、どんなにがんばっても7日間で切断される減少が発生します。運がいいとそのまま継続して利用できますが、にっちもさっちもいかない場合は、再認証させつつ、umount & mount の繰り返しを余儀なくされる上、次、いつマウントが外れるかも謎です。(参考→ Mac Sierra がブートしなくなった原因と対処方法)

こんなにアホらしいことはないので、解決策を別の視点から探し、ついにたどり着きました。結論から行くと、フツーに mount せよです。

launchctl で、home directory 配下に NASドライブを mount する

とは言え、/etc/fstab などはないので、launchctl を利用して、shell を書いて、それを実行させます。ポイントは2つあります。

  1. home directory 配下にマウントさせる場合、login ユーザの権限で mount させること
  2. mkdir -p しておくこと

mount shell の作成

まずは、login user で実行可能な場所に、mount するための shell script を配置します。例えば、iTunes のディレクトリを外部NAS で共有しているケースでは次のような書き方になります。

mount.sh
# !/bin/sh

mkdir -p /Users/<username>/Music/iTunes

mount_smbfs '//<domain name>;<smb user>:<smb password>@<hostname>/<shared directory name>/<folder>' /Users/<username>/Music/iTunes

< > 内は適宜おきかえて読んで・書き換えてください。ふつーの mount_smbfs を実行しているだけです。

先にも書いたように mkdir -p は埋めておいてください。mount すると、起動時に勝手に消してるケースが少なくないです。

launchctl の書き方

次に、この shell script を自動実行させるために、launchctl を使います。これは (1)起動時 (2)ログイン時、の二通りで記載するファイルが変わりますが、今回は「起動時」で行きます。作り方は

  1. /Library/LaunchDaemons/ 配下に、起動用の plist を作成する
  2. 作成したファイルの所有権を root:wheel にする

だけです。サンプルはコチラ。ファイル名の規則はよくわかっていませんが、com.<vendor>.<function>.plist あたりになってれば問題なさげです。

com.oshiire.mount.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.<vendor>.<function></string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>ProgramArguments</key>
    <array>
        <string><実行ファイル名></string>
    </array>
    <key>UserName</key>
    <string><ログインユーザ名></string>
</dict>
</plist>

これで、7日以上経過しても mountしたままでいけます。実行する shell script 内で chmodchown をうまく使いながらやれば、/Volume/ 配下に起動時マウントさせる方法もできるようです。

参考

7
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?