Files
Lucas/mkdocs-smarteye/docs/deploiement/clonage.md
Debian 24dbc7cd6a Initial commit — Serveur Lucas SmartEye
API réception alertes chute (SmartEye/YOLO), analyse IA (Gemini 2.5 Flash),
gestion alertes avec escalade (watchdog), notifications Firebase,
dashboard web, documentation MkDocs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 21:26:06 +01:00

6.5 KiB

Clonage des cartes SD (au bureau)

Operations internes — production en serie

Cloner, flasher, verifier et reparer les cartes SD avant expedition. Tout en ligne de commande depuis un Mac.


Image de reference

Fichier Taille Statut
smarteye-dev-backup.img ~54 Go Fonctionnelle — validee le 22/02/2026

Localisation Mac : /Users/rachid/jetson_backup/smarteye-dev-backup.img

!!! warning "Sauvegarde obligatoire" Cette image doit exister en au moins 2 exemplaires :

- Sur le Mac (disque local ou externe)
- Sur le serveur OVH : `scp smarteye-dev-backup.img debian@lucas.unigest.fr:/home/debian/backups/`

1 — Flasher une carte SD (production)

C'est l'operation principale. Pour chaque nouveau client, on flashe une carte SD neuve depuis l'image de reference.

Materiel

  • Carte SD neuve SanDisk Extreme Pro 64 Go minimum
  • Lecteur de carte SD (integre ou USB)

Procedure

# Identifier la carte SD
diskutil list
# Reperer la carte par sa taille et ses partitions
# Le lecteur integre du Mac peut apparaitre comme "internal, physical", c'est normal

# Demonter sans ejecter
diskutil unmountDisk /dev/diskN

# Flasher (remplacer N par le bon numero)
sudo dd if=/Users/rachid/jetson_backup/smarteye-dev-backup.img of=/dev/rdiskN bs=4m status=progress

# Ejecter proprement
diskutil eject /dev/diskN

!!! danger "Verifier le numero de disque" Toujours verifier deux fois le /dev/diskN avant de lancer dd. Se tromper de disque = ecraser le disque du Mac.

Le r devant diskN (→ rdiskN) utilise le mode raw, 5x plus rapide.

Duree : ~20-25 min pour 54 Go a ~39 MB/s.

Verification rapide

Apres le flash, avant d'ejecter :

diskutil list /dev/diskN

Resultat attendu : une GUID_partition_scheme avec ~14 partitions Linux + 1 partition EFI. C'est la structure standard du Jetson Nano.

Production en serie

Pour flasher plusieurs cartes a la suite :

  1. Flasher la carte → ejecter
  2. Etiqueter la carte (numero de serie / nom client)
  3. Inserer la carte dans un Jetson
  4. Inserer la carte suivante dans le lecteur → recommencer

La box part chez le client carte SD deja inseree, prete a brancher.


2 — Creer une nouvelle image de reference (backup)

Quand SmartEye evolue (nouvelle version YOLO, corrections, etc.), il faut creer une nouvelle image de reference depuis le Jetson de dev.

Procedure

Eteindre le Jetson proprement, retirer la carte SD, l'inserer dans le lecteur du Mac.

# Identifier la carte SD
diskutil list

# Demonter
diskutil unmountDisk /dev/diskN

# Cloner bit-a-bit
sudo dd if=/dev/rdiskN of=/Users/rachid/jetson_backup/smarteye-dev-backup.img bs=4m status=progress

# Ejecter
diskutil eject /dev/diskN

Duree : ~20-25 min pour une carte 64 Go.

Nommage et archivage

smarteye-dev-backup-2026-02-22.img   ← actuelle (validee)
smarteye-dev-backup-2026-03-XX.img   ← future

Conserver les anciennes images. Copier sur OVH :

scp smarteye-dev-backup.img debian@lucas.unigest.fr:/home/debian/backups/

3 — Verifier une image (sans carte SD)

Pour inspecter une image .img sans la flasher :

hdiutil attach -nomount -readonly /Users/rachid/jetson_backup/smarteye-dev-backup.img

Resultat attendu :

/dev/disk6          GUID_partition_scheme
/dev/disk6s1        EFI
/dev/disk6s2 - s15  Linux Filesystem (multiple)

Detacher apres verification :

hdiutil detach /dev/disk6

4 — Reparer une image corrompue

Si une carte SD ne boot plus (erreur mmcblk0p1 not found sur le Jetson), la table de partitions est corrompue. Les donnees sont generalement encore intactes.

Diagnostic sur le Jetson

Si le Jetson tombe dans un shell d'urgence (bash-5.1#) :

ls /dev/mmcblk0*
  • mmcblk0 present mais pas mmcblk0p1 → table de partitions corrompue → reparable
  • mmcblk0 absent → probleme hardware (carte morte ou mauvais contact)

Etape 1 : testdisk (retrouver les partitions)

brew install testdisk
testdisk /Users/rachid/jetson_backup/smarteye-dev-backup.img
  1. Create → nouveau log
  2. Selectionner l'image → Proceed
  3. Type de table → Intel
  4. AnalyseQuick Search
  5. testdisk retrouve les partitions (FAT32 + Linux)
  6. Entree pour continuer → WriteY

!!! warning "testdisk ne suffit pas" testdisk ecrit une table MBR. Le Jetson Nano utilise une table GPT avec ~14 partitions. Il faut enchainer avec gdisk.

Etape 2 : gdisk (restaurer la GPT)

brew install gptfdisk
gdisk /Users/rachid/jetson_backup/smarteye-dev-backup.img

gdisk detecte le conflit :

Found valid MBR and corrupt GPT. Which do you want to use?
 1 - MBR
 2 - GPT
 3 - Create blank GPT
  1. Taper 2 (GPT — le header principal est souvent intact)
  2. Taper x (menu expert)
  3. Taper e (relocate backup structures to end of disk)
  4. Taper m (retour menu principal)
  5. Taper wY

Si gdisk refuse avec "Secondary partition table overlaps the last partition by N blocks" :

# Dans un AUTRE terminal, agrandir l'image
dd if=/dev/zero bs=512 count=200 >> /Users/rachid/jetson_backup/smarteye-dev-backup.img

Puis quitter gdisk (q) et le relancer (il doit recharger la nouvelle taille). Recommencer : 2 → x → e → m → w → Y.

Verification finale

hdiutil attach -nomount -readonly /Users/rachid/jetson_backup/smarteye-dev-backup.img

GUID_partition_scheme avec ~14 partitions = image reparee. Flasher sur une carte SD et tester le boot.


Fiabilite en production

!!! danger "Cartes SD : prototypage seulement" Les cartes SD ont une duree de vie limitee en ecriture. Docker + YOLO = beaucoup d'ecritures. Pour une production a plusieurs centaines de clients :

- **SSD SATA via USB 3.0** pour le systeme (fiabilite industrielle)
- **Carte SD uniquement pour le boot initial** (lecture seule)
- **Backup automatique** des configs vers le serveur OVH

| Composant | Cout unitaire |
|-----------|:------------:|
| SD 32 Go (boot) | ~10 EUR |
| SSD 120 Go SATA | ~15 EUR |
| Adaptateur USB 3.0 → SATA | ~8 EUR |
| **Total par box** | **~33 EUR** |

Etape suivante

Installation chez le client