これまで、Appleの仮想メモリスワップファイルをハードドライブの専用パーティションに移動することができました。私が使用している手法は、forums.macosxhints.comのスレッドで説明されています。
ただし、Snow Leopardの開発者プレビューでは、この方法は機能しなくなりました。誰もが新しいOSでそれをどのように行うことができるか知っていますか?
更新:dbluの答えは受け入れられたとマークしましたが、うまく機能しませんでしたが、優れた詳細な指示を与え、plutil
最終的に使用する提案が正しい方向を示したためです。受け入れられた答えを編集するのに十分な評判がないので、完全で実用的なソリューションが質問にここに掲載されています。
更新#2:eklの手法を説明する手順を変更しました。これにより、中間シェルスクリプトが不要になり、全体が大幅に簡素化されます。
完全なソリューション:
1.
ターミナルを開き、Appleのデフォルトのdynamic_pager.plistのバックアップコピーを作成します。
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
plistをバイナリからプレーンXMLに変換します。
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
選択したテキストエディタで変換されたplistを開きます。(私は使用しますpico
、を使用した例についてはdbluの答えを参照してくださいvim
):
$ sudo pico -w com.apple.dynamic_pager.plist
次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
<key>EnableTransactions</key>
<true/>
<key>HopefullyExitsLast</key>
<true/>
<key>Label</key>
<string>com.apple.dynamic_pager</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/sbin/dynamic_pager</string>
<string>-F</string>
<string>/private/var/vm/swapfile</string>
</array>
</dict>
</plist>
4.
(によって示唆されるようwait4pathシェル・コマンドを使用するProgramArgumentsアレイ(ライン18を介して13)を変更ZILjr)前dynamic_pagerを起動します。これが必要な理由の詳細については、注1を参照してください。次の例では、私のパーティションは 'Swap'と呼ばれ、そのパーティションの隠しディレクトリ( '.vm' と呼ばれる)にスワップファイルを置くことにしました。XMLは次のようになります。
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>/bin/wait4path /Volumes/Swap/ &&
/sbin/dynamic_pager -F /Volumes/Swap/.vm/swapfile</string>
</array>
5.
plistを保存し、ターミナルプロンプトに戻ります。を使用するpico
と、コマンドは次のようになります。
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
変更したplistをバイナリに変換します。
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
Macを再起動します。問題が発生した場合は、起動チャイムの直後にCommand-vを押して、詳細な起動モードに切り替えます。これにより、起動時に表示されるすべての起動メッセージが表示されます。さらにひどいトラブルに遭遇した場合(つまり、ログイン画面が表示されない場合)、代わりにCommand-sを押し続けます。これにより、コンピューターがシングルユーザーモード(グラフィカルUIなし、コマンドプロンプトなし)で起動し、手順1で作成したcom.apple.dynamic_pager.plistのバックアップコピーを復元できます。
8.
コンピュータが起動したら、ターミナルを起動し、スワップファイルが実際に移動されたことを確認します。
$ cd /Volumes/Swap/.vm
$ ls -l
次のようなものが表示されるはずです。
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
古いスワップファイルを削除します。
$ cd /private/var/vm
$ sudo rm swapfile*
10.
利益!
注1
使用wait4path
せずにplistのdynamic_pagerの引数を変更しても、常に機能するとは限りません。失敗した場合は、非常に静かな方法で変更します。この問題は、起動プロセスの非常に早い段階でdynamic_pagerが起動されるという事実に起因しています。dynamic_pagerが最初にロードされたときにスワップパーティションがまだマウントされていない場合(私の経験では、これは99%の時間で発生します)、システムは偽装します。/ Volumesディレクトリに、スワップパーティションと同じ名前のシンボリックリンクを作成しますが、デフォルトのスワップファイルの場所(/ private / var / vm)を指します。次に、実際のスワップパーティションがマウントされると、名前Swap 1
(またはYourDriveName 1
)が付けられます。ターミナルを開いて/ Volumesディレクトリの内容を一覧表示すると、問題を確認できます。
$ cd /Volumes
$ ls -l
次のようなものが表示されます。
drwxrwxrwx 11 yourUser staff 442 16 Sep 12:13 Swap -> private/var/vm
drwxrwxrwx 14 yourUser staff 5 16 Sep 12:13 Swap 1
lrwxr-xr-x 1 root admin 1 17 Sep 12:01 System -> /
この失敗を見つけるのは非常に難しいことに注意してください。手順12で示したように、スワップファイルを確認する場合は、まだ表示されます!シンボリックリンクを使用すると、実際にはデフォルトの場所に保存されていても、スワップファイルが移動されたように見えます。
注2
com.apple.dynamic_pager.plistがバイナリ形式で保存されていたため、私はもともとこれをSnow Leopardで動作させることができませんでした。元のファイルのコピーを作成し、変更を加えるためにAppleのProperty List Editor(Xcodeで利用可能)で開きましたが、このプロセスはplistファイルにいくつかの拡張属性を追加し、システムがそれを無視してデフォルトを使用するようにしました。dbluが指摘したplutil
ように、ファイルをプレーンXMLに変換するために使用することは魅力的です。
注3
コンソールアプリケーションをチェックして、dynamic_pager_initが画面にエコーするメッセージを確認できます。次の行が何度も繰り返される場合は、セットアップに問題があります。dynamic_pager_initで指定した「.vm」ディレクトリを作成するのを忘れたため、これらのメッセージに遭遇しました。
com.apple.launchd[1] (com.apple.dynamic_pager[176]) Exited with exit code: 1
com.apple.launchd[1] (com.apple.dynamic_pager) Throttling respawn: Will start in 10 seconds
すべてが正常に機能している場合、上記のメッセージが数回表示されるだけで、「スロットルの再スポーン」メッセージが表示されなくなる場合があります。つまり、システムはパーティションがロードされるのを待つ必要がありましたが、最終的には成功しました。
wait4path
Applicornのおかげで解決策が見つかりませんでしたXupportが変更されました。方法がわかれば完全な回答を投稿しますが、最後のプログラム引数を新しいパス(例:)<string>/Volumes/swap/.vm/swapfile</string>
に変更し、OnDemand
キーを<true/>
に変更StartOnMount
し、値のあるキーを最後に追加するだけですの<true/>
。PSこのソリューションは、Lionで正常に機能します(少なくとも私にとっては)。
StartOnMount
:フラグに応じて10.5に加えmactech.com/articles/mactech/Vol.25/25.10/...