Se connecter en SSH à la Time Capsule
Depuis le Mac, la connexion SSH classique peut échouer, car la Time Capsule utilise de vieilles normes SSH.
Avec un macOS récent, vous pouvez obtenir une erreur indiquant qu'aucun algorithme compatible n'est disponible. C'est normal : le serveur SSH de la Time Capsule est vieux, et OpenSSH désactive progressivement les algorithmes historiques.
Dans mon cas, la connexion fonctionnait avec :
ssh -oHostKeyAlgorithms=+ssh-rsa [email protected]
Remplacez évidemment l'adresse IP par celle de votre Time Capsule.
L'option -oHostKeyAlgorithms=+ssh-rsa dit simplement à SSH : "pour cette connexion, accepte aussi l'ancien type de clé ssh-rsa".
Ce n'est pas quelque chose à faire sur un serveur exposé sur Internet, mais pour une Time Capsule sur votre réseau local, dont le firmware ne sera plus mis à jour, c'est le genre de compromis qui permet d'avancer.
Si ça bloque encore, vous pouvez essayer :
ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa [email protected]
Le mot de passe demandé est celui de la Time Capsule.
Quelques commandes Linux a adapter
Une fois connecté en SSH, j'ai perdu beaucoup de temps en pensant que les commandes UNIX/Linux habituelles fonctionneraient. Aujourd'hui, c'était littéralement du bricolage.
Sur ma Time Capsule, grep n'existe pas. Certaines commandes pratiques comme which peuvent également manquer ou ne pas se comporter comme prévu.
Donc si vous avez envie de faire :
dmesg | grep dk0
ça peut tout simplement ne pas fonctionner.
À la place, lancez la commande complète :
/sbin/dmesg
Puis utilisez la recherche du Terminal, avec ⌘F, pour chercher wd0, dk0, hfs, etc.
C'est moins élégant, mais ça marche. Et dans ce genre de bricolage, "ça marche" est déjà une très bonne nouvelle.

