Arch Linux sur un Raspberry Pi

14 juillet 2014 - Mots-clés : Liens Linux Raspberry Pi

Cet article décrit l'installation de Linux Arch sur une carte Rasberry Pi. Je me suis inspiré de nombreux articles disponibles sur le web (références dans la partie « liens » à la fin de l'article).

Flashage d'une carte SD

Cette étape consiste à écrire l'image binaire de Linux Arch Arm sur une carte mémoire SD que l'on insérera dans le Raspberry Pi pour démarrer dessus.

Téléchargez une image bootable :

Suivre à la lettre les instructions de ce site : SD Card Creation

Boot du Raspberry

Ejectez la carte SD et insérez la dans le connecteur adéquat de la Raspberry pi (RBPI).

On se connecte au RBPI par réseau en ssh sur le compte alarm (mot de passe alarm) :

$ ssh alarm@<ip>
$ sudo su
#

Modification de la configuration

Modifiez le fichier /boot/config.txt en y ajoutant les lignes suivantes qui dépendent du modèle de Raspberry Pi.

  • pour les Raspberry Pi A et B :
device_tree=bcm2708-rpi-b.dtb
  • pour les Raspberry Pi A+ et B+ :
device_tree=bcm2708-rpi-b-plus.dtb

Assignation d'ne adresse IP fixe

Déterminez le nom de l'interface réseau :

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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 fq_codel state UP group default qlen 1000
    link/ether b8:27:eb:e2:08:a3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.137/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fee2:8a3/64 scope link
       valid_lft forever preferred_lft forever

On voit ici que le nom de l'interface est eth0.

Créez le fichier /etc/systemd/network/eth0.network avec ce contenu :

[Match]
Name=eth0

[Network]
Address=192.168.1.55/24
Gateway=192.168.1.1

Et redémarrez le service systemd-networkd.service :

systemctl restart systemd-networkd.service

Création d'un utilisateur

Admettons que l'on veuille créer l'utilisateur franck par exemple :

# useradd -m -g users -s /bin/bash -G audio,disk,wheel franck

Clé publique ssh

Pour éviter d'entrer à chaque fois son mot de passe de connexion, copiez votre clé publique ssh dans votre compte sur la raspberry pi (à exécuter sur la machine hôte) :

$ ssh-copy-id franck@<adresse ip du raspberry pi>

Nom de la machine

Modifiez son nom dans le fichier /etc/hostname.

Mise à jour des packages

Maintenant qu'on peut se connecter au RBPI en utilisant ssh, on peut lancer une mise à jour du système :

# pacman -Syu

S'il existe des fichiers de configuration, ils ne sont pas écrasés et les nouveaux fichiers sont nommés avec une extension .pacnew.

Mise à l'heure

Installation du package :

# pacman -S ntp

Paramètrage du fuseau horaire :

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

Démarrage du serveur de temps :

# systemctl enable ntpd.service
# date
Mon Jul 14 01:30:48 CEST 2014

Son

Installez alsa-utils :

# pacman -S alsa-utils

Sélectionnez la sortie audio :

# amixer cset numid=3 s

où s vaut :

  • 0 : detection automatique
  • 1 : sortie jack de la carte
  • 3 : HDMI, c'est à dire les haut-parleurs du téléviseur

Ensuite, on peut tester la sortie audio sélectionnée :

# speaker-test -t sine -f 440 -c 2

Sudo

Afin de permettre aux utilisateur de passer root pour exécuter des commandes, modifiez le fichier /etc/sudoers :

# pacman -S sudo
# visudo

et décommentez la ligne suivante, sachant les les simples utilisateurs font partie du groupe wheel :

## Uncomment to allow members of group wheel to execute any command
%sudo ALL=(ALL) ALL

Installation de Python

Python n'est pas présent de base, il faut donc l'installer :

# pacman -S python
# pacman -S python-pip
# pacman -S python-virtualenv

Désormais, la gestions des packages Python se fera exclusivement avec pip.

Réseau en wifi

On ne va pas monopoliser le téléviseur pour le RBPI, on va donc s'y connecter en ssh par wifi.

Je possède une clé USB wifi qui a déjà fait ses preuves sur un ordinateur portable, je l'insère donc dans le dernier connecteur USB.

# lsusb
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

Générez un profil de connexion :

# wifi-menu -o

cela crée un fichier de profil dans le répertoire /etc/netctl. Enfin, pour permettre la connexion au wifi au démarrage, il faut créer un service de systemd :

# netctl enable <profil>

et juste pour la première fois, on démarre le wifi à la main :

# netctl start <profil>

Pour assigner une adresse IP statique, vous pouvez modifier le fichier /etc/netctl/<profil>.conf, remplacez :

IP=dhcp

par (adaptez les adresses à votre cas personnel) :

IP=static
Address=('192.168.1.220/24')
Gateway='192.168.1.1'
DNS=('212.27.40.240')