Saya telah dapat memindahkan swapfile memori virtual Apple ke partisi khusus pada hard drive saya sampai sekarang. Teknik yang saya gunakan dijelaskan di utas di forums.macosxhints.com.
Namun, dengan pratinjau pengembang Snow Leopard, metode ini tidak lagi berfungsi. Adakah yang tahu bagaimana hal itu bisa dilakukan dengan OS baru?
Pembaruan: Saya telah menandai jawaban dblu sebagai diterima walaupun tidak cukup berhasil karena dia memberikan instruksi yang sangat baik dan terperinci dan karena sarannya untuk menggunakan plutil
akhirnya mengarahkan saya ke arah yang benar. Solusi yang lengkap dan berfungsi diposting di sini dalam pertanyaan karena saya tidak memiliki reputasi yang cukup untuk mengedit jawaban yang diterima.
Pembaruan # 2: Mengubah prosedur untuk menggambarkan teknik ekl , yang sangat menyederhanakan semuanya dengan menghilangkan kebutuhan untuk skrip shell perantara:
Solusi lengkap:
1.
Buka Terminal dan buat salinan cadangan dynamic_pager.plist default Apple:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
Ubah plist dari biner menjadi XML biasa:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
Buka plist yang dikonversi dengan editor teks pilihan Anda. (Saya menggunakan pico
, lihat jawaban dblu untuk contoh menggunakan vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Seharusnya terlihat sebagai berikut:
<?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.
Ubah array ProgramArguments (baris 13 hingga 18) untuk menggunakan perintah wait4path shell (seperti yang disarankan oleh ZILjr ) sebelum meluncurkan dynamic_pager. Lihat catatan # 1 untuk perincian tentang mengapa ini perlu. Dalam contoh berikut, partisi saya disebut 'Swap', dan saya memilih untuk meletakkan swapfiles di direktori tersembunyi di partisi itu, yang disebut '.vm' pastikan bahwa direktori yang Anda tentukan benar-benar ada . XML seharusnya terlihat sebagai berikut:
<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.
Simpan plist, dan kembali ke terminal prompt. Menggunakan pico
, perintahnya adalah:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
Ubah plist yang diubah kembali menjadi biner:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
Mulai ulang Mac Anda. Jika Anda mengalami masalah, beralih ke mode startup verbose dengan menahan Command-v segera setelah bunyi startup berbunyi. Ini akan memungkinkan Anda melihat semua pesan startup yang muncul selama startup. Jika Anda mengalami masalah yang bahkan lebih buruk (yaitu Anda tidak pernah melihat layar masuk), tahan Command-s sebagai gantinya. Ini akan mem-boot komputer dalam mode pengguna-tunggal (tanpa UI grafis, hanya prompt perintah) dan memungkinkan Anda untuk mengembalikan salinan cadangan com.apple.dynamic_pager.plist yang Anda buat pada langkah 1.
8.
Setelah komputer melakukan boot, nyalakan Terminal dan verifikasi bahwa file swap sebenarnya telah dipindahkan:
$ cd /Volumes/Swap/.vm
$ ls -l
Anda harus melihat sesuatu seperti ini:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
Hapus swapfiles lama:
$ cd /private/var/vm
$ sudo rm swapfile*
10.
Keuntungan!
Catatan 1
Memodifikasi argumen menjadi dynamic_pager di plist tanpa menggunakan wait4path
tidak selalu berhasil, dan ketika gagal, ia melakukannya dengan cara yang sangat hening. Masalahnya berasal dari kenyataan bahwa dynamic_pager diluncurkan sangat awal dalam proses startup. Jika partisi swap Anda belum dipasang ketika dynamic_pager pertama kali dimuat (menurut pengalaman saya, ini terjadi 99% dari waktu), maka sistem akan memalsukan jalannya. Ini akan membuat tautan simbolik di direktori / Volume Anda yang memiliki nama yang sama dengan partisi swap Anda, tetapi menunjuk kembali ke lokasi swapfile default (/ private / var / vm). Kemudian, ketika partisi swap Anda yang sebenarnya mount, itu akan diberi nama Swap 1
(atau YourDriveName 1
). Anda dapat melihat masalahnya dengan membuka Terminal dan daftar isi direktori / Volume Anda:
$ cd /Volumes
$ ls -l
Anda akan melihat sesuatu seperti ini:
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 -> /
Perhatikan bahwa kegagalan ini bisa sangat sulit dikenali. Jika Anda memeriksa swapfiles seperti yang saya tunjukkan di langkah 12, Anda masih akan melihatnya ! Tautan simbolis akan membuatnya seolah-olah swapfile Anda telah dipindahkan, meskipun mereka sebenarnya disimpan di lokasi default.
Catatan 2
Saya awalnya tidak bisa mendapatkan ini berfungsi di Snow Leopard karena com.apple.dynamic_pager.plist disimpan dalam format biner. Saya membuat salinan file asli dan membukanya dengan Editor Daftar Properti Apple (tersedia dengan Xcode) untuk membuat perubahan, tetapi proses ini menambahkan beberapa atribut tambahan ke file plist yang menyebabkan sistem mengabaikannya dan hanya menggunakan default . Seperti dblu tunjukkan, menggunakan plutil
untuk mengonversi file ke XML berfungsi seperti pesona.
Catatan 3
Anda dapat memeriksa aplikasi Konsol untuk melihat pesan apa saja yang dynamic_pager_init bergema ke layar. Jika Anda melihat baris berikut berulang-ulang, ada masalah dengan pengaturan. Saya mengalami pesan-pesan ini karena saya lupa membuat direktori '.vm' yang saya tentukan di dynamic_pager_init.
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
Ketika semuanya berfungsi dengan baik, Anda mungkin melihat pesan di atas hanya beberapa kali, dan kemudian tidak ada lagi pesan "Throttling respawn". Ini berarti bahwa sistem memang harus menunggu untuk memuat partisi, tetapi pada akhirnya berhasil.
wait4path
diminta oleh negara yang dilindungi) , tetapi saya menemukan solusi, berkat apa yang Applicorn's berikan. Xupport dimodifikasi untuk saya. Saya akan memposting jawaban lengkap begitu saya tahu caranya, tetapi singkatnya adalah mengubah argumen program terakhir menjadi hanya jalur baru (mis. <string>/Volumes/swap/.vm/swapfile</string>
), Mengubah OnDemand
kunci <true/>
, dan menambahkan StartOnMount
kunci ke akhir dengan nilai dari <true/>
. PS Solusi ini berfungsi dengan baik di Lion (bagi saya, setidaknya).
StartOnMount
bendera ditambahkan pada 10,5 menurut: mactech.com/articles/mactech/Vol.25/25.10/...