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>
This commit is contained in:
239
mkdocs-smarteye/docs/deploiement/clonage.md
Normal file
239
mkdocs-smarteye/docs/deploiement/clonage.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# Clonage des cartes SD (au bureau)
|
||||
|
||||
<div style="background: linear-gradient(135deg, #00695c 0%, #004d40 100%); color: white; padding: 24px; border-radius: 12px; margin-bottom: 24px;">
|
||||
<h2 style="margin:0; color: white;">Operations internes — production en serie</h2>
|
||||
<p style="margin: 8px 0 0 0; opacity: 0.9;">Cloner, flasher, verifier et reparer les cartes SD avant expedition. Tout en ligne de commande depuis un Mac.</p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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 :
|
||||
|
||||
```bash
|
||||
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#`) :
|
||||
|
||||
```bash
|
||||
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)
|
||||
|
||||
```bash
|
||||
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. **Analyse** → **Quick Search**
|
||||
5. testdisk retrouve les partitions (FAT32 + Linux)
|
||||
6. **Entree** pour continuer → **Write** → **Y**
|
||||
|
||||
!!! 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)
|
||||
|
||||
```bash
|
||||
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 **`w`** → **Y**
|
||||
|
||||
Si gdisk refuse avec "Secondary partition table overlaps the last partition by N blocks" :
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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](installation-client.md)
|
||||
Reference in New Issue
Block a user