Installation et configuration d’Arch Linux ARM sur Raspberry Pi

Arch Linux ARM et Nextcloud sur Raspberry Pi

Configuration d'Arch Linux ARM

Pages 1 - 2 - 3 - 4

pont

L'installation d'Arch Linux ARM se fait depuis un ordinateur Linux. Pour les utilisateurs de Windows ou de MacOS, la solution la plus simple est de démarrer depuis un liveCD ou liveUSB Linux.

Nous allons installer un système headless (sans clavier ni écran reliés au Pi et sans serveur graphique). Il sera accessible dans un terminal SSH depuis l'ordinateur principal. Comme dans les guides précédents, le but est de configurer un serveur de fichier minimal afin de ne pas  alourdir le Pi.

Ce guide est valable pour le Raspberry Pi 2 et 3.

Pour une présentation générale de l'installation de Nextcloud sur Raspberry Pi, se reporter à la page d'introduction concernant Raspbian.

Copie du système Arch Linux ARM sur la carte micro-SD

Les instructions à entrer depuis l'ordinateur principal sont indiquées en vert, celles depuis le Raspberry Pi, en orange.

Les variables propres à chaque installation (nom de l'utilisateur, mots de passe, etc.) sont en rouge.

Comme dans tout guide Linux, les commandes à entrer depuis l'utilisateur habituel sont précédées du signe $, les commandes depuis l'utilisateur "root" du signe #.

 

Nous allons commencer par repérer le nom de device de la carte microSD sur laquelle nous allons copier le système Arch Linux ARM.

Sans la carte, sur l'ordinateur principal :

$ lsblk

On insère la carte microSD dans l'ordinateur ou le lecteur de carte, on répète la commande :

$ lsblk

Le nouveau nom qui apparaît représente la carte microSD. C'est le nom racine qui nous intéresse (sdc par exemple et non sdc1).

On se met en utilisateur racine :

$ sudo su

ou

$ su

 

Suivre ensuite les instructions données sur le site Arch Linux ARM :

https://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2#installation

Première connexion à Arch Linux ARM sur le Pi

Une fois la carte microSD prête, on l'insère dans le Raspberry Pi non branché, on le relie à la box par un câble ethernet et enfin à l'alimentation.

Il nous faut maintenant trouver l'adresse du Pi sur le réseau interne.

Si on ne la connaît pas encore, on cherche déjà notre adresse inet (l'adresse de notre réseau interne) :

$ ip -4 a | grep inet

Il faut chercher la ligne inet correspondant à enp3s0 (ou eth0) :

inet 192.168.0.11/24 brd 192.168.0.255 scope global dynamic enp3s0

Les trois premiers nombres nous donnent le réseau à scanner avec nmap pour trouver l'adresse du Raspberry Pi :

$ sudo nmap -sP 192.168.0.0/24

Nmap scan report for 192.168.0.15
Host is up (0.00048s latency).
MAC Address: B8:27:C2:EB:20:28 (Raspberry Pi Foundation)
Nmap scan report for 192.168.0.254
Host is up (0.0014s latency)
(...)

Dans cet exemple, le Pi est sur l'adresse 192.168.0.15.

Pour se connecter en SSH sur le Pi, il suffit maintenant de rentrer la commande suivante :

$ ssh alarm@192.168.0.15

Il nous est demandé d'accepter d'ajouter la clé SSH du Pi sur notre ordinateur :

The authenticity of host '192.168.0.15 (192.168.0.15)' can't be established.
ECDSA key fingerprint is SHA256:nb(...)Mk.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.0.15' (ECDSA) to the list of known hosts.

Puis le mot de passe du Pi (alarm) :

alarm@192.168.0.15's password:

Welcome to Arch Linux ARM

Website: http://archlinuxarm.org
 Forum: http://archlinuxarm.org/forum
 IRC: #archlinux-arm on irc.Freenode.net
[alarm@alarmpi ~]$

Nous avons maintenant accès au Pi par SSH.

Configuration et sécurisation d'Arch Linux ARM

Les commandes suivantes sont à entrer en tant qu'administrateur (root). Le mot de passe par défaut est : root.

[alarm@alarmpi ~]$ su 
Password: 
[root@alarmpi alarm]# 

Mise à jour du système

On commence par mettre à jour Arch Linux ARM avec l'utilitaire Pacman.

# pacman -Syyu

Ne pas s'inquiéter de l'avertissement suivant pendant la mise à jour :

==> WARNING: No modules were added to the image. This is probably not what you want.

et redémarrer le Pi après la mise à jour :

# reboot

 

Configuration de base :

 

On se reconnecte par SSH sur le Pi :

$ ssh alarm@192.168.0.15

On passe en administrateur (mot de passe = root)

$ su

 

Installation de sudo

sudo permet de donner à l'utilisateur de base les droits administrateurs temporairement.

# pacman -S sudo
# sudo visudo

Dans le fichier repérer la ligne :

# %wheel ALL=(ALL) ALL

Il faut la décommenter (supprimer le # en début de ligne)

%wheel ALL=(ALL) ALL

Pour enregistrer et quitter, taper :

:wq

 

Diminution de la mémoire graphique

Dans la mesure où nous n'utiliserons pas d'application graphique sur le Pi, nous allons gagner de la mémoire vive en diminuant la quantité allouée au GPU :

# nano /boot/config.txt

Remplacer :

gpu_mem=64

Par :

gpu_mem=16

Ctrl-o pour enregistrer, Ctrl-x pour quitter nano.

 

Configuration du système

 

Comme pour toute installation d'un système Arch Linux, nous allons maintenant passer à la configuration du système minimal. On peut se reporter au guide d'installation d'Arch Linux du système d'exploitation.

 

Nom d'hôte

J'ai choisi ici "myweb" comme nom d'hôte.

# echo myweb > /etc/hostname

# nano /etc/hosts

On rajoute une ligne pour notre nom d'hôte :

#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost 
::1 localhost.localdomain localhost

127.0.1.1 myweb.localdomaine myweb

# End of file

 

Localisation

 

# echo LANG=fr_FR.UTF-8 >> /etc/locale.conf
# echo LANGUAGE=fr_FR >> /etc/locale.conf
# echo LC_ALL=C >> /etc/locale.conf
# echo KEYMAP=fr-latin9 >> vconsole.conf
# echo FONT=lat9w-16 >> /etc/vconsole.conf
# nano /etc/locale.gen

Décommenter (enlever le #) les lignes suivantes :

en_US.UTF-8 UTF-8
fr_FR.UTF-8 UTF-8

Ctrl-o pour enregistrer, Ctrl-x pour quitter.

# locale-gen
# ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime

 

Fichier d'échange

 

Par défaut, Arch Linux ARM ne propose pas de fichier d'échange afin de préserver la carte SD de nombreuses écritures et d'éviter des ralentissements. Le fichier d'échange permet de copier une partie de la mémoire vive sur la carte SD si celle-ci commence à saturer.

Si on souhaite disposer de cet espace d'échange, on peut le mettre dans un fichier spécifique. On indiquera toutefois au système d'exploitation de ne l'utiliser qu'en dernier ressort (réglage de la "swappiness") :

# fallocate -l 512M /swapfile
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
# echo 'vm.swappiness=1' > /etc/sysctl.d/99-sysctl.conf
# nano /etc/fstab

Placer à la fin du fichier :

/swapfile none swap defaults 0 0

 

Journaux de log en mémoire vive

 

Le système d'exploitation écrit régulièrement des logs sur la carte SD afin d'enregistrer les différents évènements et erreurs concernant le système.

Nous allons demander à ce que ces journaux soient écrits en mémoire vive afin de préserver la carte. À noter toutefois, ces journaux ne survivront pas au redémarrage du Raspberry Pi.

Nous configurons l'ensemble pour que les journaux soient compressés et n'excèdent pas la taille de 250 M pour ne pas saturer la mémoire vive.

# nano /etc/systemd/journald.conf

Rajouter à la fin du fichier :

Storage=volatile
 Compress=yes
 RuntimeMaxUse=250M
 MaxLevelStore=warning

Dans l'hypothèse où l'on souhaiterait retrouver la possibilité d'écrire les journaux sur le disque plutôt qu'en mémoire vive, il suffira d'effacer ces lignes.

 

Ajout d'un utilisateur et changement des mots de passe

 

On va ajouter un nouvel utilisateur (ici soozxuser) et effacer l'utilisateur par défaut (alarm) afin de limiter les attaques. Nous en profiterons pour changer le mot de passe root dans le même but.

# useradd -m -g users -G wheel soozxuser
# passwd soozxuser
New password: 
Retype new password: 
passwd: password updated successfully

 

Changement du mot de passe root :

# passwd
New password: 
Retype new password: 
passwd: password updated successfully

 

Pour supprimer l'utilisateur alarm, il faut d'abord se connecter avec notre nouvel utilisateur.

# reboot
$ ssh soozxuser@192.168.0.15
$ sudo userdel -r alarm

 

Sécurisation de ssh

 

Je conseille fortement d'utiliser une authentification par clé plutôt que par mot de passe pour se connecter par ssh pour des raisons de sécurité. Voir le guide consacré à cette manipulation.

 

Modifier le fichier sshd_config pour obtenir les instructions suivantes

$ sudo nano /etc/ssh/sshd_config
(...)
 # Authentication:

LoginGraceTime 20
 PermitRootLogin no
 StrictModes yes
 (...)
 # To disable tunneled clear text passwords, change to no here!
 PasswordAuthentication yes # à commenter si on utilise une clé SSH

# PasswordAuthentification no # à décommenter si on utilise une clé SSH
 (...)
 MaxStartups 10:30:60
 (...)

# A rajouter à la fin du fichier
 AllowUsers soozxuser
 AddressFamily inet

 

On redémarre le service SSH

$ sudo systemctl restart sshd

 

On vérifie ensuite son fonctionnement :

$ sudo systemctl status sshd

(cela doit indiquer "running").

 

Nous avons terminé la configuration de base d'Arch Linux ARM. Nous pouvons passer maintenant à l'installation du serveur web LAMP avec PHP-FPM.

La suite du guide peut s'appliquer à n'importe quel système Arch Linux et n'est plus spécifique au Raspberry Pi.