Post

Raspberry Pi OS (USB/Flash)

Raspberry Pi OS (USB/Flash)

Raspberry PI 3

Pin-out

  • Processeur Quad Core Broadcom 2837 ARMv8 64bit
  • Vitesse du processeur : 1,2 GHz
  • 1 GB RAM
  • BCM43143 WiFi intégré
  • Bluetooth Low Energy (BLE) intégré
  • 40 broches d’extension GPIO
  • 4 ports USB2
  • Sortie vidéo et stéréo
  • Port caméra CSI pour connecter la caméra Raspberry Pi
  • Port d’affichage DSI pour connecter l’écran tactile Raspberry Pi
  • Lecteur de carte Micro SD pour charger votre système d’exploitation et stocker vos données
  • Source d’alimentation Micro USB, supporte maintenant jusqu’à 2,5A

SPI0 SPI1 Pin Out

Raspberry Pi OS Lite


Raspberry Pi OS (anciennement Raspberry Pi OS)

Samsung USB 3.0 Flash Drive FIT 32GB

Booter un Raspberry sur une clé USB ou un Disque Dur

Choix d’une clé Samsung USB 3.0 Flash Drive FIT 32GB
Samsung USB 3.0 Flash Drive FIT 32GB

Raspberry Pi 3,3B
La possibilité de booter sur un stockage USB externe est vérifiable après boot sur une carte SD par la commande vcgencmd otp_dump | grep 17: qui doit afficher 17:3020000a
Dans le cas contraire, éditer le fichier /boot/config.txt de la SDcard et ajouter à la fin du fichier la ligne suivante program_usb_boot_mode=1 puis redémarrer le PI et vérifier par la commande vcgencmd
Après modification, le boot est total sur le Flash Drive USB ,la SDcard n’est plus utilisée

Raspberry Pi 1 et 2
Modifier le fichier /boot/cmdline.txt de la SDcard , remplacer root=PARTUUID=188891eb-02 qui est la partion 2 de la SDcard par root=/dev/sda2 qui est la partition 2 du Flash Drive USB
On utilise la SDcard uniquement pour le boot

Insérer la clé Samsung USB 3.0 Flash Drive FIT 32GB sur un des connecteurs USB de l’ordinateur linux
Repérer sur quel périphérique

1
dmesg
1
2
3
4
5
6
[ 3420.876497] sd 4:0:0:0: [sdd] 62652416 512-byte logical blocks: (32.1 GB/29.9 GiB)
[ 3420.877074] sd 4:0:0:0: [sdd] Write Protect is off
[ 3420.877081] sd 4:0:0:0: [sdd] Mode Sense: 43 00 00 00
[ 3420.877653] sd 4:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3420.884367]  sdd: sdd1 sdd2
[ 3420.886547] sd 4:0:0:0: [sdd] Attached SCSI removable disk

La “Clé USB” est sur le périphérique système /dev/sdd

Aller dans le dossier contenant l’image de Raspberry Pi OS

1
sudo dd bs=4M if=2021-01-11-raspios-buster-armhf-lite.img of=/dev/sdd conv=fsync
1
2
3
445+0 enregistrements lus
445+0 enregistrements écrits
1866465280 octets (1,9 GB, 1,7 GiB) copiés, 145,811 s, 12,8 MB/s

ATTENTION !!! Pas d’accès à la carte raspberry en mode terminal par la liaison série ou SSH
Les dernières versions de Raspberry Pi OS nécessitent un écran et un clavier, car il n’est plus possible de se connecter directement par la liaison série ou SSH au Raspberry par défaut.

  • Pour réactiver le lancement de SSH au boot ,placer dans la partition boot de la carte SD un fichier nommé ssh, vide et sans extension.
  • Pour la liaison série ,il faut modifier le fichier de configuration **config.txt ** avant insertion de la “Clé USB” dans le raspberry

Identifier le périphérique

1
dmesg
1
2
3
4
5
6
[ 3420.877074] sd 4:0:0:0: [sdd] Write Protect is off
[ 3420.877081] sd 4:0:0:0: [sdd] Mode Sense: 43 00 00 00
[ 3420.877653] sd 4:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3420.884367]  sdd: sdd1 sdd2
[ 3420.886547] sd 4:0:0:0: [sdd] Attached SCSI removable disk
[ 3664.644705]  sdd: sdd1 sdd2

Montage de la “Clé USB” (sdd1 qui correspond au boot) sur un dossier temporaire :

1
2
sudo mkdir -p /mnt/temp        #Créer un dossier de montage temporaire
sudo mount /dev/sdd1 /mnt/temp #montage de la partition boot sur /mnt/temp

Modifier le fichier **temp/config.txt **

1
sudo nano /mnt/temp/config.txt

ajouter en fin de fichier pour activer la liasion série

1
enable_uart=1

Sauvegarde Crtl x y ou o Entrée
fichier ssh vide dans la partition boot

1
sudo touch /mnt/temp/ssh

