Примітка: скопійовано з SuperUser:
Для старих версій OSX дивіться цю тему на forums.macosxhints.com.
Заслуга dblu для пояснення використання plutil
, ZILjr для введення wait4path
команди і EKL для спрощення все це за рахунок усунення необхідності в проміжному сценарії оболонки.
Повне рішення:
1. Відкрийте термінал і зробіть резервну копію за замовчуванням на програмі динамичного_пагер.plist Apple:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2. Перетворіть список із бінарного в звичайний XML:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3. Відкрийте перетворений список із текстовим редактором на вибір. (Я використовую 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. Змініть масив ProgramArguments (рядки з 13 по 18), щоб використовувати команду wait4path
shell перед запуском динамического_пагера. Детальну інформацію про те, чому це необхідно, див. У примітці №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. Збережіть список і поверніться до підказки терміналу. Використовуючи pico
команди, було б:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6. Перетворіть модифікований список у бінарний:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7. Перезавантажте комп'ютер Mac. Якщо у вас виникли проблеми, перейдіть до режиму багаторазового запуску, утримуючи Command-v відразу після звукового сигналу. Це дозволить вам побачити всі повідомлення про запуск, які з’являються під час запуску. Якщо у вас виникли ще гірші проблеми (тобто ви ніколи не бачите екран входу), замість цього натисніть і утримуйте Command-s. Це завантажить комп'ютер у режимі однокористування (немає графічного інтерфейсу, лише командний рядок) і дозволить відновити резервну копію com.apple.dynamic_pager.plist, яку ви створили на кроці 1.
8. Як тільки комп'ютер завантажиться, запустіть термінал і переконайтеся, що файли swap дійсно переміщені:
$ 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
Змінювати аргументи на динамичний_pager у плісті без використання wait4path
не завжди працює, а коли він не працює, це робить ефектно безшумно. Проблема випливає з того, що dynam_pager запускається дуже рано в процесі запуску. Якщо ваш розділ swap ще не змонтований під час першого завантаження динамичного_пагера (на мій досвід, це трапляється 99% часу), тоді система пройде підробку. Це створить символічне посилання у вашому каталозі / Volumes, яке має те саме ім’я, що і ваш розділ swap, але вказує на розташування swapfile за замовчуванням (/ private / var / vm). Потім, коли ваш фактичний swap-розділ змонтується, йому буде надано ім’я Swap 1
(або YourDriveName 1
). Проблему можна побачити, відкривши термінал і перерахувавши вміст каталогу / томів:
$ 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
Я спочатку не міг змусити це працювати в Snow Leopard, оскільки com.apple.dynamic_pager.plist зберігався у двійковому форматі. Я зробив копію оригінального файлу і відкрив його за допомогою редактора списку властивостей Apple (доступний з Xcode), щоб внести зміни, але цей процес додав до розширеного файлу деякі розширені атрибути, завдяки чому система ігнорувала його та просто використовувала параметри за замовчуванням. . Як зазначав dblu, використання plutil
для перетворення файлу в звичайний XML працює як шарм.
Примітка 3
Ви можете перевірити додаток Console, щоб побачити будь-які повідомлення, які в динамічному звуку перегукуються на екран. Якщо ви бачите, що наступні рядки повторюються знову і знову, виникає проблема з налаштуванням. Я наткнувся на ці повідомлення, тому що забув створити каталог ".vm", який я вказав у 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
Якщо все працює належним чином, ви можете побачити вищезгадане повідомлення лише кілька разів, а потім більше не буде повідомлень про "Throttling respawn". Це означає, що системі довелося чекати завантаження розділу, але врешті-решт це було успішно.
Виключіть шлях із машини часу
В OS X 10.7 та пізніших версіях ви можете це зробити за допомогою tmutil . Приклад:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
Для цього прикладу, щоб переглянути результат:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Якщо об'єм, який використовується для заміни, не потрібно індексувати
Використовуйте mdutil . Наприклад, щоб вимкнути і видалити магазин:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap
/private/var/vm/sleepimage
у програмі Super User: Чи слід символізувати мій / private / var / vm dir до іншого тома в OS X Lion? (2011-09-20) - є відповідь, яка рекомендує не використовувати однаковий окремий том як для зовнішніх файлів, так і для режиму сну.