2012/10/22

Mac で RamDisk

Mac (Mountain Lion)で RamDisk を使おうとして、Esperance DV とか Ramdisk On Menubar とかいろいろ試したんですが、
  • リブートしたらマウント外れたり
  • シャットダウン時にRamDiskの内容を強制的にセーブしたり
  • 起動時にRamDiskの内容を強制的にリストアしたり
  • メニューバーにRamDisk操作用のアイコンが表示されたり
などなど、なんかしっくりくるのがないので、結局シェルスクリプトを書きました。
特徴は
  • セーブやリストアはしない
  • キャッシュ等を置きたいアプリは、自分で登録したり symlink を貼る必要あり
  • システム起動時にマウントされる
  • マウントポイントは /Volumes/.RamDisk
  • Finder では untitled と表示される。誤操作防止のためイジェクトはできない
  • システム起動時に自動的にRAMDISKが作成されるようにするには Lingon を使う
といったものです。

#!/bin/sh
#
# mkramdisk.sh : prepare ramdisk for mac
#
# install:
# 1. modify variables (caches, mb) as your like, in this script.
#
# 2. register to startup:
# 1. open "Ligon"
# 2. New to "Users Daemons"
# 3. Label: "mkramdisk"
# 4. ProgramArguments:"/PATH/TO/mkramdisk.sh"
# 5. RunAtLoad: check
# 6. Save & Load: push
#
# list for app caches from /Users/user/Library/Caches
caches='
com.apple.Safari
Google
QCCompositionRepository-com.apple.iTunes.cache
com.apple.iTunes
com.apple.appstore
'
mb=2048 # size (MB)
mountpoint=/Volumes/.RamDisk
dir=cache
# prepare ramdisk
sect=`expr $mb \* 1024 \* 1024 \/ 512`
mydev=`hdid -nomount ram://$sect`
mask=`umask`
umask 000
/sbin/newfs_hfs $mydev
mkdir $mountpoint
/sbin/mount -t hfs $mydev $mountpoint
#/usr/sbin/diskutil renameVolume $mydev '.RamDisk' # <-- FIXME: why doesn't work
# dig directory
mkdir -p $mountpoint/$dir; cd $mountpoint/$dir
for d in $caches; do
mkdir $d
done
umask $mask
view raw mkramdisk.sh hosted with ❤ by GitHub

使い方:
  1. RAMDISKに置きたいアプリのキャッシュフォルダ名を変数cachesに追加。
    キャッシュフォルダ名は /Users/ユーザ/Library/Caches の中を見ればわかります。
  2. 変数mbにメガバイト単位でRAMDISKの容量を設定。
  3. Lingonをインストールして起動。
  4. Newボタンを押して、"Users Daemons" を選択し、下の画像のように設定。



  5. リブート。
  6. ターミナルで"cd /Volumes/.RamDisk/cache/;ls -a"して、caches変数に登録した名前のフォルダができていることを確認。
  7. caches変数に設定したキャッシュフォルダを/Users/ユーザ/Library/Cachesから削除し、代わりにそれぞれ、
    "ln -s /Volumes/.RamDisk/cache/キャッシュフォルダ名 /Users/user/Library/Caches"
    としておく。
  8. 設定したアプリを起動してしばらく使った後、
    "cd /Volumes/.RamDisk/cache/キャッシュフォルダ名;ls -a"
    して、ファイルができてることを確認。
Finderで見た時の"untitled"っていうボリューム名をなんとかしたいんですが、よくわからんので(実害ないですし)放置です。
Related Posts Plugin for WordPress, Blogger...

0 コメント :

コメントを投稿