Mac OS Xブート時にLANDISK Homeをホームディレクトリにマウントする

パソコン・インターネット

この記事の方法で、LANDISK Homeをホームディレクトリにマウントする場合でも、管理者権限を持つユーザは、ローカルディスクにホームディレクトリを残しておいて下さい。うまくホームディレクトリをマウントできなかった場合、危険です。

無改造のLANDISK Home(HDL4-G)で試していますが、他のNASでできるかどうかは不明です。

以前から、下書きしたままになって、放っておいた記事を公開します。内容は、見直しています。

公開するまで時間が経ってしまったのは、著作権絡みで心配な事があったからです。記事を公開するにあたり、その問題をクリアするための文書が見つかりました。

ここを見て、設定ファイルを作り直せば大丈夫そうです。この文書を発見するにあたり、次の記事を参考にさせていただきました。ありがとうございます。

この記事で公開するのは、LANDISK Home HDL4-Gでやりたかった事一つです。それは、LANDISK Homeを、システム起動時にホームディレクトリとしてマウントする事です。確認したのは、Mac OS X 10.5.8(Leopard)、10.4.11(Tiger)と10.3.9(Panther)です。

この方法は、残念ながらMac OS 10.6.4(Snow Leopard)では動きません。起動時にマウントするための基本的な仕組みは同じだと思うのですが、mount_afpの仕様が変わってしまった様なのです。user権限で、マウントできなくなったような気がします。

ここからしばらく、苦労話になります。結論を知りたい方は、飛ばして下さい。

最初のうちは、NetInfoマネージャ(Manager)のMountsサブディレクトリにプロパティを追加したりしていたのですが、うまく動きませんでした。何しろ、手をつけたのがMac OS X 10.3/10.4の頃だったので、まだNetInfoマネージャがあったのです。

次に見つけたのが、/System/Library/StartupItemsに"SMB_Mounts"を追加する方法だったのですが、この方法ではうまく動きませんでした(オリジナルの参照記事消失)。それと、ユーザが追加する時は、"/Library/StartupItems"に追加するべきだそうです。どちらに置いても、"/sbin/SystemStarter"が呼び出してくれます。"/sbin/SystemStarter"は、"/etc/rc"から呼ばれるみたいです。

"SMB_Mount"がうまく動かなかったのは、そのスクリプトがまずかったためでした。"/sbin/SystemStarter"をデバッグモード("-d"を付けて起動)する事で、問題に気が付きました。上記の例に載っているスクリプトでは、動きません。専用の書き方にする必要があるようです。

そして、結論です。LANDISK Homeを、起動時に自動マウントして、ホームディレクトリにする方法です。

LANDISK Homeへは、afp接続します。なぜ、smbを使うのを止めたかは、忘れてしまいました。

たどり着いたのが次の方法です。

  1. /Library/StartupItemsに、"LANDISKHome"というディレクトリを作る
  2. このディレクトリの中に、起動用コマンド"LANDISKHome"とプロパティリスト"StartupParameters.plist"を作る

起動用コマンドとプロパティリストは、先に紹介した、System
Startup Programming Topics: Creating a Startup Item
を参考に作成します。

LANDISKHomeの中身は、次のような感じです。usernameなど、必要に応じて変更して下さい。また、/Usersの下でマウントしています。危険だと思う人は、変更して下さい。その場合、システム環境設定→アカウントでの変更(Leopardの場合)等が必要になります。

#!/bin/sh
. /etc/rc.common
# The start subroutine
StartService() {
  ConsoleMessage "Starting LANDISK Home disk mounting"
  if [ ! -d /Users/username ] ; then
    mkdir /Users/username ;
    chown username:group /Users/username ;
  fi
  sudo -u username mount_afp 'afp://username:password@192.168.0.200/username' /Users/username
}
# The stop subroutine
StopService() {
  ConsoleMessage "Stopping LANDISK Home disk mounting"
  sudo umount /Users/username
}
# The restart subroutine
RestartService() {
  StopService
  StartService
}
RunService "$1"

StartupParameters.plistの中身です。

{
  Description     = "Mounts LANDISK Home disks";
  Provides        = ("Mounts LANDISK Home");
  Requires        = ("Network");
  OrderPreference = "Early";
  Messages =
  {
    start = "Starting LANDISK Home Automounts";
    stop  = "Stopping LANDISK Home Automounts";
  };
}

TARファイルにまとめてみました。

中身は、次のような感じです。

$ tar tvzf LANDISKHome.tar.gz
drwxr-xr-x root/wheel        0 2010-07-08 21:47:14 LANDISKHome/
-rwx------ root/wheel      557 2010-07-08 21:47:14 LANDISKHome/LANDISKHome
-rwxr-xr-x root/wheel      278 2010-06-27 21:18:03 LANDISKHome/StartupParameters.plist

次のようにして、展開して下さい。ダウンロードしたファイルは、~/Downloads/LANDISKHome.tar.gzにある物とします。

$ cd /Library/StartupItems
$ sudo tar xvpzf ~/Downloads/LANDISKHome.tar.gz

再起動して、ログインしてみて下さい。うまく行きましたでしょうか?

実験用のアカウントで試してから、本格移行する事をお勧めします。それと、くれぐれも、管理者権限を持つユーザのホームディレクトリは、ローカルディスクのままにしておいて下さい。

これで、LANDISK Homeに、まさしくhome directory(ホームディレクトリ)を引っ越せました。

この方法で、100%大丈夫かと言うと、そうではありません。mountができていても、Finderがうまく認識してくれなくて、ホームディレクトリが無い状態になる事があります。次のメッセージが出ます。

「ユーザ"username"のホームフォルダが通常の場所にないか、アクセスできません。」

このエラーが出たらお手上げで、再起動するしかありません。このエラーが出るのは、まちまちで、原因を追及できていません。

それと、sleepするとマウントが外れてしまいます。また、sleepから復帰した時にカーネルパニックになる事が多いです。sleepは使えないと思って下さい。

Posted by お市のかた