lundi 26 septembre 2016

Choisir un nano-PC

Définition


Le terme nano-ordinateur ou nano-PC, est utilisé pour désigner des ordinateurs dont la taille est comparable à celle d'une carte de crédit.

Quelques exemples à processeur ARM


Parmi les nano-ordinateurs ARM les plus utilisés actuellement, on peut citer:

Quelques caractéristiques


Raspberry Pi 1 (model B)

Le Raspberry Pi repose sur un processeur ARM qui supporte l'exécution d'une distribution GNU/Linux et de logiciels compatibles. Il peut effectuer les tâches d’un PC de bureau mais il permet également la diffusion de vidéos en haute définition grâce à son circuit BMC Videocore.
Le Raspberry Pi nécessite en plus: une carte SD munie d'un OS Linux, une alimentation, un clavier USB, une souris USB, un boîtier et des câbles (Ethernet, HDMI). Pour préparer une carte SD bootable, il faut disposer d'un PC avec lecteur de carte.
  • Alimentation à prévoir: 5 Vcc (via prise micro-USB)
  • Consommation: 700 mA
  • CPU: ARM1176JZF-S 700 MHz
  • Mémoire: 512 MB
  • 2 ports USB 2.0
  • Port Ethernet 10/100 base T: RJ45
  • Bus: SPI, I2C, série
  • Support pour cartes SD/MMC/SDIO
  • Sorties audio: HDMI et jack 3,5 mm
  • Sorties vidéo: HDMI et vidéo-composite
  • Dimensions: 85 x 56 mm

BeagleBone Black (rev B)

Capable de réaliser des calculs arithmétiques de vecteurs avec virgule flottante, la platine BeagleBone Black est indiquée pour la conception de petits de robots.
  • AM335x Superscalar ARM Cortex-A8 1GHz
  • 512-MB DDR3L RAM
  • Mémoire Flash 2GB eMMC
  • 1 sortie vidéo/audio (stéréo) via un port micro HDMI
  • Résolution: 1024x768 - 1280x720 - 1440x900 - 1280x1024 supporte w/EDID
  • 1 port USB 2.0 (host) à usage multiple offrant la possibilité d’alimenter la platine
  • 1 port USB 2.0 (client)
  • 1 port Ethernet 10/100Base-T
  • Connecteur microSD
  • Interface JTAG pour débug en option
  • Accès à tous les signaux d’entrées/sorties (niveau 3,3 V) y compris ceux pour la gestion de LCD et de batterie sur 2 connecteurs femelles 46 broches au pas de 2,54 mm
  • Dimensions: 8,6 × 5,4 cm.

eMMC

eMMC est l'abréviation d'embedded MultiMedia Card ou carte multimédia embarquée. A ce jour, les cartes mémoire eMMC possédent les taux de transfert suivants:
  • 200 Mo/s en lectureséquentielle
  • 50 Mo/s en écriture séquentielle
  • 4000 IOPS en lecture aléatoire
  • 1500 IOPS en écriture aléatoire
Ces prestations sont inférieures à celles d'un disque SSD, mais nettement au-dessus des cartes SD les plus performantes.

Conclusion

 Les deux cartes présentées ci-dessus posèdent chacunes un domaine de prédilection.
  • La Raspberry Pi cible un panel de consommateurs très étendu. Il s'agit d'une carte grand public
  • La BeagleBone Black se destine à un marché d'utilsateurs avertis pour des prototypes industriels ou à caractère scientifique.

RPi3 - InfluxDB Grafana

Introduction

Cet article résume comment installer Grafana et InfluxDB sur une Raspberry Pi 3 Model . Le système d’exploitation est une distribution de type Linux Debian appelée Raspbian. La distribution utilisée dérive d'une Debian Jessie. Celle-ci est disponible en téléchargement sur le site de raspberrypi.

InfluxDB

InfluxDB est une base de données orientée “séries temporelles” dont le support de stockage repose sur la solution clé-valeur haute performance LevelDB

Grafana

Grafana va permettre de réaliser des tableaux de bords Web à partir de données stockées dans InfluxDB

Influxdb

Téléchargement et installation

Télécharger la dernière version disponible sur plateforme ARM pour influxdb:
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.0_linux_armhf.tar.gz
Décompresser l'archive correspondante:
tar xvfz influxdb-1.0.0_linux_armhf.tar.gz

Test

Exécuter le programme influxd: influxdb-1.0.0-1/usr/bin/influxd

