fix(smart v0.1.15): contrôleur NVMe + règle udev disk group

Cause racine : smartctl -a -j /dev/nvme0n1 (namespace) retourne exit 4
et omet smart_status car les commandes admin échouent via le namespace.
Solution : utiliser /dev/nvme0 (contrôleur) accessible grâce à la règle
udev SUBSYSTEM==nvme GROUP=disk.

- smart.rs : scan /sys/class/nvme/ pour les contrôleurs (nvme0, nvme1)
  au lieu de /sys/block/ pour les namespaces (nvme0n1)
- deploy/99-nanometrics-smart.rules : udev rule KERNEL==nvme* GROUP=disk
- deploy/install.sh : déploie la règle udev + udevadm trigger

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gilles Soulier
2026-05-23 13:39:13 +02:00
parent ee5e8710a3
commit a9506a5505
5 changed files with 39 additions and 20 deletions
+4
View File
@@ -0,0 +1,4 @@
# Nanometrics: accès groupe disk aux contrôleurs NVMe pour SMART
# Sans cette règle, /dev/nvme0 est crw------- root root (root only),
# ce qui empêche smartctl d'exécuter les commandes admin et omet smart_status du JSON.
KERNEL=="nvme[0-9]*", SUBSYSTEM=="nvme", GROUP="disk", MODE="0660"
+11
View File
@@ -45,6 +45,17 @@ else
fi
echo ""
# ── 2. Règle udev NVMe (accès SMART pour le groupe disk) ──────────────────────
UDEV_RULE="/etc/udev/rules.d/99-nanometrics-smart.rules"
cat > "$UDEV_RULE" << 'UDEVRULE'
# Nanometrics: accès groupe disk aux contrôleurs NVMe pour SMART
KERNEL=="nvme[0-9]*", SUBSYSTEM=="nvme", GROUP="disk", MODE="0660"
UDEVRULE
udevadm control --reload-rules
udevadm trigger --subsystem-match=nvme 2>/dev/null || true
ok "Règle udev NVMe installée ($UDEV_RULE)"
echo ""
# ── 3. Détection de l'architecture ────────────────────────────────────────────
ARCH="$(uname -m)"
case "$ARCH" in