dimanche 21 janvier 2018

Création d'une image (.img) de la carte SD du raspberry sur un serveur et réduction de la taille de l'image.

L'objet est de créer une sauvegarde de la carte SD vers un serveur distant sous samba et de réduire la taille de se fichier .img.

Prérequis

Un serveur sous linux avec samba ayant un espace libre supérieur à 3 fois la taille de la carte SD

Installation du client samba

sudo apt-get install samba-common smbclient samba-common-bin cifs-utils


Montage du dossier distant 

Le serveur samba est en 192.168.1.100 et partage un dossier nommé "NAS" pour l'utilisateur "nas" avec mot de passe "nas", "/media/nas" est le chemin local vers le serveur samba.

sudo mkdir /media/nas
sudo mount -t cifs //192.168.1.100/NAS /media/nas -o user=nas,pass=nas

Lancement de la copie de la carte SD

Option: utilisation d'un console déportée :
sudo apt-get install screen
sudo screen -S backup 


Le dossier partagé a pour chemin locale: /media/omv/tmp/

sudo dd if=/dev/mmcblk0 of=/media/omv/tmp/image.img bs=1M


Le temps passe et cours... et puis à la fin: 

On quitte la console déportée par Ctrl a + d et on y revient par sudo screen -x backup


15193+1 enregistrements lus
15193+1 enregistrements écrits
15931539456 bytes (16 GB, 15 GiB) copied, 5734,18 s, 2,8 MB/s



Maintenant on se connecte au serveur samba (192.168.1.100) pour réduire la taille de l'image créée

Création d'une console déportée 

sudo screen -S shrink

Lancement du script de réduction (voir plus bas)

sudo chmod +x pishrink.sh

sudo ./pishrink.sh /media/usb/tmp/image.img /media/usb/tmp/cabass.img

Ctrl a + d pour quitter la console déportée

Pour vérifier l'avancement du script on ré-ouvre la console déportée par:

sudo screen -x shrink
 

Ctrl a + d
etc...



A la fin le script donne les tailles des images avant et après, c'est beau.

 

Annexe

Voici le script pishrink.sh proposé par Matteo Mattei :

#!/bin/bash
#
# Copyright 2016 - Matteo Mattei <matteo.mattei@gmail.com>
# This script is intended to be used to shrink raspberry pi images
# created with dd client command.

# Check if you are root
if [ ! $(id -u) -eq 0 ]; then
   echo "ERROR: This program must run as root"
   exit 1
fi

IMG=${1}
# Check if the file exists
if [ ! -f ${IMG} ]; then
  echo "ERROR: File ${IMG} does not exist"
  exit 1
fi

if [ -z "$(which parted 2> /dev/null)" ]; then
   echo "ERROR: parted command not found - please install it and retry"
   exit 1
fi
if [ -z "$(which losetup 2> /dev/null)" ]; then
   echo "ERROR: losetup command not found - please install it and retry"
   exit 1
fi
if [ -z "$(which resize2fs 2> /dev/null)" ]; then
   echo "ERROR: resize2fs command not found - please install it and retry"
   exit 1
fi
if [ -z "$(which truncate 2> /dev/null)" ]; then
   echo "ERROR: truncate command not found - please install it and retry"
   exit 1
fi
if [ -z "$(which gzip 2> /dev/null)" ]; then
   echo "ERROR: gzip command not found - please install it and retry"
   exit 1
fi
INFO=$(parted -m ${IMG} unit B print | grep ext4)

NUM=$(echo ${INFO} | awk -F':' '{print $1}')
START=$(echo ${INFO} | awk -F':' '{print $2}')
OLD=$(echo ${INFO} | awk -F':' '{print $3}')
DUMMY=$(echo ${INFO} | awk -F':' '{print $4}')

START=${START::-1}
OLD=${OLD::-1}

LOOPBACK=$(losetup -f --show -o $START $IMG)
e2fsck -p -f ${LOOPBACK}
if [ ! ${?} -eq 0 ]; then
   echo "ERROR: filesystem seems corrupted"
   losetup -d ${LOOPBACK}
   exit 1
fi

