質問: スワップファイルをsnow leopardの専用パーティションに移動する これまでは、appleの仮想メモリスワップファイルをハードドライブの専用パーティションに移動することができました。私が使用しているテクニックは、forums.macosxhints.comの thread で説明されています。ただし、snow leopardの開発者プレビューでは、この方法は機能しなくなりました。新しいosでそれがどのように行われるかを誰かが知っていますか?更新:私は dblu's answer を受け入れたとマークしました。 plutilを使用するという彼の提案が最終的に正しい方向に私を向けたからです。承認された回答を編集するための十分な評判がないため、完全な実用的なソリューションが質問のここに投稿されています。update#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を使用しています。vimを使用した例については、dbluの回答を参照してください):$ 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. dynamic_pagerを起動する前に( ziljr で推奨される)wait4pathシェルコマンドを使用するようにprogramarguments配列(13〜18行目)を変更します。これが必要な理由の詳細については、注1を参照してください。次の例では、私のパーティションは「スワップ」と呼ばれ、「。vm」と呼ばれるそのパーティションの隠しディレクトリにスワップファイルを置くことを選択しました実際に指定したディレクトリを確認してください存在します。 xmlは次のようになります。<key>programarguments</key> <array> <string>/bin/bash</string> <string>-c</string> <string>/bin/wait4path /volumes/swap/ &amp;&amp; /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.利益!注1wait4pathを使用せずに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のプロパティリストエディター(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 すべてが正常に機能している場合、上記のメッセージが数回だけ表示され、その後、「スロットリングの再生成」メッセージが表示されなくなることがあります。つまり、システムはパーティションが読み込まれるのを待つ必要がありましたが、最終的には成功しました。
回答: [〜#〜] note [〜#〜]:質問自体の修正/改善された回答も(また)参照してください。次の解決策は私のために働きました:ターミナルを開いて、すぐに変更するcom.apple.dynamic_pager.plistをバックアップします。$ cd /system/library/launchdaemons $ sudo cp com.apple.dynamic_pager.plist {、_ bak}バイナリplistをxmlに変換します。$ sudo plutil -convert xml1 com.apple.dynamic_pager.plistお気に入りのテキストエディターで開きます$ sudo vim com.apple.dynamic_pager.plist次のようになります。 1 <?xml version="1.0" encoding="utf-8"?> 2 <!doctype plist public "-//apple//dtd plist 1.0//en" "http://www.apple.com/dtds/propertylist-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>enabletransactions</key> 6 <true/> 7 <key>hopefullyexitslast</key> 8 <true/> 9 <key>label</key> 10 <string>com.apple.dynamic_pager</string> 11 <key>ondemand</key> 12 <false/> 13 <key>programarguments</key> 14 <array> 15 <string>/sbin/dynamic_pager</string> 16 <string>-f</string> 17 <string>/private/var/vm/swapfile</string> 18 </array> 19 </dict> 20 </plist> 17行目で/ private/var/vm/swapfile(例:/ volumes/partition2/swapfile)を変更し、エディターを保存して閉じます(「:x」は両方ともvimで実行されます)。plistファイルをバイナリに変換します。$ sudo plutil -convert binary1 com.apple.dynamic_pager.plistmacを再起動すると、指定したディレクトリにスワップファイルが見つかります。問題が発生した場合は、次のコマンドを使用して、最初のステップで作成したバックアップを復元できます。$ cd /system/library/launchdaemons $ sudo cp com.apple.dynamic_pager.plist {_bak、}