[run] 2016/09/26 18:16:57 InfluxDB starting, version 1.0.0, branch master, commit 37992377a55fbc138b2c01edd4deffed64b53989
[run] 2016/09/26 18:16:57 Go version go1.6.2, GOMAXPROCS set to 4
[run] 2016/09/26 18:16:57 no configuration provided, using default settings
[store] 2016/09/26 18:16:57 Using data dir: /root/.influxdb/data
[subscriber] 2016/09/26 18:16:57 opened service
[monitor] 2016/09/26 18:16:57 Starting monitor system
[monitor] 2016/09/26 18:16:57 'build' registered for diagnostics monitoring
[monitor] 2016/09/26 18:16:57 'runtime' registered for diagnostics monitoring
[monitor] 2016/09/26 18:16:57 'network' registered for diagnostics monitoring
[monitor] 2016/09/26 18:16:57 'system' registered for diagnostics monitoring
[shard-precreation] 2016/09/26 18:16:57 Starting precreation service with check interval of 10m0s, advance period of 30m0s
[snapshot] 2016/09/26 18:16:57 Starting snapshot service
[admin] 2016/09/26 18:16:57 Starting admin service
[admin] 2016/09/26 18:16:57 Listening on HTTP: [::]:8083
[continuous_querier] 2016/09/26 18:16:57 Starting continuous query service
[monitor] 2016/09/26 18:16:57 Storing statistics in database '_internal' retention policy 'monitor', at interval 10s
[httpd] 2016/09/26 18:16:57 Starting HTTP service
[httpd] 2016/09/26 18:16:57 Authentication enabled: false
[httpd] 2016/09/26 18:16:57 Listening on HTTP: [::]:8086
[retention] 2016/09/26 18:16:57 Starting retention policy enforcement service with check interval of 30m0s
[run] 2016/09/26 18:16:57 Listening for signals 2016/09/26 18:16:57 Sending usage statistics to usage.influxdata.com
[shard] 2016/09/26 18:17:10 /root/.influxdb/data/_internal/monitor/1 database index loaded in 53.645µs

Automatiser le démarrage

Créer un script de démarrage sous le répertoire /etc/init.d puis exécuter les commandes suivantes:
cp influxdb.sh /etc/init.d
chmod +x /etc/init.d/influxdb.sh
update-rc.d influxdb.sh defaults

Grafana

Téléchargement et installation

Télécharger la dernière version disponible sur plateforme ARM pour Grafana
Installer le packet correspondant: root@rpi-iot:/home/pi# dpkg -i ./grafana_3.1.0-1468447908_armhf.deb

