20 Jul 2022, 00:00

Gestion des onduleurs sous Linux : NUT

Ressources en vrac

Doc debian-fr.xyz
Doc officielle Debian
Doc ArchLinux
Doc Ubuntu, un peu vieille
https://ignace72.eu/utiliser-un-onduleur-eaton-sur-gnu-linux.html

Présentation

NUT (Network UPS Tools) est un ensemble de logiciels qui servent à surveiller les onduleurs et réagir à leur état. Il y’a :

  • le démon nut-driver (commande upsdrvctl) qui communique avec l’onduleur
  • le démon nut-server (commande upsd) qui permet de répondre à des requêtes (locales ou réseau)

Ces 2 démons doivent être lancés sur le poste qui communique en USB avec l’onduleur.

  • le logiciel upsc qui va interroger les démons upsd (en local ou sur d’autres postes)
  • le démon upsmon qui permet d’interroger différents démons upsd et lancer des alertes

Dépôt git du projet

Dans l’exemple ici, il y’a un seul pc qui contrôlera NUT et qui sera relié à l’onduleur ; on ignore donc toutes les configurations réseau.
L’onduleur utilisé est un Eaton Ellipse ECO 800.

Install de NUT et vérification du branchement de l’onduleur

apt install nut
sous Debian.
C’est un paquet virtuel qui dépend de nut-client et nut-server.
nut-client contient entre autres les exécutables upsc, upscmd, upsmon.
nut-server contient entre autre upsd, upsdrvctl.

Brancher l’onduleur via USB.
lsusb donne :
Bus 006 Device 005: ID 0463:ffff MGE UPS Systems UPS

On peut vérifier que le fichier appartient bien au groupe nut (adapter les chiffres au résultat ci-dessus) :
ls -l /dev/bus/usb/006/005

Pilote de l’onduleur

sudo nano /etc/nut/ups.conf

Chaque onduleur doit être défini sous la forme

[upsname]
       driver = <drivername>
       port = <portname>

avec éventuellement d’autres options facultatives. On peut mettre auto pour le port. Le champ desc semble être là pour mettre une description plus complète commentaire).

Pour identifier la liste des pilotes en fonction du matériel, consulter cette page.
Pour un Eaton Ellipse Eco 800, c’est usbhid-ups. Si on clique sur le nom du pilote, on accède à ses otions de configuration.

On peut aussi tester la commande nut-scanner, qui renvoie un bloc de configuration auto-detecté (+ d’infos avec sudo).

Cela me donne le bloc suivant à ajouter à la fin du fichier :

[eaton800]
    driver = usbhid-ups
    port = auto
    desc = "Eaton Ellipse ECO 800"

Lancement

On peut vérifier en lançant manuellement :
sudo upsdrvctl start eaton800

Le processus sera visible via
ps aux | grep usbhid

On peut lancer le service
sudo service nut-driver start
mais visiblement, si le service nut-server n’est pas en route, il quitte au bout de quelques secondes.

Configuration du démon upsd

Celui-ci sert à mettre les informations de l’onduleur à disposition de clients.

Lancement manuel

À fin de compréhension et de debug. On peut lancer upsd manuellement avec le chemin
/usr/lib/nut/upsd
La commande upsd intégrée dans le path (/usr/sbin/) est un script qui va lancer la commande ci-dessus uniquement si la configuration du fichier upsd.conf autorise le lancement.

Si on a l’erreur Can't connect to UPS [...] au lancement, c’est probablement que le processus driver (upsdrvctl) n’est pas lancé.
Sinon on doit avoir Connected to UPS [...]

On peut vérifier le bon lancement du processus via
ps aux | grep upsd | grep nut

Lancement via service

Cette méthode permettra le démarrage automatique de l’ensemble des services nut.
sudo nano /etc/nut/nut.conf
mettre MODE=standalone

On démarre le service :
sudo service nut-server start

Utilisateur