Une fois ouverte, la Time Capsule nous laisse facilement remplacer son disque dur
Vérifier que le disque est détecté
La première commande utile est celle-ci :
/usr/bin/acp -A MaSt
Elle permet de demander à la Time Capsule ce qu'elle voit côté stockage.
Au départ, j'obtenais quelque chose comme :
[
{
deviceName="wd0"
smartStatus="verified"
partitions=[]
builtin=true
}
]
C'est à la fois frustrant et rassurant.
Frustrant, parce que la Time Capsule ne voit aucun volume utilisable. Rassurant, parce que le disque physique est bien détecté, et que son statut SMART est correct.
Le problème n'est donc pas le branchement SATA. Le problème est le partitionnement.
Comprendre les noms : wd0, dk0, rdk0
C'est important de comprendre ce qu'on manipule, sinon les commandes ressemblent vite à de la magie noire.
wd0 est le disque physique SATA ;
dk0 est la partition HFS créée à partir de la table GPT ;
rdk0 est la version "raw" de cette partition, utilisée pour le formatage.
On crée donc la table de partition sur wd0, puis on formate le volume sur /dev/rdk0.
Vérifier l'état de la table GPT
Avant de recréer quoi que ce soit, j'ai vérifié l'état du disque :
/sbin/gpt show wd0
Dans mon cas, le disque contenait encore une ancienne table GPT Linux. La Time Capsule voyait donc un disque, mais pas une structure qu'elle pouvait utiliser comme disque interne HFS.
Supprimer l'ancienne table GPT
J'ai commencé par supprimer l'ancienne table GPT :
/sbin/gpt destroy wd0
Attention : sur cette version du firmware, l'option -f n'était pas disponible. Si vous trouvez ailleurs une commande du type /sbin/gpt destroy -f wd0elle peut échouer.
Dans mon cas, il fallait utiliser simplement : /sbin/gpt destroy wd0
Si la commande refuse de détruire la table existante, il reste une solution plus brutale : effacer le début du disque.
/bin/dd if=/dev/zero of=/dev/rwd0c bs=512 count=4096
/sbin/reboot
Cette commande écrase le début du disque. Elle est destructive. Ne la lancez que si vous êtes certain que wd0 est bien le disque que vous voulez effacer.
Créer une nouvelle table GPT
Une fois l'ancienne structure supprimée, on recrée une table GPT propre :
/sbin/gpt create wd0
Jusque-là, rien d'incroyable.
La partie subtile arrive juste après.
Créer une partition HFS correctement alignée
La commande évidente serait :
/sbin/gpt add -t hfs wd0
Sauf que chez moi, ça a créé une partition qui commençait au secteur 34, sans que je ne comprenne vraiment pourquoi.
newfs_hfs refusait ensuite de formater le volume, car la partition n'était pas alignée correctement.
Il faut donc forcer le début de la partition au secteur 2048. C'est un alignement classique à 1 Mio.
On pourrait alors faire :
/sbin/gpt add -b 2048 -t hfs wd0
Sauf que, deuxième déconvenue, gpt choisissait automatiquement une taille qui n'était pas un multiple de 8 secteurs. Résultat : "partition size not a multiple of 4K". Pourquoi ? Parce que la Time Capsule travaille avec des secteurs de 512 octets, et que 8 secteurs de 512 octets font 4096 octets.
Il fallait donc deux choses :
- commencer au secteur 2048 ;
- choisir une taille multiple de 8 secteurs.
Dans mon cas, le disque affichait :
512 bytes/sect x 23437770752 sectors
La taille automatiquement choisie finissait par 671, ce qui ne tombe pas juste.
J'ai donc utilisé une taille arrondie à l'inférieur au multiple de 8 :
/sbin/gpt add -b 2048 -s 23437768664 -t hfs wd0
La valeur 23437768664 correspond à mon Seagate IronWolf Pro de 12 To. Ne copiez pas cette valeur si vous utilisez un autre disque.
La logique est la suivante :
- repérez le nombre total de secteurs dans
/sbin/dmesg ;
- retirez le début de partition : 2048 secteurs ;
- gardez une petite marge pour la fin de GPT ;
- arrondissez la taille obtenue au multiple de 8 inférieur.
Dans mon cas :
23437770752 secteurs au total
- 2048 secteurs de départ
- 33 secteurs réservés en fin de disque
= 23437768671
23437768671 arrondi au multiple de 8 inférieur
= 23437768664
D'où la commande finale :
/sbin/gpt add -b 2048 -s 23437768664 -t hfs wd0
Après cette commande, gpt peut afficher un message vous proposant d'utiliser dkctl.
Problème : sur ma Time Capsule, dkctl n'existait pas.
Merci Apple. Très pratique. Vraiment.
Redémarrer pour créer dk0
Comme dkctl n'était pas disponible, impossible de créer le périphérique dk0 à chaud.
La solution a été simple : redémarrer.
/sbin/reboot
Après reconnexion en SSH, j'ai lancé :
/sbin/dmesg
Et j'ai cherché dk0 dans le retour.
La bonne ligne était :
dk0: 23437768664 blocks at 2048, type: hfs
Cette ligne est importante : elle confirme que le noyau a bien créé le périphérique dk0 avec la bonne taille et le bon point de départ.
À partir de là, on peut formater.
On crée maintenant le système de fichiers HFS+ journalisé :
/sbin/newfs_hfs -J -v Data /dev/rdk0
Le -J active le journal.
Le -v Data donne le nom Data au volume. Vous pouvez choisir un autre nom, mais j'ai préféré rester simple.
Chez moi, la commande a retourné :
Initialized /dev/rdk0 as a 11176 GB HFS Plus volume with a 524288k journal
C'est bon signe.
Le disque de 12 To apparaît comme un volume de 11176 GB. Ce n'est pas une erreur : entre les unités, le formatage, les réserves et la manière dont le firmware affiche les tailles, il ne faut pas s'attendre à voir “12 To” écrit partout.
Pourquoi je redémarre encore une fois
À ce stade, j'ai tenté de monter le volume à la main :
mkdir -p /Volumes/dk0
/sbin/mount_hfs /dev/dk0 /Volumes/dk0
Le montage fonctionnait.
Mais lorsque je relançais :
/usr/bin/acp -A MaSt
la Time Capsule continuait d'afficher :
partitions=[]
Autrement dit : le système savait monter le disque, mais le firmware Apple ne l'avait pas encore intégré comme volume interne utilisable.
J'ai tenté de relancer diskd à la main. Ça n'a rien changé.
La solution a été, encore une fois, de redémarrer :
/sbin/reboot
Après ce redémarrage, la Time Capsule a monté le volume automatiquement.
Vérifier que la Time Capsule reconnaît enfin le disque
Après le dernier redémarrage, reconnectez-vous en SSH puis lancez :
/usr/bin/acp -A MaSt
Cette fois, j'obtenais bien :
partitions=
[
{
format="hfs"
deviceName="dk0"
name="Data"
users=1
}
]
Et le volume était bien monté :
ls /Volumes
mount
Avec :
/dev/dk0 on /Volumes/dk0 type hfs
Là, c'est gagné.
La Time Capsule ne voit plus seulement un disque physique. Elle voit un disque interne HFS utilisable.
Pourquoi TimeCapsuleSMB bloquait
TimeCapsuleSMB ne cherche pas juste un disque branché. Il cherche un volume HFS exploitable par la Time Capsule.
Au départ, la commande /usr/bin/acp -A MaSt retournait :
partitions=[]
Pour TimeCapsuleSMB, ça veut dire : "je n'ai aucun disque HFS utilisable".
D'où l'erreur :
No deployable HFS disk
Une fois la partition HFS créée, le volume HFS+ formaté, et le firmware Apple relancé proprement, MaSt retourne enfin :
format="hfs"
deviceName="dk0"
name="Data"
À partir de là, TimeCapsuleSMB peut s'installer normalement.
Les commandes complètes utilisées dans mon cas
Si vous avez exactement le même contexte que moi - disque interne en wd0, Seagate IronWolf Pro 12 To, partition finale en dk0 - les commandes utiles sont donc :
/usr/bin/acp -A MaSt
/sbin/gpt show wd0
/sbin/gpt destroy wd0
/sbin/gpt create wd0
/sbin/gpt add -b 2048 -s 23437768664 -t hfs wd0
/sbin/reboot
Après reconnexion :
/sbin/dmesg
/sbin/newfs_hfs -J -v Data /dev/rdk0
/sbin/reboot
Après le dernier redémarrage :
/usr/bin/acp -A MaSt
ls /Volumes
mount
Ne copiez pas aveuglément la valeur 23437768664. Elle correspond à mon disque. Si votre capacité est différente, vous devez recalculer la taille de partition.
Les erreurs qui m'ont fait perdre du temps
La première erreur a été de laisser gpt créer la partition automatiquement. Il a commencé au secteur 34, ce qui n'était pas utilisable pour le formatage HFS+ dans cette configuration.
La deuxième erreur a été de corriger le début de partition avec -b 2048, mais sans fixer la taille. Résultat : la partition commençait au bon endroit, mais sa taille n'était pas multiple de 4K.
La troisième erreur a été de croire que le montage manuel suffisait. Le volume pouvait être monté avec mount_hfs, mais MaSt continuait de retourner partitions=[] jusqu'au redémarrage.
La quatrième erreur a été de raisonner comme sur un Linux moderne. Ici, pas de grep, pas de dkctl, pas de confort. Vous lisez les retours complets, vous utilisez les chemins absolus, et vous avancez calmement.
Conclusion
Au final, le problème n'était pas de remplacer le disque. Le problème était de reconstruire exactement ce que le firmware Apple attend :
- une table GPT propre ;
- une partition HFS alignée au secteur
2048 ;
- une taille de partition multiple de
8 secteurs ;
- un volume HFS+ journalisé ;
- un redémarrage pour que la Time Capsule recrée
dk0 ;
- un second redémarrage pour que
MaSt reconnaisse enfin le volume.
Une fois cette étape passée, TimeCapsuleSMB peut faire son travail, et la Time Capsule peut continuer à servir de stockage réseau avec un protocole SMB moderne.
Ce n'est clairement pas plug and play. Mais si vous avez une Time Capsule qui dort dans un placard, un disque compatible, et un peu de patience, ça permet de prolonger la vie d'un matériel encore très pratique.