El montaje del sparsebundle se puede realizar a través de la línea de comando usando el comando 'hdiutil'. También puede crear un script de shell que realizará esta acción. Este script asume que la imagen se encuentra en /Users/somebody/Image.sparsebundle, y que la frase de contraseña utilizada para cifrar la imagen es "testpass"):
#!/bin/bash
#
# This script mounts the disk image at /Users/somebody/Image.sparsebundle
#
echo -n testpass | hdiutil mount /Users/somebody/Image.sparsebundle
Después de crear ese script en algún editor de texto, puedes cambiar los permisos del archivo para permitir que se ejecute. Suponiendo que este script se haya creado en / Users / alguien / MountSparsebundle, puede usar Terminal para hacerlo ejecutable:
chmod 755 /Users/somebody/MountSparsebundle
Una vez que haya hecho el archivo ejecutable, debería poder ejecutar el comando usando la Terminal. En la Terminal, escriba la ruta completa del script para ejecutarlo:
/Users/somebody/MountSparsebundle
La secuencia de comandos debería ejecutarse y hacer que el sparsebundle se monte. Tenga en cuenta que deseará desmontar ese sparsebundle antes de ejecutar el script (para confirmar que se está montando cuando usa el script).
Después de verificar que la secuencia de comandos está funcionando, puede crear un LaunchDaemon que será responsable de montar este sparsebundle en el arranque. El archivo de configuración de LaunchDaemon se debe instalar en / Library / LaunchDaemons, lo que hará que se cargue antes de la ventana de inicio de sesión. Aquí hay un ejemplo de un archivo de configuración de launchd que ejecuta un script ubicado en / Users / alguien llamado "MountSparsebundle":
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>Label</key>
<string>com.example.mountsparsebundle</string>
<key>Program</key>
<string>/Users/somebody/MountSparsebundle</string>
</dict>
</plist>
El último paso que deberías tomar sería configurar el sistema launchd para cargar ese daemon de inicio en el arranque. Esto se puede lograr usando launchctl (asumiendo que el archivo en el paso anterior se guardó en "/Library/LaunchDaemons/com.example.mountsparsebundle.plist"):
sudo launchctl load -w /Library/LaunchDaemons/com.example.mountsparsebundle.plist
Alternativamente, puede usar un LoginHook, que suspenderá el lanzamiento del Finder hasta que se cierre la secuencia de comandos de inicio de sesión. Aunque Apple no recomienda LoginHooks, se pueden usar para lograr lo que estás tratando de hacer. Puede configurar la secuencia de comandos mencionada anteriormente como un enlace de inicio de sesión usando el comando predeterminado:
sudo defaults write com.apple.loginwindow LoginHook /Users/somebody/MountSparsebundle
Nota: Los LoginHooks se ejecutan como root, lo cual es un riesgo para la seguridad ... Sin embargo, esto también le permitirá examinar al usuario actual que está iniciando sesión (como parte del script) y realizar acciones basadas en el credenciales de usuario. Aquí hay una secuencia de comandos modificada que muestra un ejemplo de cómo analizar el nombre de usuario que está ingresando (que se pasa a la secuencia de comandos como argumento $ 1):
#!/bin/bash
#
# This script mounts the disk image at /Users/somebody/Image.sparsebundle
#
if [ "$1" == "somebody" ]; then
echo -n testpass | hdiutil mount /Users/somebody/Image.sparsebundle
fi