Il faut définir (au moins) un utilisateur dans upsd car une authentification sera nécessaire pour effectuer certaines commandes, notamment celles d’upscmd qui permettent de contrôler l’onduleur (bip, extinction etc).

Pour ceci,
sudo nano /etc/nut/upsd.users et ajouter à la fin un bloc par utilisateur, de type :

[myadmin]
        password = mypass
        #allowfrom = localhost
        actions = SET
        actions = FSD
        instcmds = all
        upsmon master

Détail des options : man upsd.users
(ou https://linux.die.net/man/5/upsd.users )
Actuellement (2022), fsd (forced shutdown) et set (définir des variables sur l’onduleur) sont les 2 seules actions.
instcmds sont les options disponibles dans upscmd -l.

Logiciels clients

upsrw ??

upscmd

upscmd permet de s’adresser directement à l’onduleur.

upscmd -l eaton800
pour voir les commandes supportées par l’onduleur (par exemple contrôler le bip, forcer l’extinction etc)

upscmd eaton800 command:enable
pour lancer la commande en question sur l’onduleur

Sur mon Ellipse ECO 800, il semlble que beeper.disable n’ait pas d’effet, et que load.off et shutdown aient le même effet : couper les prises de courant de l’onduleur ET éteindre l’onduleur, le rendant injoignable sans rallumage manuel de l’onduleur.

upsc

upsc permet de s’adresser à un démon upsd.

upsc -L [host]
pour lister tous les onduleurs détectés sur host ; si l’host n’est pas spécifié, c’est localhost.

Si on a le message d’erreur Error: Connection failure: Cannot assign requested address, c’est que upsc n’arrive pas à communiquer avec upsd ; soit que ce dernier n’est pas lancé, soit qu’il n’accepte pas la requête (voir dans ce cas la directive LISTEN du fichier upsd.conf, même s’il me semble qu’il n’est pas nécessaire de la configurer si tout se fait en local sur 1 seul poste).

upsc eaton800[@host]
pour voir les données actuelles de l’onduleur ; on peut quérir un seul attribut en le mentionnant ; par exemple
upsc eaton800 ups.status
qui peut être OL (OnLine, sur secteur), OB (OnBattery)
ou encore upsc eaton800 battery.charge

Si non a l’erreur Error: Driver not connected, c’est que upsc arrive à communiquer avec upsd, mais que upsd n’arrive pas à communiquer avec le pilote (par exemple processus pilote qui a été tué).

Si prise USB débranchée -> “Error: Data stale”

Monitoring automatique - upsmon

upsmon est le composant qui va surveiller l’état de l’onduleur, et lancer des actions selon l’état (surt batterie, batterie critique etc).
On définit au moins 1 onduleur à surveiller :

sudo nano /etc/nut/upsmon.conf

Le fichier documente chaque section.
Il faut une ligne MONITOR par onduleur ; par exemple
MONITOR eaton800@localhost 1 myadmin mypass master

Le “1” correspond au nombre d’alims qui sont alimentés par l’onduleur en question ; pour la plupart des pcs standard, qui n’ont qu’une seule alim, ce sera 1.

On peut toutefois entrer “0” si le pc surveille l’onduleur mais n’est pas branché dessus ; il effectuera les actions d’alerte (mail etc.) mais ne s’éteindra pas en cas de batterie critique. En ca cas, il faut aussi définir la variable MINSUPPLIES à 0 (pour déclarer que le poste peut fonctionner sans aucun onduleur).

master & slave

En général, un poste branché sur l’onduleur ET capable de communiquer avec lui sera considéré comme master ;
Un poste branché sur l’onduleur mais sans communication de données sera considéré comme slave.

En action automatique, un poste master ne s’éteindra que lorsque tous les slaves seront éteints.

NOTIFYCMD

https://networkupstools.org/docs/user-manual.chunked/ar01s07.html

Toujours dans upsmon.conf, on peut définir la commande appelée pour informer l’admin lorsqu’un événement se produit (coupure courant, batterie faible etc). C’est le paramètre NOTIFYCMD.

Cette commande ne sera exécutée que pour les alertes possédant le flag EXEC !! (voir plus bas)

Ce peut être un script custom, ou bien le planificateur intégré à NUT (upssched). Le message de l’événement sera envoyé à cet exécutable en tant que 1er et seul argument.

Penser aux droits d’accès ! La commande sera exécutée par l’utilisateur nut (sur Debian), il doit pouvoir y accéder en exécution.

NOTIFYMSG

Permet de personnaliser le message associé à chaque alerte.

NOTIFYFLAGS

Définit le type d’actions à effectuer pour chaque type d’alerte. Il y’a :

  • WALL : prévient chaque utilisateur sur le système
  • SYSLOG : inscrit dans le syslog
  • EXEC : lance la commande définie à NOTIFYCMD
  • IGNORE : ne rien faire

Il faut noter FLAG+FLAG+FLAG, par exemple
EXEC+SYSLOG+WALL

Lancement via service

sudo service nut-client start

upssched

upssched est un script qui permet de gérer la planification des alertes plus finement. Par exemple de définir un délai avant de déclencher l’alerte, pour ne pas êztre prévenu en cas de micro-coupure de courant.
On le configure via le fichier /etc/nut/upssched.conf.

Je n’aborde pas son usage ici.

GUI

nut-monitor
nut-cgi (interface web)

Journaux et contrôle des services

Voir les journaux de nut-driver (upsdrvctl) :

sudo journalctl -u nut-driver
sudo service nut-driver status

Voir les journaux de nut-server (upsd) :

sudo journalctl -u nut-server
sudo service nut-server status

Voir les journaux de nut-client (nut-monitor, upsmon) :

sudo journalctl -u nut-monitor
sudo service nut-monitor status
sudo service nut-client status

sudo service ups-monitor ??

31 May 2021, 00:00

Gestion des disques OPAL 2.0

(OPAL 1 est un peu différent et n’est pas analysé ici)

Généralités

La norme OPAL 2.0 est une norme qui définit notamment un standard pour qu’un péripĥérique de stockage (disque dur, ssd etc) auto-protège ses données par du chiffrement. C’est un SED, un Self-Encrypting Disk.
C’est donc une puce dans le disque lui-même qui s’occupe de chiffrer et déchiffrer les données (libérant ainsi le CPU de ces tâches, et réduisant la surface d’attaque concernant les failles CPU/RAM ; d’autres attaques concernant ce type de chiffrement sont toutefois existantes).

Le chiffrement du disque se fait un peu à la manière de LUKS : la clé qui va réellement chiffrer les données (Data Encryption Key, DEK) est elle-même chiffrée par le mot de passe utilisateur (Authentication Key, AK).
Ainsi, il est facile de changer le mot de passe du disque sans tout rechiffrer (la DEK ne change pas, mais est rechiffrée avec la nouvelle AK).
Il est également instantané et simple d’effacer de manière sécurisée et intégralement un disque, simplement en regénérant une nouvelle DEK. Ainsi, le reste du contenu n’a pas besoin d’être effacé, puisqu’il est indéchiffrable, la clé ayant été supprimée. C’est le Secure Disk Erasure.

Sur un disque OPAL, les données sont TOUJOURS chiffrées par une DEK, mais en l’absence de AK, la DEK est lisible en clair et donc utilisée de manière transparente (voir MSID).

Spécifications d’OPAL sur le site du TCG : https://www.trustedcomputinggroup.org/wp-content/uploads/TCGandNVMe_Joint_White_Paper-TCG_Storage_Opal_and_NVMe_FINAL.pdf

Un diaporama qui schématise bien OPAL et différentes attaques

USB

La disponibilité de l’interface OPAL via un adaptateur USB va dépendre de l’adaptateur en question. Ce fil mentionne un adaptateur qui semble fonctionner avec les disques M.2 SATA et NVMe.

Doc chez ArchLinux

Terminologie

  • SD : Storage Device : le support de stockage (disque, SSD, clé USB etc)
  • MEK (ou DEK) : Media (ou Data) Encryption key : la clé qui chiffre les données sur le disque ; chiffrée par la KEK
  • AC : Authentication Credentials : le mot de passe utilisateur (“password”)
  • AK : Authentication Key (ou PIN) : dérivée de l’AC
  • KEK : Key-Encryption-Key : dérivée de l’AK, chiffre la DEK
  • TPer : Trusted Peripheral
  • MSID : Manufacturer Secure ID : une clé fixe, lisible par tout le monde directement sur le disque, qui fait office de AK par défaut.
  • PSID : Physical Security ID : présent physiquement sur le disque (ou la boîte), permet de réinitiliser le disque (avec PERTE de données). Il est optionnel pour OPAL v2.00, et obligatoire pour OPAL v2.01
  • Verrouillage (Locking) : Création/suppression de la MEK (déchiffrée) dans la RAM du disque. Lorsqu’elle est absente, le disque est verrouillé. Une fois la MEK accessible grâce au password, elle est stockée dans la RAM du disque jusqu’à la prochaine coupure d’alimentation (ou verrouillage manuel ?). Le disque est alors déverrouillé.

Locking Range

Les intervalles de verrouillage sont des sections continues sur le disque, exprimées en LBA, qui peuvent être verrouillées de manière indépendantes les unes des autres. Chaque intervalle a sa propre MEK.
Ceci permet, il me semble, de partager un disque entre plusieurs utilisateurs, en ne laissant chacun accéder qu’aux données qui lui sont autorisées.
Ceci permet également d’avoir certains intervalles qui ne sont PAS chiffrés.

Le Global Range représente l’ensemble des intervales qui ne sont pas définis explicitement (les Local Ranges). C’est le range 0.

Lorsqu’on définit un nouvel intervalle, les données déjà présentes dessus sont détruites.

On peut lister les LockingRange ainsi :
sudo ./sedutil-cli --listLockingRanges mYpAsSwOrD /dev/sdX

Authentification pré-boot

La Preboot-Authentication (PBA) est un MBR particulier (shadow MBR) qui contient une instance de sedutil permettant de déverrouiller le disque, pour ensuite pouvoir le démarrer.
Selon cette discussion, MBREnable = Y dit au disque de présenter ce shadow MBR lors du boot, alors que MBRDone = Y dit au disque de ne PLUS présenter ce shadow MBR.

Sous Debian

La gestion d’un disque OPAL sous Linux se fait avec l’utilitaire sedutil. C’est un utilitaire open-source, développée par la Drive Trust Alliance.
Il n’est, en 2021, pas disponible dans les dépôts Debian, et doit donc être téléchargé ou compilé depuis le lien ci-dessus.

Pour pouvoir gérer les disques SATA, il faut activer le paramètre allow_tpm du module libata. Pour le faire de manière permanente, il faut ajouter libata.allow_tpm=1 à /etc/default/grub (ligne GRUB_CMDLINE_LINUX_DEFAULT=), mettre à jour la config de GRUB et redémarrer.
Pour le faire de manière temporaire sans redémarrage du système, il semble qu’il faille écrire 1 dans le fichier /sys/module/libata/parameters/allow_tpm, mais je n’arrive pas à obtenir l’accès en écriture sur mon système.

Ceci ne semble pas nécessaire pour les disques NVMe. Par contre, il semble qu’il faille être root.

Utilisation de sedutil

Cet utilitaire nécessite souvent les droits root pour agir directement sur le périphérique.

Syntaxe

Codes d’erreur :

  • NOT_AUTHORIZED : mauvais mot de passe
  • AUTHORITY_LOCKED_OUT : trop d’essais infructueux, il faut éteindre/rallumer le disque

Lister les disques et leur support d’OPAL :

sudo sedutil-cli --scan
/dev/sda No -> Pas de support d’OPAL
/dev/sda 12 -> Support d’OPAL (“12” pour support de OPAL 1 et 2, “2” pour support d’OPAL 2 uniquement, il me semble)

Lister les détails d’un périphérique :

sudo ./sedutil-cli --query /dev/nvme0
On y voit notamment le statut de verrouillage (LockingEnabled) et de shadowing du MBR (MBREnabled) :

Locking function (0x0002)
    Locked = N, LockingEnabled = Y, LockingSupported = Y, MBRDone = N, MBREnabled = Y, MediaEncrypt = Y

PSID revert - DÉTRUIT TOUTES LES DONNÉES SI VERROUILLAGE ACTIVÉ

Ceci va réinitialiser https://www.reddit.com/r/sysadmin/comments/9ogdnk/psid_revert_of_encrypted_ssd_not_possible/
sudo ./sedutil-cli --yesIreallywanttoERASEALLmydatausingthePSID PSIDPASSWORD /dev/sdX
sudo ./sedutil-cli --PSIDrevert PSIDPASSWORD /dev/sdX
Si le constructeur a mis des tirets dans le PSID, il faut les enlever (sinon on aura l’erreur “One or more header fields have 0 length”). Il doit faire 32 caractères de long.

Initialisation du chiffrement

sudo sedutil-cli --initialSetup mYpAsSwOrD /dev/sdX
Définit les mot de passe SID et Admin1 (avec le password fourni) (c’est le takeownership).
Active le shadowing de MBR.

Ceci équivaut aux suites de commandes (à vérifier) :

sudo ./sedutil-cli --takeOwnership mYpAsSwOrD /dev/sdX
# définit les password SID et Admin1

sudo ./sedutil-cli --activateLockingSP mYpAsSwOrD /dev/sdX
# active la possibilité de chiffrement ? (LockingEnabled)

sudo ./sedutil-cli --setMBREnable on mYpAsSwOrD /dev/sdX
#

On peut ensuite effectivement chiffrer le disque :
sudo ./sedutil-cli --enablelockingrange 0 mYpAsSwOrD /dev/sdX

Le disque devient ainsi non-lisible sans le mot de passe (y compris le MBR, il n’apparaîtra pas dans fdisk).
On voit “Locked = Y” lorsqu’on lance query

Déverrouillage d’un disque chiffré

sudo ./sedutil-cli --setlockingrange 0 rw mYpAsSwOrD /dev/sdX
Il redevient ainsi libible, y compris le MBR.
On peut également définir le volume en lecture seule :
sudo ./sedutil-cli --setlockingrange 0 ro mYpAsSwOrD /dev/sdX
ou le verrouiller :
sudo ./sedutil-cli --setlockingrange 0 lk mYpAsSwOrD /dev/sdX

Suppression du chiffrement

https://github.com/Drive-Trust-Alliance/sedutil/wiki/Remove-OPAL

On peut désactiver le chiffrement SANS suppresion des données avec :
sudo ./sedutil-cli --revertnoerase mYpAsSwOrD /dev/sdX
(il faut avoir deverrouillé le disque avant, en RX ou RO, sinon erreur FAIL)

08 Nov 2020, 00:00

Monitoring des disques sous Linux

Un peu de lecture ici.

htop

htop permet de visualiser ça

iotop

sudo apt install iotop
sudo iotop

Permet de voir, à la manière de top, l’activité I/O des disques par processus. Ne distingue toutefois pas sur quel disque l’activité se produit.

dstat

sudo apt install dstat
dstat pour avoir un aperçu général.
dstat -d -D total,sdk,md0 pour n’afficher que les infos relatives aux disques (-d), et surveiller l’ensemble des I/O dans une colonne (-D total), /dev/sdk dans un autre (-D sdk)et /dev/md0 dans une autre (-D md0).

iostat

sudo apt install sysstat
iostat pour avoir des infos générales depuis le boot.
iostat -y 1 2 pour avoir des infos uniquement dans l’intervalle temporel spécifié ; ici : 1s, analyse répétée 2 fois (1 2). Si le 2e chiffre n’est pas spécifié, l’analyse sera faite en boucle.
iostat -d pour n’inclure que l’info relative aux disques.
iostat -p sdk,md0 pour n’inclure que l’info relative à ces périphériques.
iostat -t pour inclure le timestamp

En cumulant ces options, et avec l’utilisation de watch, on tombe sur un truc comme ça :
watch -t -n 0.1 iostat -p sdk,md0 -d -t -y 1 1

nmon

sudo apt install nmon
nmon puis presser la touche d

10 Dec 2019, 00:00

Raccourcis de démarrage pour les Macs

https://support.apple.com/fr-fr/HT201255
https://support.apple.com/fr-fr/HT204904

Alt : Boot menu
⇧ : Mode sans échec
Super+S : Mode monoutilisateur (root en CLI)

Super+R : Récupération via partition de récup (OS actuel)
Alt+Super+R : Récupération via internet (OS le plus récent compatible)
⇧+Alt+Super+R : Récupération via internet (OS d’origine, ou le plus proche encore disponible sur les serveurs)

Alt+Super+P+R : reset PRAM
Alt+⇧+Ctrl : reset SMC

D : AHT
Alt+D : AHT via internet

01 Dec 2019, 00:00

Réinitialiser la prise en compte du TPM par Windows

Suite à un changement de carte-mère, et donc à un remplacement de la puce TPM dedans, il peut arriver d’avoir des messages d’erreur (notamment 0x80090016) à l’ouverture de session Windows, ou Outlook (ou autre ?).

Ceci semble lié au fait que les infos d’identification étaient chiffrées grâce à un jeu de clés situé matériellement dans la puce TPM.
Pour corriger ceci, il faut renommer le dossier

C:\users\%username%\AppData\Local\Packages\Microsoft.AAD.BrokerPlugin_cw5n1h2txyewy

en .OLD (ou le supprimer…). Puis fermer la session.

Les infos d’identification seront redemandées au prochain lancement de la session ou de l’appli (et, je suppose, chiffrées grace au nouveau jeu de clés de la nouvelle puce).

Source

Il semble que dans certains cas (visiblement en lien avec la protection par code PIN), la solution soit plutôt (ou aussi ?) de supprimer le contenu du dossier

C:\Windows\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc\

14 Oct 2019, 00:00

Prévoir la taille des données à déplacer lors d'une réduction de partition NTFS
/sbin/ntfsresize --force --no-action -s 100G /dev/sdX1 | grep -e ERROR -e relocations

--force peut ne pas être nécessaire
-s indique la nouvelle taille de partition, par défaut en octets, et peut être suivi des suffixes k,M,G,ki,Mi ou Gi

On peut aussi

23 Sep 2019, 00:00

Obtenir tous les numéros de série des disques

Avec 12 disques (a -> l)

for i in {a..l}; do echo sd$i; udevadm info --query=all --name=/dev/sd$i | grep ID_SERIAL_SHORT; done

19 Jun 2019, 00:00

Désactiver la mise en veille de la carte son sous Linux

Sous Linux, il arrive que, pour économiser de l’énergie, la carte son se mette en veille après quelques temps d’inactivité. Ceci génère chez moi des craquements assez désagréables lors de sa remise en fonctionemment, ou parfois un craquement très régulier tout le long de la veille.

Pour voir si la mise en veille est activée :

cat /sys/module/snd_hda_intel/parameters/power_save

S’il contient autre chose que 0, alors le mode powersave est activé.

Pour le désactiver, on peut ajouter le fichier /etc/modprobe.d/snd_disable_powersave.conf et entrer dedans la ligne suivante :

options snd_hda_intel power_save=0

Puis redémarrer, ou bien décharger/recharger le module.

07 Jan 2019, 00:00

Notes rapides sur récupération mdadm

Création

RAID1 :
mdadm --create /dev/mdX --level=1 --raid-devices=2 /dev/sdX /dev/sdY

Disques tous en spare

Après une panne d’éléctricité, un RAID6 de 12 disques (dégradé, avec 1 disque manquant) a refusé de se remettre en route. Après vérification (par live-cd) via un cat /proc/mdstat, les 11 disques étaient tous en spare (se manifeste par un [S] ).
Pour ce raid sont utilisées les 2e partitions de chaque disque de sda -> sdk. J’ai vérifié l’état de synchronisation de tous les volumes : sudo mdadm --examine /dev/sd[abcdefghijk]2 | grep Events

Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752
Events : 2845752

Ils sont bien synchronisés, mais pas assemblés. J’ai alors testé
sudo mdadm --assemble --force /dev/md126 /dev/sd[abcdefghijk]2
mais ai obtenu 11 jolis “Device or ressource busy”. Ce qui est normal, les disques étant intégrés dans le RAID, mais en spare. J’ai alors lancé
sudo mdadm --stop /dev/md126
suite à quoi la commande d’assemblage précédemment citée a bien fonctionné, le RAID s’est resynchronisé sans perdre de données, en prenant toutefois son temps.

RAID fonctionnel qui ne se synchronise pas tout seul

Dans un autre cas, où le RAID était resté fonctionnel mais dans lequel un volume manquait (sdl2, détecté mais non intégré/synchronisé), j’ai pu le réintégrer avec la commande sudo mdadm --re-add /dev/md126 /dev/sdl2 (si re-add ne fonctionne pas, add devrait fonctionner mais prendre plus de temps).

Dans encore un autre cas, un seul disque était intégré au RAID, mais non synchronisé, car il restait en “spare”. J’ai pu forcer la réintégration avec la commande
echo check > /sys/block/md126/md/sync_action
De la lecture intéressante se trouve sur cette page.

Ici aussi : https://robbat2.livejournal.com/231207.html?nojs=1

Exclure disque d’un raid

Il doit être marqué en failed ; soit par mdadm suite à erreur de lecture ou autre, soit manuellement par :

sudo mdadm /dev/mdX --fail /dev/sdX

Il peut alors être retiré :

sudo mdadm /dev/mdX --remove /dev/sdX

Vitesse reconstruction

sudo sysctl -w dev.raid.speed_limit_max=10000

pour 10Mo/s environ.
Par défaut sous Debian c’est 200000.

06 Jan 2019, 00:00

Ripper des cd audio avec abcde et intégrer l'image dans les fichiers

Suite à quelques soucis de recherche dans la base CDDB avec Asunder, voici un mini-tuto pour abcde. Déjà,

sudo apt install abcde lame eyed3 glyrc imagemagick cdparanoia

Les préférences d’extraction se définissent dans le fichier /etc/abcde.conf ou bien dans un fichier user qui outrepassera le précédent, et que nous éditons ici : pluma ~/.abcde.conf

# VBR bonne qualité
LAMEOPTS='-V 0'
# On extrait la couverture
ACTIONS=default,getalbumart
# On range les fichiers finaux dans ce dossier :
OUTPUTDIR="/path/to/music/dir"
# On encode en mp3
OUTPUTTYPE=mp3
# Arborescence type Artiste/Album/01 - Morceau.mp3
OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'
# On ne remplace PAS les espaces par des underscores (et autres modifs)
mungefilename ()
{
echo "$@"
}

On peut ensuite lancer abcde ou encore abcde -d /dev/sr1 si on spécifie manuellement le lecteur CD.

Enfin, dans le dossier final, si on souhaite intégrer la pochette au fichier :

for i in *.mp3
do
eyeD3 --add-image cover.jpg:FRONT_COVER "$i"
done

(cf cette page)