Visualiser la mémoire des périphériques sous Linux

Sous le répertoire proc, il est possible de consulter la correspondance de la mémoire pour différents périphériques.

cat /proc/iomem

La commande précédente donnera l’adresse mémoire correspondante. Dans cet exemple, elle est utilisée pour déterminer l’adresse du UART du Raspberry PI2, qui se trouve à 0x3F201000.

root@raspberrypi:/proc# cat iomem
00000000-3affffff : System RAM
 00008000-007945ef : Kernel code
 00804000-009497db : Kernel data
3f006000-3f006fff : dwc_otg
3f007000-3f007eff : /soc/dma@7e007000
3f00b840-3f00b84e : /soc/vchiq
3f00b880-3f00b8bf : /soc/mailbox@7e00b800
3f200000-3f2000b3 : /soc/gpio@7e200000
3f201000-3f201fff : /soc/uart@7e201000
 3f201000-3f201fff : uart-pl011
3f202000-3f2020ff : /soc/sdhost@7e202000
3f980000-3f98ffff : dwc_otg

Linux Ubuntu 12.04 Erreur d’écriture durant le login

Pour une raison obscure, cette version donne root comme owner d’un fichier requis lors du login. Ainsi lorsque l’on entre le mot de passe, on retourne automatiquement au login. Il y a un petit message, très bref qui dit : « Cannot write bytes : Broken pipe ».

Solution :

  1. Passer au mode console : CTRL+ALT+F2 dans la fenêtre du login.
  2. Naviguer vers /home/<user>/
  3. Lister les fichiers et les droits : ls -a -l
  4. Changer le owner pour le fichier .Xauthority pour qu’il soit à votre usager chown <user>:<user> .Xauthority
  5. Relancer le GUI

Faire un daemon sous Linux

Sous linux, le terme daemon désigne un ou des processus qui s’exécutent en arrière plan. C’est l’équivalent des services sous Windows.

Les étapes suivantes visent à démarrer un programme exécutable automatiquement lors du lancement. Il est toujours possible d’arrêter, de lancer ou de relancer le daemon en exécutant manuellement le script dans une console.

1 ) Mettre un script dans le répertoire /etc/init.d/

Vous trouverez dans ce répertoire le fichier skeleton, qui est un canevas simple à modifier. Faites une copie du fichier et changer le nom pour qu’il représente bien l’application qui sera lancée. Dans notre exemple, il s’agit d’un petit programme qui gère le clignotement d’une led de statut. J’ai donc renommé le fichier stateLed.

cp /etc/init.d/skeleton /etc/init.d/stateLed

Voici les lignes que vous devrez modifier :

DESC="Description of the service"
NAME=daemonexecutablename
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

Voici les lignes modifiées pour mon exemple :

DESC="State led service"
NAME=stateLed
DAEMON=/usr/bin/$NAME
DAEMON_ARGS=" 4"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

2) Pour que le script puisse s’exécuter, il faut maintenant le rendre exécutable. Entrez la commande suivante dans une console :

sudo chmod +x stateLed

3 )Pour que l’appel du programme par le script fonctionne, il faut mettre le fichier exécutable dans le répertoire /usr/bin/.

Si le programme requiert divers appels de commande, il est aussi possible de mettre un script dans le répertoire /usr/sbin/. Voici un exemple :

#!/bin/bash
/etc/init.d/stateLed start

4) La dernière étape valide le script dans la liste des scripts à considérer.

update-rc.d stateLed defaults

Vous devriez obtenir un message semblable à ceci :

Adding system startup for /etc/init.d/stateLed ...    
/etc/rc0.d/K20stateLed -> ../init.d/stateLed 
/etc/rc1.d/K20stateLed  -> ../init.d/stateLed 
/etc/rc6.d/K20stateLed  -> ../init.d/stateLed     
/etc/rc2.d/S20stateLed -> ../init.d/stateLed     
/etc/rc3.d/S20stateLed  -> ../init.d/stateLed     
/etc/rc4.d/S20stateLed  -> ../init.d/stateLed     
/etc/rc5.d/S20stateLed  -> ../init.d/stateLed

Ça devrait maintenant fonctionner.