Démontage et insertion “Clé USB” dans le raspberry :

1
sudo umount /mnt/temp

Après avoir inséré la “Clé USB” dans son logement ,connecté le cordon réseau et la liaison série puis brancher la micro-usb d’alimentation sur la carte raspberry et enfin le DC-Pack sur le secteur.
On peut se connecter soit par la liaison série (A) ou SSH (B)

A - minicom ou screen et un adatateur USB/Série

Interface USB/Série Raspberry
GND 6 (GND)
Rxd 8 (Txd)
Txd 10 (Rxd)

lancer le logiciel de communication (minicom ou screen)

1
2
sudo minicom # Débit/Parité/Bits:115200 8N1,Contrôle de flux matériel:Non,Contrôle de flux logiciel:Non  
sudo screen /dev/ttyUSB0 115200

B - Trouver l’adresse avec nmap et utiliser ssh

1
sudo nmap -T4 -sP 192.168.0.0/24
1
2
3
4
5
[...]
Nmap scan report for 192.168.0.5
Host is up (0.00037s latency).
MAC Address: B8:27:EB:54:7E:6A (Raspberry Pi Foundation)
[...]

Liens

Connexion ssh et mise à jour

Connexion SSH

1
ssh pi@192.168.0.5

login/motde passe : pi/raspberry

Mise à jour des paquets

1
sudo apt update && sudo apt -y upgrade

Installer utilitaires

1
sudo apt install rsync curl tmux jq figlet git dnsutils tree -y

IPV4-V6 statiques Raspberry PI OS Lite

De nombreux projets impliquant des installations sans bureau nécessitent de le rendre disponible toujours avec la même adresse IP. Cette condition peut être réalisée en gérant la mise en réseau dans les paramètres de Raspberry PI OS Lite depuis la console du terminal.

Comportement par défaut
Raspberry Pi utilise le démon dhcpcd pour configurer TCP/IP sur toutes ses interfaces réseau. Cela comprend l’attribution d’une adresse IP à chaque interface, la définition de masques de réseau et la configuration de serveurs de noms de résolution DNS.

Par défaut, Raspberry Pi OS tente de configurer automatiquement toutes les interfaces réseau par DHCP, en revenant à des adresses privées automatiques dans la plage 169.254.0.0/16 en cas d’échec du DHCP.

Les versions précédentes de Raspberry Pi OS utilisaient le fichier /etc/network/interfaces pour la configuration des interfaces réseau. Si une interface est répertoriée dans ce fichier, tous les paramètres qui y figurent auront la priorité sur ce qui se trouve dans le fichier /etc/dhcpcd.conf.

Raspberry PI OS liste généralement 2 interfaces (pour les modèles SANS interface physique ethernet) ou 3 interfaces (tous les autres modèles) :

  • wlan0 : pour la connexion au réseau WiFi
  • eth0 : pour une connexion de réseau câblé Ethernet
  • lo : interface de bouclage utilisée par le système d’exploitation pour s’identifier (avec l’adresse IP 127.0.0.1)

Vous pouvez lister toutes ces interfaces et leur statut avec la commande de terminal suivante :

1
ip a

Gérer correctement les configurations de mise en réseau

IPV4 : On définit l’adresse statique 192.168.0.46

IPV6 : On définit l’adresse statique 2a01:e0a:2de:2c72::1

La carte sera joignable de l’internet que par son adresse IPV6
Modifier la FreeBox : Paramètres de la Freebox → Configuration IPV6
NextHop Freebox permet d’attribuer une adresse IPV6

Prefixe : 2a01:e0a:2de:2c72:://64
Next Hop: fe80::49e0:245b:b415:76 → Adresse inet6 scope link
Adresse IPV6 lien local : fe80::8e97:eaff:fe39:66d6

éditer le fichier dhcpcd.conf :

1
sudo nano /etc/dhcpcd.conf

La configuration par défaut (sans paramètres d’interface) utilise le DHCP pour configurer les interfaces eth0 et wlan0.

Pour rendre votre adresse IP d’interface ethernet statique, veuillez ajouter ces lignes à la fin du fichier

1
2
3
4
5
interface eth0
static ip_address=192.168.0.48/24
static ip6_address=2a01:e0a:2de:2c72::1/64
static routers=192.168.0.254
static domain_name_servers=192.168.0.46 192.168.0.254 fe80::8e97:eaff:fe39:66d6

Modifier le mot de passe pi

1
sudo passwd pi

Redémarrer le raspberry…

Connexion pi/raspberry via SSH

1
ssh pi@192.168.0.48

Vérifier les adresses IP

1
ip a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:54:7e:6a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.48/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 2a01:e0a:2de:2c70:eed1:b8ac:1f76:88ed/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86225sec preferred_lft 86225sec
    inet6 2a01:e0a:2de:2c72::1/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::49e0:245b:b415:76/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b8:27:eb:01:2b:3f brd ff:ff:ff:ff:ff:ff

Locals

