Mise en route Orange Pi Zero 2 – Armbian Bullseye

Orange Pi Zero 2

L’Orange PI Zero 2 est une carte de développement puissante offrant de nombreuses possibilités avec son processeur 4 coeurs 64 bits (H6), 1GB, ethernet, WIFI, Bluetooth, HDMI, USB pour environ 40€. Allez faire un tour sur aliexpress.com. Attention à ne pas le confondre avec l’Orange Pi Zero qui utilise un processeur H3, 32 bits.

Installation Operating System

Allez sur le site Armbian pour télécharger l’image de la version « Bullseye », version non stable à ce jour, pour l’Orange Pi Zero 2 . Flashez l’image sur une carte SD de minimum 16 Go. Connectez l’Orange Pi au réseau et trouvez son adresse IP. Connectez vous en ssh (logiciel Bitwise par exemple) avec l’utilisateur ‘root’ et le mot de passe ‘1234’.

Activez le bureau (Desktop) pour pouvoir accéder en mode graphique. Dans une fenêtre terminal :

armbian-config

Faite l’installation du Desktop. Une fois terminé, revenez au menu System et choisissez Enable Desktop

Avec la version d’Armbian Bullseye d’Octobre 2021 pour Orange Pi zero 2, arrivez à ce stade, cela plante…. Pas de mode graphique. Il semble manquer 941 fichiers. Il faut installer une version light du « Desktop » après l’activation dans Armbian-config et non avant. Pour cela, dans une fenêtre terminal sous root tapez :

apt-get install lightdm

Cela active le Desktop pour l’utilisateur non root uniquement.

Dans la fenêtre ‘Terminal’ faites les mises à jour:
apt-get update
apt-get upgrade

Installez TightVNC server pour avoir un accès graphique à distance via l’extension VNC client du navigateur Chrome ou TightVNC pour Windows.
apt-get install tightvncserver

Installez xfonts-base pour éviter l’erreur  » could not open default font ‘fixed’  » au lancement de vncserver.

apt-get install xfonts-base

Passez sur un compte utilisateur et non root:

su utilisateur

Lancez VNC en mode manuel :
vncserver :1

Il vous sera demandé un mot de passe. Ne mettez pas plus de 8 caractères. Vous pouvez à présent tester VNC avec par exemple l’extension VNC de chrome en se connectant sur ‘adresse_ip_orangepi:5901’.

Pour un lancement automatisé on va créer un fichier de script:
sudo nano /usr/local/bin/mon_vnc.sh

#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1920x1080"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;
stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;
restart)
$0 stop
$0 start
;;
esac
exit 0

Copiez le texte ci-dessus et copiez le dans nano avec un click bouton droit si vous utilisez Bitwise SSH. Pensez à rendre ce fichier executable.
 sudo chmod +x /usr/local/bin/mon_vnc.sh

On peut à présent réaliser les 3 opérations suivantes :
/usr/local/bin/mon_vnc.sh start
/usr/local/bin/mon_vnc.sh stop
/usr/local/bin/mon_vnc.sh restart

Pour un lancement automatique de VNC au boot de l’orange pi on crée un service dans ‘systemd’.
sudo nano /lib/systemd/system/mon_vnc.service

[Unit]
 Description=Manage Mon Serveur VNC 
 [Service]
 Type=forking
 ExecStart=/usr/local/bin/mon_vnc.sh start
 ExecStop=/usr/local/bin/mon_vnc.sh stop
 ExecReload=/usr/local/bin/mon_vnc.sh restart
 User=username
 [Install]
 WantedBy=multi-user.target

Remplacez username par l’utilisateur. Pour la prise en compte de ce nouveau service dans systemd.
systemctl daemon-reload
systemctl enable mon_vnc.service

A présent vous pouvez rebooter votre système et vérifier avec VNC la connection en mode graphique.
systemctl start mon_vnc.service
systemctl stop mon_vnc.service
systemctl restart mon_vnc.service
systemctl status mon_vnc.service

A présent vous avez un OrangePi Zero 2 contrôlable à distance depuis un PC sur votre réseau.

Bullseye Desktop

Après un jour de travail avec un desktop uniquement au niveau utilisateur et non root, ancienne version avec le pingouin, un desktop est apparu pour root au format Bullseye. Je suppose que c’est arrivé suite à un essai de lancement du serveur vnc étant sous root. vncserver :1

Installation Samba

Pour échanger des fichiers facilement entre l’OrangePi et un PC sur le réseau, il est intéressant d’installer Samba qui permettra de le voir directement.

Installez Samba.
apt-get install samba samba-common-bin

Il faut modifier le fichier de configuration pour l’adapter au réseau et définir les autorisations.
 nano /etc/samba/smb.conf

Tout en bas du fichier rajouter les lignes suivantes :

[OpiZero2]
comment =  Samba on Orange Pi
path = /
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
share modes = yes 

Avec path = / on accède directement à la racine du système pour avoir la liberté de naviguer partout. Attention à mettre, si besoin, les autorisations chmod … qui vont bien.

Relancez samba .
systemctl restart smbd.service

A présent l’OrangePi devrait être visible des autres PC sur le réseau. On peut changer son nom sur le réseau en tapant dans une fenêtre de terminal :
hostnamectl set-hostname nouveau-nom

Installation du serveur web Apache 2

Apache2 est l’une des applications de serveur web les plus utilisées au monde, robuste et fiable. Elle tourne parfaitement sur des SBC (Single-Board Computer) comme l’Orange Pi Zéro 2.

Commencez par une mise à jour du système:

apt-get update
apt-get upgrade

Procédez à l’installation :

apt install apache2 -y

Testez le fonctionnement d’Apache en ouvrant la page web à l’adresse IP de votre Orange PI

http://<adresse IP> ex: http://192.168.0.100

Par défaut, le site web se trouve dans le dossier /var/www/html/et Apache retourne le fichier/var/www/html/index.html.

Le fichier de configuration d’Apache est à adapter, en particulier si vous souhaitez mettre des pages dynamiques dans le dossier /var/www/html/cgi-bin.

nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>

	ServerName localhost

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html

	ScriptAlias "/cgi-bin/" "/var/www/html/cgi-bin/"
	<Directory "/var/www/html/cgi-bin/">
                AllowOverride None
                Options +ExecCGI
                AddHandler cgi-script .cgi .pl .py
                Require all granted
        </Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Activez le module cgid pour les pages dynamiques en tapant :

a2enmod cgid
puis
systemctl restart apache2

TEST DES SCRIPTS DYNAMIQUES

CGI (Common Gateway Interface) définit une méthode d’interaction entre un serveur web et des programmes générateurs de contenu externes, plus souvent appelés programmes CGI ou scripts CGI. Il s’agit d’une méthode simple pour ajouter du contenu dynamique à votre site web en utilisant votre langage de programmation préféré comme perl ou python. Ici seul dans le dossier cgi-bin les programmes seront exécutables comme défini par la directive ScriptAlias du fichier de configuration d’Apache. 

Dans le dossier cgi-bin, mettez un petit fichier ‘test.py’ en python pour tester son exécution. Rendez ce fichier executable.

#!/usr/bin/python3

print("Content-type:text/html\n\n")
print("hello")

Appelez la page depuis un navigateur.

http://<adresse IP>/cgi-bin/test.py

Si vous avez une erreur serveur, vérifiez que votre page test.py est écrite avec une fin de ligne LF adaptée Unix et non CR+LF de windows.

À présent vous disposez d’un système d’exploitation complet avec un serveur web sur le port 80.

Articles sur l’Orange Pi Zero 2