nota: copia de Superusuario:
Para las anteriores versiones de OSX, ver este hilo en forums.macosxhints.com.
El crédito va a dblu para explicar el uso de plutil
, ZILjr para la introducción de la wait4path
comando, y ekl para simplificar el todo por la eliminación de la necesidad de un intermedio de secuencia de comandos de shell.
Solución completa:
1. Abre el Terminal y hacer una copia de seguridad de Apple por defecto dynamic_pager.plist:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2. Convertir el plist de binarios sin formato XML:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3. Abra la convierte plist con el editor de texto de su elección. (Yo uso pico
, ver dblu de la respuesta para un ejemplo de uso vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Debe verse de la siguiente manera:
<?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. Modificar el ProgramArguments array (líneas 13 a 18 años) el uso de la wait4path
shell de comandos antes de lanzar dynamic_pager. Ver nota #1 para los detalles sobre por qué esto es necesario. En el ejemplo siguiente, mi partición se llama Swap
, y he optado por poner el swapfiles en un directorio oculto en esa partición, llamado .vm
asegúrese de que el directorio que especifique en realidad existe. El XML debe quedar como sigue:
<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. Guardar el plist, y volver a la ventana de terminal. El uso de pico
, los comandos sería:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6. Convertir la modificación plist de vuelta a binario:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7. Reinicie su Mac. Si llegas a tener problemas, cambie a detallado en el modo de inicio manteniendo pulsadas las teclas Comando-v inmediatamente después de que el sonido de arranque. Esto le permitirá ver todos los mensajes de inicio que aparece durante el inicio. Si se ejecuta en un problema peor (es decir, nunca se ve a la pantalla de inicio de sesión), mantenga pulsada la tecla Comando-s en su lugar. Esto hará que la computadora arranque en modo de usuario único (sin interfaz gráfica de usuario, sólo un símbolo del sistema) y permite restaurar la copia de seguridad de com.apple.dynamic_pager.plist que usted hizo en el paso 1.
8. Una vez que se inicia el equipo, el fuego de la Terminal y comprobar que el intercambio de archivos han sido movidos:
$ cd /Volumes/Swap/.vm
$ ls -l
Usted debe ver algo como esto:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9. Borrar el antiguo swapfiles:
$ cd /private/var/vm
$ sudo rm swapfile*
10. La ganancia!
Nota 1
La modificación de los argumentos a dynamic_pager en el plist sin usar wait4path
no siempre funciona, y cuando falla, lo hace en una forma espectacular en el silencio. El problema deriva del hecho de que dynamic_pager se inició muy temprano en el proceso de inicio. Si su partición de intercambio no ha sido todavía montado, cuando dynamic_pager es la primera carga (en mi experiencia, esto ocurre el 99% del tiempo), entonces el sistema falsos, a su manera a través. Se creará un enlace simbólico en /Volúmenes directorio que tiene el mismo nombre que la partición de intercambio, pero apunta de nuevo a los predeterminados de archivo de intercambio de localización (/private/var/vm). Luego, cuando su partición de intercambio de los montes, se le dio el nombre Swap 1
(o YourDriveName 1
). Usted puede ver el problema con la apertura de la Terminal y el listado de los contenidos de su /Volúmenes directorio:
$ cd /Volumes
$ ls -l
Usted verá algo como esto:
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 -> /
Tenga en cuenta que este error puede ser muy difícil de detectar. Si se va a revisar para la swapfiles como muestro en el paso 12, usted todavía podría verlos! El enlace simbólico haría parecer como si su swapfiles se había movido, aunque en realidad ellos estaban siendo almacenados en la ubicación predeterminada.
Nota 2
Originalmente fui incapaz de conseguir que esto funcione en Snow Leopard porque com.apple.dynamic_pager.plist se almacenan en formato binario. He hecho una copia del archivo original y lo abrió con Propiedad de Apple Editor de la Lista (disponible con Xcode) con el fin de hacer los cambios, pero este proceso agregó algunos atributos extendidos para el archivo plist que causó que el sistema ignore y sólo utilizar los valores predeterminados. Como dblu señalado, el uso de plutil
a convertir el archivo XML simple funciona como un encanto.
Nota 3
Usted puede comprobar la aplicación de Consola para ver los mensajes que dynamic_pager_init echos a la pantalla. Si usted ve las líneas siguientes se repiten una y otra vez, hay un problema con la instalación. Me encontré con estos mensajes porque se me olvidó crear el '.vm' en el directorio que me especificado en 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
Cuando todo está funcionando correctamente, puede ver el mensaje de arriba un par de veces solo, y entonces no hay más de la "Limitación de regeneración" de los mensajes. Esto significa que el sistema tenía que esperar para que la partición de la carga, pero al final fue un éxito.
Excluye la ruta de acceso de la Máquina del Tiempo
En OS X 10.7 y más tarde, usted puede hacer esto con tmutil. Ejemplo:
sudo tmutil addexclusion -p /Volumes/Swap/.vm
Por ejemplo, para revisar el resultado:
tmutil isexcluded /Volumes/Swap && tmutil isexcluded /Volumes/Swap/.vm
Si el volumen que se utiliza para el intercambio no necesita ser indexados
Uso mdutil. Ejemplo, apagar, a continuación, borrar la tienda:
sudo mdutil -i off /Volumes/Swap && sudo mdutil -E /Volumes/Swap