INFO=$(resize2fs -P ${LOOPBACK} 2>&1)
SIZE=$(echo ${INFO} | awk -F': ' '{print $2}')
SIZE=$((${SIZE} + 1024))

resize2fs -p ${LOOPBACK} ${SIZE}

losetup -d ${LOOPBACK}
SIZE=$(( ${SIZE} * 4096 + ${START} ))

parted ${IMG} rm ${NUM}
parted -s ${IMG} unit B mkpart primary ${START} ${SIZE}

SIZE=$(( ${SIZE} + 58720257 ))
truncate -s ${SIZE} ${IMG}

gzip -9 ${IMG}
 

Merci à lui.


samedi 20 janvier 2018

Console déportée, ou faire quelque chose en tâche de fond

Screen permet d’exécuter des tâches dans une console déportée ou virtuelle ou masquée ou ce qu'on veut. ça permet d’exécuter des tâches longues en se déconnectant ou en continuant à travailler.

Installation:
sudo apt-get install screen

créer une console déportée:
screen -S toto

a partir de ce moment vous êtes dans la console déportée
      Lancez une tâche qui prend du temps, par exemple télécharger un film avec wget...
     wget http://www.toutgratos.com/unjolifilm.mkv

Sortez de la console:
 Appuyez sur les touches Ctrl et a puis sur d
   Ctrl a + d

Vous êtes revenu sur la console d'origine, vous pouvez continuer à travailler et même sortir par un beau exit

Pour lister les consoles déportées:
screen -ls

Pour re-rentrer dans la console déportée;
screen -x toto

vous revoila dans la console déportée, vous pouvez constater l'avancement de votre wget,
faites de nouveau Ctrl a + d pour en sortir etc...

lundi 1 janvier 2018

Premiers essais de domotique avec un Orange-Pi et un module recepteur 433.92 MHz

Update de l'orange pi

après avoir installer dietpi, un armbian léger en comparaison même de raspbian lite:
https://docs.google.com/spreadsheets/d/1mDHGZC-H6tU6_O8kuLTG8d4A8Nt7lV1Q7MXTR_6qw30/edit#gid=0
et après avoir également configuré la bestiole, on fait ...

 

 Comme d'hab..

sudo apt-get update
sudo apt-get upgrade

 

Python

cd ~ 
apt-get install python3-pip
apt-get install python3-dev
pip3 install rpi-rf

Brochage GPIO Raspberry Pi VS Orange Pi


WiringPI pour Orange Pi

cd ~ 
git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
 
 
Petit test:
gpio readall
gpio reset
gpio readall
 
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 |   IN | 1 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 |   IN | 1 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 |   IN | 0 |  7 || 8  | 0 | IN   | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | IN   | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 |   IN | 1 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | IN   | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI |   IN | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO |   IN | 0 | 21 || 22 | 0 | IN   | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK |   IN | 0 | 23 || 24 | 0 | IN   | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | IN   | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 |   IN | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 |   IN | 0 | 31 || 32 | 0 | IN   | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | IN   | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+

433Utils

cd ~
git clone --recursive git://github.com/ninjablocks/433Utils.git
git submodule init
git submodule update 
cd 433Utils/RPi_utils

On modifie RFSniffer.cpp pour l'adapter au GPIO du orange pi comme suit:
Remplacer la ligne "int PIN = 2;" par "int PIN = 16;"


make

LE MODULE DE RECEPTION 433,92 MHz AUREL (ci-dessous) NE FONCTIONNE PAS BIEN !

Ce récepteur manque de sensibilité






UTILISEZ UN MODULE RXB6 comme celui-là :


Ses qualités de réception sont bien meilleurs !


Essais cd ~/433Utils/RPi_utils
sudo ./RFSniffer


Attrapez votre télécommande et utilisez là, vous devriez voir queque chose comme ça :

~/433Utils/RPi_utils¤ sudo ./RFSniffer
Received 1361
Received 1361
Received 5471
Received 1361
Received 5471
Received 5471
Received 1361
Received 5457
Received 1361

Youppi! ...

Mais pourquoi les codes sont quelques fois différents pour une même touche ???
Il y a bien "appuyé" "relaché" mais "relaché" est parfois différent...

Réception de station météo Oregon Scientific

https://github.com/1000io/OregonPi