1
2
export   LC_ALL=C
sudo dpkg-reconfigure locales

Paramètres régionaux

1
sudo dpkg-reconfigure tzdata

1
timedatectl
1
2
3
4
5
6
7
               Local time: Thu 2021-02-25 20:26:08 CET
           Universal time: Thu 2021-02-25 19:26:08 UTC
                 RTC time: n/a
                Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Clavier fr

1
sudo nano /etc/default/keyboard
1
2
3
4
5
6
7
8
9
10
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"

SSH + Clés

sur l'ordinateur de bureau
Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé xs35v2 pour une liaison SSH avec le serveur KVM.

1
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/rpi3b-ed25519

Envoyer la clé publique sur le serveur KVM

1
scp ~/.ssh/rpi3b-ed25519.pub pi@192.168.0.48:/home/pi/

sur le Raspberry PI 3
Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys

1
$ cd ~

Sur le KVM ,créer un dossier .ssh

1
2
mkdir -p .ssh
cat /home/$USER/rpi3b-ed25519.pub >> /home/$USER/.ssh/authorized_keys

et donner les droits

1
chmod 600 /home/$USER/.ssh/authorized_keys

effacer le fichier de la clé

1
rm /home/$USER/rpi3b-ed25519.pub

Modifier la configuration serveur SSH

1
sudo nano /etc/ssh/sshd_config

Modifier

1
2
Port = 55029                # si souhaité sinon 22
PasswordAuthentication no

Relancer openSSH

1
sudo systemctl restart ssh

Accès depuis le poste distant avec la clé privée

1
ssh -p 55029 -i ~/.ssh/rpi3b-ed25519 pi@192.168.0.48

Domaine et certificats rnmkcy.eu

dns
Zone dns OVH

1
2
3
4
5
6
$TTL 3600
@	IN SOA dns110.ovh.net. tech.ovh.net. (2021021700 86400 3600 3600000 300)
             IN NS     dns110.ovh.net.
             IN NS     ns110.ovh.net.
             IN AAAA   2a01:e0a:2de:2c72::1
domotic     IN CNAME  rnmkcy.eu.

Certificats Let’s Encrypt Installer acme: Serveur , installer et renouveler les certificats SSL Let’s encrypt via Acme

1
2
3
4
5
6
cd ~
sudo apt -y install socat git # prérequis
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install # se déconnecter pour prise en compte
# export des clé API OVH

Générer les certificats pour le domaine rnmkcy.eu

1
    acme.sh --dns dns_ovh --ocsp --issue --keylength ec-384 -d 'domotic.rnmkcy.eu'
1
2
3
4
[vendredi 26 février 2021, 07:40:46 (UTC+0100)] Your cert is in  /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/domotic.rnmkcy.eu.cer 
[vendredi 26 février 2021, 07:40:46 (UTC+0100)] Your cert key is in  /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/domotic.rnmkcy.eu.key 
[vendredi 26 février 2021, 07:40:47 (UTC+0100)] The intermediate CA cert is in  /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/ca.cer 
[vendredi 26 février 2021, 07:40:47 (UTC+0100)] And the full chain certs is there:  /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/fullchain.cer 

Les liens

1
2
3
4
sudo ln -s /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/fullchain.cer /etc/ssl/private/domotic.rnmkcy.eu-fullchain.pem   # full chain certs
sudo ln -s /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/domotic.rnmkcy.eu.key /etc/ssl/private/domotic.rnmkcy.eu-key.pem     # cert key
sudo ln -s /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/domotic.rnmkcy.eu.cer /etc/ssl/private/domotic.rnmkcy.eu-chain.pem   # cert domain
sudo ln -s /home/pi/.acme.sh/domotic.rnmkcy.eu_ecc/ca.cer /etc/ssl/private/domotic.rnmkcy.eu-ca.pem                 # intermediate CA cert

Nginx light (OPTION)

Installer version light

1
sudo apt install nginx-light

Version

1
sudo nginx -v

nginx version: nginx/1.14.2

Modifier le fichier de configuration /etc/nginx/nginx.conf , on utilise TLS1.2 et TLS1.3 uniquement + ciphers off

1
2
3
4
5
6
7
8
9
[...]
	##
	# SSL Settings
	##

	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_prefer_server_ciphers off;

[...]

Modifier la configuration par défaut pour test

1
sudo nano /etc/nginx/sites-available/default 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name domotic.rnmkcy.eu;
    ssl_certificate /etc/ssl/private/domotic.rnmkcy.eu-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/domotic.rnmkcy.eu-key.pem;

    # TLS 1.3 only
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;
 
    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;
 
    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
 
    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/ssl/private/domotic.rnmkcy.eu-fullchain.pem;
 
    # replace with the IP address of your resolver
    resolver 192.168.0.46;

	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}

}

Vérification et relance

1
2
sudo nginx -t
sudo systemctl reload nginx

Lien https://domoticz.rnmkcy.eu

Cet article est sous licence CC BY 4.0 par l'auteur.