Sélection du paquet grafana précédemment désélectionné. (Lecture de la base de données... 118182 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../grafana_3.1.0-1468447908_armhf.deb ...
Dépaquetage de grafana (3.1.0-1468447908) ...
Paramétrage de grafana (3.1.0-1468447908) ...
Ajout de l'utilisateur système « grafana » (UID 113) ...
Ajout du nouvel utilisateur « grafana » (UID 113) avec pour groupe d'appartenance « grafana » ...
Le répertoire personnel « /usr/share/grafana » n'a pas été créé.
### NOT starting on installation, please execute the following statements to configure grafana to start automatically using systemd
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server
### You can start grafana-server by executing sudo /bin/systemctl start grafana-server T
raitement des actions différées (« triggers ») pour systemd (215-17+deb8u4) ...

RPi 3 - Point d'accès WIFI

Introduction


Cet article résume comment installer un d'accès WIFI sur une Raspberry Pi 3 Model B.
Il faudra installer puis configurer deux packets supplémetaires.

hostapd

hostapd sera le service en charge de la création du point d'accès WIFI.

dnsmasq

dnsmasq est un serveur léger pour fournir les services DNS, DHCP, Bootstrap Protocol et TFTP sur un petit réseau. Il sera utilisé dans notre cas pour la affecter des adresses IP dynamiques aux clients qui vont se connecter sur le point d'accès WIFI, par l'intermédiaire du service hostapd.

Configuration DHCP


DHCP est désormais pris en charge par un nouveau paquet appelé dhcpcd. Dans ce cas, le fichier de configuration des interfaces réseaux /etc/network/interfaces ne comprend plus la ligne d'instruction iface eth0 inet dhcp. Celle-ci est remplacée par la ligne d'instruction iface eth0 inet manual.

/etc/network/interfaces

Pour définir une adresse IP statique, le fichier /etc/network/interfaces reste désormais inchangé. Il faudra ajouter les instructions suivantes à la fin du fichier /etc/dhcpcd.conf
# Static IP configuration for eth0.
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1

# Dynamic IP configuration for wlan0
allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

/etc/dhcpd.conf

Lorsque la carte réseau possède une adresse IP définie de manière statique, la résolution de noms (DNS) ne se fait plus et le fichier de configuration /etc/resolv.conf est vide ! Dans ce cas, il sera nécessaire d'ajouter les entrées de DNS dans le fichier de configuration /etc/dhcpcd.conf qui prendra finalement la forme suivante:
# Static IP configuration for eth0.
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=8.8.4.4 8.8.8.8

Vérification adressage IP

Les commandes ifconfig et ip addr permettent d'afficher les infomations sur les interfaces réseau configurées:

hosapd et dnsmasq


Installation des packages nécessaires

apt-get update
apt-get install hostapd
apt-get installdnsmasq

Desactiver le démarrage automatique

update-rc.d -f hostapd remove update-rc.d -f dnsmasq remove 
ou bien:
update-rc.d hostapd disable
update-rc.d dnsmasq disable

Configurer le service hostapd

Créer un fichier /etc/hostapd/hostapd.conf avec le contenu suivant:

# This is the name of the WiFi interface we configured above
interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# This is the name of the network
ssid=Pi3-AP
# Use the 2.4GHz band
hw_mode=g
# Use channel 6
channel=6
# Enable 802.11n<
ieee80211n=1
# Enable WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# Accept all MAC addresses
macaddr_acl=0
# Use WPA authentication
auth_algs=1
Require clients to know the network name
ignore_broadcast_ssid=0
# Use WPA2
wpa=2
# Use a pre-shared key
wpa_key_mgmt=WPA-PSK
# The network passphrase
wpa_passphrase=raspberry
# Use AES, instead of TKIP
rsn_pairwise=CCMP

Configurer le service dnsmasq

Créer un fichier /etc/dnsmasq.conf avec le contenu suivant:

interface=wlan0 # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don't forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time

Mise en oeuvre


Créer un script de démarrage: wap.sh


#!/bin/bash
if [ "$(whoami)" != root ]
then
echo "You need administrator privileges to run this script"
exit 1
fi
ifconfig wlan0 down
ifconfig wlan0 172.24.1.1/24
ifconfig wlan0 up
service dnsmasq start
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
service hostapd start

RPi 3 - Démarrage

Raspbian


Cet article résume comment installer un système Raspbian, sur une Raspberry Pi 3 Model B

Accessoires


Installation d'un serveur


Le système d’exploitation est une distribution de type Linux Debian appelée Raspbian.
La distribution en usage actuellement dérive d'une Debian Jessie. Celle-ci est disponible en téléchargement sur le site de raspberrypi.

La distribution Raspbian peut se télécharger depuis un poste Linux avec la ligne de commande suivante:
wget http://downloads.raspberrypi.org/raspbian_latest

Décompresser le fichier contenant la distribution: unzip  raspbian_latest

Inserer la carte SD dans son logement puis rechercher son point de montage.
La commande dmesg permet d'identifier le type de périphérique: 
[15362.326489] mmcblk0: mmc0:0001 SD16G 14.6 GiB
[15362.329144]  mmcblk0: p1
[15362.496985] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!


La commande umount permet de démonter la partition qui contiendra la distribution:
umount /dev/mmcblk0p1

Puis recopier l'image Raspbian sur la carte SD (Une procèdure détallée est disponible sur le site raspberry): dd bs=4M if=./2016-05-27-raspbian-jessie.img of=/dev/mmcblk0

Après cette opération de copie assez longue, la carte SD peut être insérée dans le logement de la carte du Raspberry Pi.

1er démarrage


Après insertion de la carte SD et mise sous tension, le systéme de fichier est redimensionné puis le serveur X est démarré. Ensuite, il est possible de lancer le menu de configuration en saisissant la commande raspi-config dans un terminal (avec les droits de root).


Configuration depuis raspi-config


Voici les options de menu raspi-config:
  • Expand_Filesystem: par défault la partition système fait 2Go. Cette option permet de l'agrandir afin d'occuper tout l'espace disponible.
  •  Change User Password: pour modifier le mot de passe de l'utilisateur par default (pi/raspberry) .
  •  Enabled boot to Desktop/Scratch: pour lancer une console ou un environnement graphique au boot. 
  •  Internationalisation Options: pour changer la langue. Pour mettre  et mettre le clavier en français. Pour changer l'heure locale.
  •  Advanced Options: Pour activer le service SSH afin de se connecter à distance. Pour redéfinir le nom de la machine sur le réseau. Pour définir les quantités de mémoire allouées respectivement aux CPU et au GPU.

Utiliser le français

Depuis le menu:  raspi-config | Internationalisation Options | Change locale

Définir l'heure locale

Depuis le menu:  raspi-config | Internationalisation Options | Change Timezone

Obligatoirement définir la localisation Wifi pour GB

Depuis le menu:  raspi-config | Internationalisation Options | Change Wi-fi country

Mettre le clavier en français

Depuis le menu:  raspi-config | Internationalisation Options | Change Keyboard layout

Etendre le système de fichier

Depuis le menu:  raspi-config | Expand Filesystem

Changer de mot de passe

Depuis le menu:  raspi-config | Change User Password

Démarrer le systéme en mode console

Depuis le menu:  raspi-config | Enable boot to Desktop / Scratch

Activer le serveur SSH

Depuis le menu:  raspi-config | Advanced Options | SSH

Définir le nom utilisé pour ce système

Depuis le menu:  raspi-config | Advanced Options | Hostname

Définir la quantité de mémoire allouée au GPU

Depuis le menu:  raspi-config | Advanced Options | Split

Utiliser 32Mib de RAM pour le GPU et le reste disponible pour le CPU.

Activer le chargement des modules noyau SPI

Depuis le menu:  raspi-config | Advanced Options | SPI

Activer le chargement des modules noyau I2C

Depuis le menu:  raspi-config | Advanced Options | I2C

Redémarrage et poursuite de la configuration


Ensuite, on pourra effectuer les actions suivantes:
  • Définir la liste des dépots sources
  • Mettre à jour les paquets
  • Définir une adresse IP statique

Définir la liste des dépots sources

Pour une distribution dérivée de la version Debian Jessie, le fichier de définition des paquets devrait contenir les entrées suivantes:
cat /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

Mettre à jour les paquets

Dans ce cas, on peut mettre à jour le système depuis Internet avec la commande suivante:
sudo apt-get update

Définir une adresse IP statique

Afin de faciliter les accès ultérieurs par ssh, on peut remplacer l'adressage DHCP par une IP statique:

/etc/network/interfaces
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Attention:

  • Mon routeur est une LivePlay Orange qui utilise le masque de sous réseau  192.168.1.xxx mais certains utilisent 192.168.0.xxx.
  • DHCP est désormais pris en charge par un nouveau paquet appelé dhcpcd. Dans ce cas, le fichier de configuration des interfaces réseaux ne comprend plus la ligne d'instruction iface eth0 inet dhcp. Celle-ci est remplacée par la ligne d'instruction iface eth0 inet manual.Pour définir un IP statique le fichier  /etc/network/interfaces reste désormais inchangé. Il faudra ajouter les instructions suivantes à la fin du fichier /etc/dhcpcd.conf
# Static IP configuration for eth0.
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1

Résolution des noms de domaines

Lorsque la carte réseau possède une adresse IP définie de manière statique, la résolution de noms (DNS) ne se fait plus et le fichier de configuration /etc/resolv.conf est vide ! Dans ce cas, il sera nécessaire d'ajouter les entrées de DNS dans le fichier de configuration /etc/dhcpcd.conf qui prendra finalement la forme suivante:
# Static IP configuration for eth0.
interface eth0
static ip_address=192.168.1.xxx/24
static routers=192.168.1.1
static domain_name_servers=8.8.4.4 8.8.8.8

Redémarrage


Pour redémarrer la raspberry, il faudra saisir la commande suivante:
sudo reboot

Ensuite le systéme sera rendu accessible à distance depuis un client ssh avec la commande suivante:
ssh pi@192.168.1.xxx

Etat des lieux


Mémoire

La commande free -mh pernet de visualiser la quantité de RAM utilisée par le systéme:
                   total         used        free        shared      buffers     cached
Mem:          957M        91M       865M       6,5M       7,7M        45M
-/+ buffers/cache:        39M       918M
Swap:          99M         0B        99M

Espace disque

La commande df -h permet d'obtenir la liste des systémes de fichiers montés ainsi que leur point de montage et taux d'occupation:

Sys. de fichiers   Taille     Utilisé     Dispo   Uti%     Monté sur
/dev/root               30G        3,3G         25G    12%    /
devtmpfs             475M           0        475M      0%    /dev
tmpfs                   479M           0        479M      0%    /dev/shm
tmpfs                   479M       6,5M     473M       2%    /run
tmpfs                    5,0M       4,0K       5,0M       1%    /run/lock
tmpfs                   479M          0         479M       0%    /sys/fs/cgroup
/dev/mmcblk0p1   63M        21M        43M      33%    /boot
tmpfs                     96M          0           96M        0%    /run/user/1000

Adressage IP

Les commandes ifconfig et ip addr permettent d'afficher les infomations sur les interfaces réseau configurées: