xzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
dimanche 04 décembre 2016
:: Archlinux - Aide mémoire ::
Systemd
Commandes
systemctl # Contrôle systemd et gère les unités.
journalctl # Consultation du journal de systemd.
loginctl # Contrôle des sessions utilisateurs (systemd-logind).
systemctl # Liste des unités
systemctl list-units
systemctl status <unit> # Affiche le statut de l'unité
systemctl list-dependencies [<unit>] # Liste des dépendances d'une unité
$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
● systemd-modules-load.service loaded failed failed Load Kernel Modules
On récupère ainsi le nom du service en échec à partir duquel on va pouvoir demander plus de détails.
Détails sur le service en échec
$ systemctl status systemd-modules-load.service
● systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2016-12-04 09:24:59 CET; 18min ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 333 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
Main PID: 333 (code=exited, status=1/FAILURE)
Ces informations nous permettent de récupérer le PID du process incriminé, et de cibler plus précisément notre recherche :
$ journalctl _PID=333
-- Logs begin at Mon 2016-11-21 08:22:44 CET, end at Sun 2016-12-04 09:40:41 CET. --
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxpci'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetadp'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxnetflt'
déc. 04 09:24:59 mani systemd-modules-load[333]: Failed to find module 'vboxdrv'
Maintenant c'est déjà plus clair, le problème semble provenir de modules absents. Le nom de ces modules nous donne un indice sur l'application incriminée, ici VirtualBox.
Gestion du journal
$ journalctl --disk-usage # Taille occupée par les journaux sur le disque
$ journalctl --verify # Vérification de la "possible" corruption des fichiers journaux
Taille du journal
Editer le fichier /etc/systemd/journald.conf et modifier la valeur suivante :
[Journal]
...
SystemMaxUse=50M
Nettoyage du journal
$ sudo journalctl --vacuum-size=50M # Suppression des journaux archivés jusqu'à ce que leur taille totale descende en deça de 50Mo
$ sudo journalctl --vacuum-time=2weeks # Suppression des événements agés de plus de deux semaines
La liste des miroirs les plus rapides peut être déterminée à l'aide de l'utilitaire /usr/bin/rankmirrors.
Pour mettre à jour la liste des miroirs français en http/https et IPv4, lancer les commandes suivantes :
$ sudo pacman -Sy # Synchronise la liste des paquets
$ sudo pacman -Syu # Synchronise la liste des paquets et effectue une mise à jour
$ sudo pacman -Ss <package> # Cherche un paquet contenant le terme "package"
$ sudo pacman -Si <package> # Information sur un paquet
$ sudo pacman -S <package> # Installe "package"
$ sudo pacman -S --asdeps # Installe un paquet comme dépendance
Mise à jour (-U)
$ sudo pacman -U <package> # Met à jour "package"
Requête (-Q)
$ sudo pacman -Q # Liste les paquets installés
$ sudo pacman -Ql <package> # Liste les fichiers d'un paquet
$ sudo pacman -Qo /path/file # Demande à quel paquet appartient le fichier
$ sudo pacman -Qdtq # Liste des dépendances inutiles
Suppression (-R)
$ sudo pacman -Rs <package> # Supprime un paquet et ses dépendances
$ sudo pacman -Rsn <package> # Supprime un paquet, sa configuration et ses dépendances
$ sudo pacman -Rs $(pacman -Qtdq) # Suppression des dépendances inutiles
Création de la liste des paquets installés pour réinstallation
Suppression des paquest non-installés du cache (anciennes versions ou non installées sur le système) :
$ sudo pacman -Sc
Il est aussi possible de vider complètement le cache. Il s’agit d’une très mauvaise pratique qui empêche toute réinstallation de paquets depuis le cache et impose donc de les télécharger à nouveau.
Vous ne devriez jamais utiliser cette commande à moins d’un besoin absolu de récupérer de l’espace disque.
$ sudo pacman -Scc
AUR
$ yaourt (utilise la même syntaxe que pacman)
Mise à jour du système
$ yaourt -Syua # Mise à jour du système (pacman + aur)
Local
Attention ! Pour des raisons de sécurité, éviter d'utiliser makepkg en root. Préférer l'utilisation de sudo.
Création du paquet
$ sudo makepkg -s
Installation du paquet créé
$ sudo pacman -U <package>-pkg.tar.gz
vendredi 18 novembre 2016
:: Flasher le Nokia N9 ::
Prérequis
flasher
$ yaourt -S flasher-harmattan
Les roms correspondants au modèle (main.bin + emmc.bin), disponibles sur NokiaFirmware
| First Header | Second Header | Third Header |
| :------------ | :-----------: | -------------------: |
| : Left align | : centered : | Right align : |
| First row | **Gras** | Very long data entry |
| Second row | Cell that spans across two columns ||
[Table caption, also works as a reference][section-mmd-tables-table1]
Autres
What
Syntax
{--a delete. --} a delete.
{-- remove --}
{++an add. ++}
{++ add++}
swap {~~from~>to~~}
{\~\~\from\~>to\~\~}
{==a highlight==}
{\=\=highlight\=\=}
Comment, which you can't see{>>What is it a test of?<<}.
{>>Comment?\<\<}
Ceci est une note de bas de page
[idlien]: http://url.com "title" ↩
:: Prolonger la durée de vie des cartes SD sur Raspberry Pi ::
Les cartes Raspberry Pi sont souvent considérées, à tort, comme des "killeuses" de carte SD.
Ceci n'est pas dû à notre framboise préférée mais au fait que la carte SD fasse office de disque dur.
Or le système d'exploitation risque de solliciter énormément cette dernière pour y écrire régulièrement de petites quantités de données (fichiers journaux, fichiers temporaires, etc.), traitement pour lequel une carte SD n'a pas été conçue (ses cycles d'écritures sont limités).
Le risque ici est de voir fondre comme neige au soleil l'espace disque disponible sur votre carte SD, jusqu'à la rendre inutilisable.
Pour limiter ce risque des moyens existent, je vous en présente deux que j'ai personnellement testés (et éprouvés).
tmpfs
tmpfs va nous permettre de déplacer les répertoires fortement sollicités en ram. A noter que le contenu de ces répertoires sera perdu à chaque redémarrage du système.
Répertoires concernés :
/tmp
/var/tmp
/var/log
Cette liste est bien-sûr exhaustive, n'hésitez pas à ajouter d'autres répertoires fortement sollicités en terme d'écriture.
Pour cela, il faut modifier le fichier /etc/fstab comme suit :
La quantité de RAM disponible sur le raspberry pi étant limitée, on fixe arbitrairement la taille max des partitions à 16Mo.
ramlog (http://www.tremende.com/ramlog/)
Dans le cas des fichiers journaux, la méthode précédente présente l'inconvénient de supprimer ces derniers à chaque redémarrage du Pi.
Ce qui, pour un serveur Web ou tout autre serveur public, peut s'avérer rédhibitoire.
ramlog permet de contourner ce problème : à chaque démarrage, il crée un volume de stockage virtuel en RAM, y copie le contenu de /var/log puis monte ce volume comme /var/log.
Les fichiers journaux sont ainsi stockés sur le disque dans le répertoire /var/log.hdd qui est mis à jour à chaque arrêt/redémarrage du service.
Pour installer ramlog, lancer les commandes suivantes :
:: Calibration et gestion du firmware - Marlin LCD ::
Préparation de l'environnement de développement Arduino
Installation
Sur Linux Mint, l'IDE Arduino étant présent dans les repositories officiels, on l'installe en une seule commande :
$ sudo apt-get install arduino
Permissions utilisateurs
Ajouter les utilisateurs de l'imprimante au groupe "dialout" pour autoriser l'accès aux ports séries.
$ sudo usermod -aG dialout utilisateur
Pour s'ajouter soi-même :
$ sudo usermod -aG dialout $(whoami)
Vérifier à l'aide de la commande "groups" :
$ groups
[...] dialout [...]
Connexion à la carte Arduino
Connecter la carte Arduino à l'aide du câble usb.
Lancer Arduino IDE et sélectionner le type de carte et le port série, pour ma part :
Outils > Type de carte > Arduino Mega 2560 ou Mega ADK
Outils > Port série > /dev/ttyACM0
Calibration des moteurs
Informations à collecter
Nombre de pas moteur : 200
Angle de pas : 1,8 °
Résolution ou pas du driver : 1/16ème (A4988) ou 1/32ème (DRV8825)
Type de tige filetée et son pas de vis : M5 / 0.8
Type de courroie et son pas : GT2 / 2 mm
Nombre de dents de l'engrenage de la courroie : 20
Nombre de dents du grand engrenage de l’extrudeur : 43
Nombre de dents du petit engrenage de l’extrudeur : 10
Ratio de l’extrudeur : 1
Diamètre de l’axe de la vis entraînant le fil : 6.5
Ces informations sont nécessaires pour calculer le nombre de pas pour chaque moteur (axes X, Y, Z + extrudeur) et définir la valeur DEFAULT_AXIS_STEPS_PER_UNIT du fichier Configuration.h :
Les paramètres Proportionnelle Intégrale et Dérivation concernent les éléments chauffants de l'imprimante (buses de chauffe et lit).
Afin d'éviter tout problème de dépassement de température et d'optimiser la consommation électrique, il est important d'affiner au maximum ces paramètres.
Pour cela, une commande existe qui fait tout le travail pour nous :-)
Buse de chauffe extrudeur
Le code suivant chauffe la buse n°1 (E0) jusqu'à 200°C durant 8 cycles, puis remonte les valeurs PID calculées :
M303 E0 S200 C8
Après quelques minutes, le résultat donne :
[...]
bias: 102 d: 102 min: 194.70 max: 205.94
Ku: 23.12 Tu: 61.87
Clasic PID
Kp: 13.87
Ki: 0.45
Kd: 107.29
PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h
Lit chauffant :
Le code suivant chauffe le lit (E-1) jusqu'à 50°C durant 8 cycles, puis affiche les valeurs PID calculées.
M303 E-1 S50 C8
Après plusieurs minutes, on obtient :
[...]
bias: 126 d: 126 min: 49.92 max: 50.70
Ku: 410.70 Tu: 87.54
Clasic PID
Kp: 246.42
Ki: 5.63
Kd: 2696.34
PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h
Note : les valeurs d'accélération par défaut sont extraordinairement élevées pour ma Prusa i3. Afin d'éviter les sauts de pas (que j'ai surtout constaté sur l'axe Y), je les ai diminuées drastiquement.