omega.ducouet.fr

Le site web Omega est auto hébergé sur une carte Odroid Xu4. Cette carte fonctionne sous Armbian Buster (Une version Arm de Debian). Le serveur Web est Apache.

Xu4

Bienvenue

tips

/etc/rc.local vs systemd

Systemd est un gestionnaire de démarrage et de service pour Linux. Il est conçu pour être rétrocompatible avec les scripts d'initialisation SysV et fournit un certain nombre de fonctionnalités telles que le démarrage parallèle des services systèmes au moment du démarrage, l'activation à la demande des démons ou la logique de contrôle de service basée sur les dépendances.

Systemd introduit le concept d'unités systemd. Ces unités sont représentées par des fichiers de configuration d'unité situés dans l'un des répertoires :

Répertoire Description
/usr/lib/systemd/system/ Fichiers d'unités systemd distribuées avec des paquets.
/run/systemd/system/ Les fichiers d'unités systemd créées pendant l'exécution. Ce répertoire a priorité sur le répertoire de fichiers d'unités de service installées.
/etc/systemd/system/ le répertoire /etc/systemd/system/ est réservé aux fichiers d'unité créés ou personnalisés par l'administrateur système.
Exemple pour ajouter une adresse IPv6 fixe.
Pour connaître interface et l'adresse de BROADCAST :
freebox@test:~$ ip a
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet6 2a01:e0a:195:1040:9cb4:fbff:fe42:ae65/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86376sec preferred_lft 86376sec
    inet6 fe80::9cb4:fbff:fe42:ae65/64 scope link 
       valid_lft forever preferred_lft forever
freebox@test:~$

On peut voir que l'interface se nome enp0s3. Il existe une adresse ipv6 publique ou routable (scope global) allouée dynamiquement (dynamic)2a01:e0a:195:1040:9cb4:fbff:fe42:ae65/64. Une adresse IPv6 est longue de 128 bits et se compose de huit champs de 16 bits, chacun étant délimité par deux-points (:). Chaque champ doit contenir un nombre hexadécimal Les trois champs situés complètement à gauche (48 bits) contiennent le préfixe alloué à votre réseau par un FAI. Le champ suivant correspond à l'ID de sous-réseau de 16 bits. Les quatre champs les plus à droite (64 bits) contiennent l'ID d'interface, elle est soit configurée automatiquement à partir de l'adresse MAC de l'interface, soit configurée manuellement. (Pour en savoir plus ...)

On créer un fichier pour ajouter une address IPv6 fixe :
freebox@test:~$ sudo nano /etc/systemd/system/ipv6.service
[Unit]
Description=Add IPv6
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/ip -6 addr add 2a01:e0a:195:1040:fac9:219b:207e:a77a/64 dev enp0s3
ExecStartPost=/sbin/ip -6 route add default via 2a01:e0a:195:1040::1
RemainAfterExit=true
ExecStop=/sbin/ip -6 addr del 2a01:e0a:195:1040:fac9:219b:207e:a77a/64 dev enp0s3
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
On lance manuellement pour la première fois :
freebox@test:~$ sudo systemctl start ipv6
On active la création au démarrage :
freebox@test:~$ sudo systemctl enable ipv6
Created symlink /etc/systemd/system/multi-user.target.wants/ipv6.service → /etc/systemd/system/ipv6.service.
Et on vérifie
freebox@test:~$ ip a
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet6 2a01:e0a:195:1040:fac9:219b:207e:a77a/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 2a01:e0a:195:1040:9cb4:fbff:fe42:ae65/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86093sec preferred_lft 86093sec
    inet6 fe80::9cb4:fbff:fe42:ae65/64 scope link 
       valid_lft forever preferred_lft forever
freebox@test:~$ 

IPv6 et fichier rc.local

Vous avez plusieurs machines dérrière une box ? Vous avez qu'une adresse IPv4 publique qui ne peut donc être "natter" que sur une machine. Aujourd'hui (Depuis même un moment), vous avez plus personnellement plus adresses IPv6 qu'il n'existe IPv4 dans le monde ! Chaque machine communique avec sa propre adresse sur internet. Il n'y a plus de NAT. Pour améliorer l'anonymat, cette adresse change régulièrement, mais dans le cas d'un serveur, il faut fixer cette adresse.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Add static Ipv6 
/sbin/ip -6 addr add 2a01:e0a:195:3040:fac9:219b:207e:d823/64 dev enx001e06300937
/sbin/ip -6 route add default via 2a01:e0a:195:3040::1

exit 0
        

Le Ventilateur

Le bruit du ventilateur peut être gênant selon la pièce où l'Xu4 est installé. Il est possible de définir 4 vitesses et 3 seuils de déclenchement de ces vitesses. Les vitesses de rotation du ventilateur sont dans le fichier /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed ; Les seuils de déclenchement dans les fichiers /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp (+trip_point_1_temp et trip_point_2_temp).
Ces fichiers ne sont pas de véritables fichiers dont les modifications peuvent être enregistrées. Les modifications doivent être refaites à chaque démarage. Malgrés tout, il est possible d'automatiser ces modifications dans le fichier /etc/rc.local.
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# manage the fan

if [ -f /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp ]; then
    echo '60000' > /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
    echo '70000' > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
    echo '80000' > /sys/devices/virtual/thermal/thermal_zone0/trip_point_2_temp
fi

if [ -f '/sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed' ]; then
    #set fan speed
    echo "38 120 180 240" > /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
fi

exit 0