Hasta ahora, he podido mover los archivos de intercambio de memoria virtual de Apple a una partición dedicada en mi disco duro. La técnica que he estado usando se describe en un hilo en foros.macosxhints.com.
Sin embargo, con la vista previa del desarrollador de Snow Leopard, este método ya no funciona. ¿Alguien sabe cómo podría hacerse con el nuevo sistema operativo?
Actualización: He marcado la respuesta de dblu como aceptada, aunque no funcionó porque dio instrucciones excelentes y detalladas y porque su sugerencia de uso plutil
finalmente me señaló en la dirección correcta. La solución completa y funcional se publica aquí en la pregunta porque no tengo suficiente reputación para editar la respuesta aceptada.
Actualización n. ° 2: se modificó el procedimiento para ilustrar la técnica de ekl , que simplifica enormemente todo al eliminar la necesidad de un script de shell intermedio:
Solución completa:
1.
Abra el Terminal y haga una copia de seguridad del valor predeterminado dynamic_pager.plist de Apple:
$ cd /System/Library/LaunchDaemons
$ sudo cp com.apple.dynamic_pager.plist{,_bak}
2.
Convierta el plist de binario a XML simple:
$ sudo plutil -convert xml1 com.apple.dynamic_pager.plist
3.
Abra el plist convertido con el editor de texto de su elección. (Yo uso pico
, vea la respuesta de dblu para un ejemplo usando vim
):
$ sudo pico -w com.apple.dynamic_pager.plist
Debería 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.
Modifique la matriz ProgramArguments (líneas 13 a 18) para usar el comando de shell wait4path (como lo sugiere ZILjr ) antes de lanzar dynamic_pager. Consulte la nota 1 para obtener detalles sobre por qué esto es necesario. En el siguiente ejemplo, mi partición se llama 'Swap', y elegí poner los archivos de intercambio en un directorio oculto en esa partición, llamado '.vm', asegúrese de que el directorio que especifique realmente exista . El XML debería tener el siguiente aspecto:
<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.
Guarde el plist y regrese al indicador de terminal. Usando pico
, los comandos serían:
<ctrl+o> to save the file
<enter> to accept the same filename (com.apple.dynamic_pager.plist)
<ctrl+x> to exit
6.
Convierta el plist modificado de nuevo a binario:
$ sudo plutil -convert binary1 com.apple.dynamic_pager.plist
7.
Reinicia tu Mac. Si tiene problemas, cambie al modo de inicio detallado manteniendo presionada la tecla Comando-v inmediatamente después del timbre de inicio. Esto le permitirá ver todos los mensajes de inicio que aparecen durante el inicio. Si se encuentra con problemas aún peores (es decir, nunca ve la pantalla de inicio de sesión), mantenga presionados los Comandos-s. Esto iniciará la computadora en modo de usuario único (sin interfaz gráfica de usuario, solo un símbolo del sistema) y le permitirá restaurar la copia de seguridad de com.apple.dynamic_pager.plist que realizó en el paso 1.
8.
Una vez que la computadora se inicia, enciende la Terminal y verifica que los archivos de intercambio se hayan movido:
$ cd /Volumes/Swap/.vm
$ ls -l
Debería ver algo como esto:
-rw------- 1 someUser staff 67108864 18 Sep 12:02 swapfile0
9.
Eliminar los archivos de intercambio antiguos:
$ cd /private/var/vm
$ sudo rm swapfile*
10.
¡Lucro!
Nota 1
Modificar los argumentos a dynamic_pager en el plist sin usar wait4path
no siempre funciona, y cuando falla, lo hace de una manera espectacularmente silenciosa. El problema se debe al hecho de que dynamic_pager se inicia muy temprano en el proceso de inicio. Si su partición de intercambio aún no se ha montado cuando se carga dynamic_pager por primera vez (en mi experiencia, esto sucede el 99% del tiempo), entonces el sistema se abrirá paso. Creará un enlace simbólico en su directorio / Volumes que tiene el mismo nombre que su partición de intercambio, pero apunta de nuevo a la ubicación predeterminada del archivo de intercambio (/ private / var / vm). Luego, cuando se monte su partición de intercambio real, se le dará el nombre Swap 1
(o YourDriveName 1
). Puede ver el problema abriendo Terminal y enumerando el contenido de su directorio / Volumes:
$ cd /Volumes
$ ls -l
Verás 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 esta falla puede ser muy difícil de detectar. Si revisara los archivos de intercambio como lo muestro en el paso 12, ¡todavía los vería ! El enlace simbólico daría la impresión de que sus archivos de intercambio se han movido, incluso si en realidad están almacenados en la ubicación predeterminada.
Nota 2
Originalmente no pude hacer que esto funcionara en Snow Leopard porque com.apple.dynamic_pager.plist estaba almacenado en formato binario. Hice una copia del archivo original y lo abrí con el Editor de listas de propiedades de Apple (disponible con Xcode) para realizar cambios, pero este proceso agregó algunos atributos extendidos al archivo plist que causaron que el sistema lo ignorara y solo usara los valores predeterminados . Como señaló dblu, usar plutil
para convertir el archivo a XML simple funciona de maravilla .
Nota 3
Puede consultar la aplicación Consola para ver los mensajes que dynamic_pager_init echos a la pantalla. Si ve las siguientes líneas repetidas una y otra vez, hay un problema con la configuración. Me encontré con estos mensajes porque olvidé crear el directorio '.vm' que especifiqué 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 funciona correctamente, puede ver el mensaje anterior solo un par de veces, y luego no más de los mensajes de "Reactivación de aceleración". Esto significa que el sistema tuvo que esperar a que se cargara la partición, pero al final tuvo éxito.
wait4path
solución, gracias a lo que Applicorn's Xupport modificado para mí. Publicaré una respuesta completa una vez que descubra cómo hacerlo, pero lo más breve es cambiar el último argumento del programa solo a la nueva ruta (por ejemplo <string>/Volumes/swap/.vm/swapfile</string>
), cambiar la OnDemand
clave <true/>
y agregar una StartOnMount
clave al final con un valor de <true/>
. PD: esta solución funciona bien en Lion (para mí, al menos).
StartOnMount
bandera se agregó en 10.5 de acuerdo con: mactech.com/articles/mactech/Vol.25/25.10/…