Nota: copiado do SuperUser:
Para versões mais antigas do OSX, consulte este tópico em forums.macosxhints.com.
O crédito é atribuído ao dblu por explicar o uso de plutil
, ZILjr por introduzir o wait4path
comando e ekl por simplificar tudo, eliminando a necessidade de um shell script intermediário.
Solução completa:
1. Abra o Terminal e faça uma cópia de backup do dynamic_pager.plist padrão da Apple:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2. Converta o plist de XML binário em XML simples:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3. Abra o plist convertido com o seu editor de texto de sua escolha. (Eu uso pico
, veja a resposta do dblu para um exemplo usando vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Deve ter a seguinte aparência:
<?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. Modifique a matriz ProgramArguments (linhas 13 a 18) para usar o wait4path
comando shell antes de iniciar o dynamic_pager. Veja a nota 1 para detalhes sobre por que isso é necessário. No exemplo a seguir, minha partição é chamada Swap
e eu escolhi colocar os arquivos de troca em um diretório oculto nessa partição, chamada .vm
certifique-se de que o diretório que você especificar realmente exista . O XML deve ter a seguinte aparência:
<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. Salve o plist e retorne ao prompt do terminal. Usando pico
, os comandos seriam:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6. Converta o plist modificado novamente em binário:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7. Reinicie o Mac. Se você tiver problemas, alterne para o modo de inicialização detalhado, mantendo pressionada a tecla Command-v imediatamente após o toque da inicialização. Isso permitirá que você veja todas as mensagens de inicialização que aparecem durante a inicialização. Se você tiver problemas ainda piores (ou seja, nunca verá a tela de login), mantenha pressionada a tecla Command-s. Isso inicializará o computador no modo de usuário único (sem interface gráfica do usuário, apenas um prompt de comando) e permitirá restaurar a cópia de backup de com.apple.dynamic_pager.plist que você fez na etapa 1.
8. Depois que o computador inicializar, inicie o Terminal e verifique se os arquivos de troca foram realmente movidos:
$ cd /Volumes/Swap/.vm
$ ls -l
Você deve ver algo assim:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9. Exclua os arquivos de troca antigos:
$ cd /private/var/vm
$ sudo rm swapfile*
10. Lucro!
Nota 1
Modificar os argumentos para dynamic_pager no plist sem usar wait4path
nem sempre funciona e, quando falha, ocorre de maneira espetacularmente silenciosa. O problema decorre do fato de o dynamic_pager ser iniciado muito cedo no processo de inicialização. Se sua partição de troca ainda não foi montada quando o dynamic_pager é carregado pela primeira vez (na minha experiência, isso acontece 99% do tempo), o sistema irá falsificar seu caminho. Ele criará um link simbólico no diretório / Volumes que tem o mesmo nome que sua partição de troca, mas aponta para o local padrão do arquivo de troca (/ private / var / vm). Então, quando sua partição de troca real for montada, ele receberá o nome Swap 1
(ou YourDriveName 1
). Você pode ver o problema abrindo o Terminal e listando o conteúdo do seu diretório / Volumes:
$ cd /Volumes
$ ls -l
Você verá algo assim:
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 -> /
Observe que essa falha pode ser muito difícil de detectar. Se você fosse procurar os arquivos de troca como mostro na etapa 12, ainda os veria ! O link simbólico faria parecer que seus arquivos de troca foram movidos, mesmo que eles estivessem realmente sendo armazenados no local padrão.
Nota 2
Inicialmente, não consegui fazer isso funcionar no Snow Leopard porque o com.apple.dynamic_pager.plist estava armazenado em formato binário. Fiz uma cópia do arquivo original e abri-o com o Editor de lista de propriedades da Apple (disponível com o Xcode) para fazer alterações, mas esse processo adicionou alguns atributos estendidos ao arquivo plist, o que fez com que o sistema o ignorasse e apenas usasse os padrões . Como o dblu apontou, usar plutil
para converter o arquivo em XML simples funciona como um encanto.
Nota 3
Você pode verificar o aplicativo Console para ver as mensagens que dynamic_pager_init ecoam na tela. Se você vir as seguintes linhas repetidas vezes sem conta, há um problema com a instalação. Encontrei essas mensagens porque esqueci de criar o diretório '.vm' especificado em 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
Quando tudo estiver funcionando corretamente, você poderá ver a mensagem acima apenas algumas vezes e, em seguida, não haverá mais as mensagens "Aceleração do reaparecimento". Isso significa que o sistema precisou esperar o carregamento da partição, mas no final foi bem-sucedida.
Excluir o caminho do Time Machine
No OS X 10.7 e posterior, você pode fazer isso com o tmutil . Exemplo:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
Para esse exemplo, para revisar o resultado:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Se o volume usado para troca não precisar ser indexado
Use mdutil . Exemplo, para desligar e apagar a loja:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap
/private/var/vm/sleepimage
no Superusuário: Devo vincular meu diretório / private / var / vm a outro volume no OS X Lion? (20/09/2011) - há uma resposta que recomenda não usar o mesmo volume separado para arquivos de troca externos e imagem de sono.