Il montaggio dello sparsebundle può essere eseguito tramite la riga di comando usando il comando 'hdiutil'. Puoi anche creare uno script di shell che eseguirà questa azione. Questo script presuppone che l'immagine si trovi in /Users/somebody/Image.sparsebundle e che la passphrase utilizzata per crittografare l'immagine sia "testpass"):
#!/bin/bash
#
# This script mounts the disk image at /Users/somebody/Image.sparsebundle
#
echo -n testpass | hdiutil mount /Users/somebody/Image.sparsebundle
Dopo aver creato quello script in un editor di testo, è possibile modificare le autorizzazioni del file per consentirne l'esecuzione. Supponendo che questo script sia stato creato in / Users / somebody / MountSparsebundle, puoi usare Terminal per renderlo eseguibile:
chmod 755 /Users/somebody/MountSparsebundle
Una volta che hai reso eseguibile il file, dovresti essere in grado di eseguire il comando usando il Terminale. In Terminale, digita il percorso completo dello script per eseguirlo:
/Users/somebody/MountSparsebundle
Lo script dovrebbe essere eseguito e causare il montaggio dello sparsebundle. Nota che dovrai smontare lo sparsebundle prima di eseguire lo script (per confermare che si sta montando quando usi lo script).
Dopo aver verificato che lo script funzioni, puoi creare un LaunchDaemon che sarà responsabile del montaggio di questo sparsebundle all'avvio. Il file di configurazione LaunchDaemon deve essere installato in / Library / LaunchDaemons, che verrà caricato prima della finestra di login. Ecco un esempio di un file di configurazione launchd che esegue uno script situato in / Users / qualcuno chiamato "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>
L'ultimo passo che dovresti fare sarebbe configurare il sistema launchd per caricare quel demone di avvio all'avvio. Questo può essere realizzato usando launchctl (Supponendo che il file nel passaggio precedente sia stato salvato in "/Library/LaunchDaemons/com.example.mountsparsebundle.plist"):
sudo launchctl load -w /Library/LaunchDaemons/com.example.mountsparsebundle.plist
In alternativa, puoi utilizzare un LoginHook, che sospenderà l'avvio del Finder fino allo spegnimento dello script di accesso. Sebbene Apple non raccomandi LoginHooks, possono essere utilizzati per realizzare ciò che stai cercando di fare. Puoi configurare lo script sopra menzionato come un hook di accesso usando il comando defaults:
sudo defaults write com.apple.loginwindow LoginHook /Users/somebody/MountSparsebundle
Nota: LoginHooks viene eseguito come root, che è un po 'un rischio per la sicurezza ... Tuttavia, questo ti permetterà anche di esaminare l'utente corrente che sta effettuando l'accesso (come parte dello script) ed eseguire azioni basate sul credenziali dell'utente. Ecco uno script modificato che mostra un esempio di come analizzare il nome utente che sta effettuando l'accesso (che viene passato allo script come argomento $ 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