Prise en main de la Raspberry Pi

Notions de base

Le Raspberry Pi est un nano-ordinateur monocarte à processeur ARM conçu par le créateur de jeux vidéo David Braben, dans le cadre de sa fondation Raspberry Pi.

Cet ordinateur, qui a la taille d’une carte de crédit, est destiné à encourager l’apprentissage de la programmation informatique. Il permet l’exécution de plusieurs variantes du système d’exploitation libre GNU/Linux et des logiciels compatibles. Il est fourni nu (carte mère seule, sans boîtier, alimentation, clavier, souris ni écran) dans l’objectif de diminuer les coûts et de permettre l’utilisation de matériel de récupération.

Les premiers exemplaires ont été mis en vente le 29 février 2012 pour environ 25 €. Début 2015, plus de cinq millions de Raspberry Pi ont été vendus. De multiples versions ont été développées, on trouve les dernières à un peu plus de 30€ pour le B+ et à un peu plus de 40€ pour le Pi 2 (2015).

Le Raspberry Pi (B et B+) possède un processeur ARM11 à 700 MHz. Il inclut 2 ou 4 ports USB, un port RJ45 et 512 Mo de mémoire vive. Le Raspberry Pi 2 est équipé d’un processeur Broadcom BCM2836, quatre cœurs ARMv7 à 900 MHz, accompagné de 1 Go de RAM. Il possède les mêmes dimensions et connectiques que le modèle B+.

Lien : Tableau comparatif

Terminologie

Linux
Linux est le nom donné au système d’exploitation GNU/Linux. Il associe des éléments essentiels du projet GNU et d’un noyau Linux. Le noyau Linux est un noyau de système d’exploitation de type UNIX. Le noyau Linux est un logiciel libre développé essentiellement en langage C par des milliers de bénévoles et salariés communiquant par Internet. Le noyau Linux a été créé en 1991 par Linus Torvalds pour les compatibles PC construits sur l’architecture processeur x86. Depuis, il a été porté sur nombre d’architectures dont m68k, PowerPC, StrongARM, Alpha, SPARC, MIPS, etc. Il s’utilise dans une très large gamme de matériel, des systèmes embarqués aux superordinateurs, en passant par les ordinateurs personnels.
Noyau (kernel)
Le noyau est le cœur du système, c’est lui qui s’occupe de fournir aux logiciels une interface pour utiliser le matériel.
Système d’exploitation
Un système d’exploitation (souvent appelé OS pour Operating System) est l’ensemble de programmes central d’un équipement informatique qui sert d’interface entre le matériel et les logiciels applicatifs. C’est donc une couche logicielle (software) qui permet et coordonne l’utilisation du matériel (hardware) entre les différents programmes d’application. Un système d’exploitation est typiquement composé : d’un noyau, de bibliothèques, d’un ensemble d’outils système et de programmes applicatifs de base.
Distribution Linux
Une distribution GNU/Linux est un ensemble de logiciels libres, assemblés autour du noyau Linux et de paquets GNU. Elles comprennent le plus souvent un logiciel d’installation et des outils de configuration.
GUI
C’est une interface graphique (GUI pour Graphical User Interface) est un dispositif de dialogue homme-machine (IHM), dans lequel les objets à manipuler sont dessinés sous forme de pictogrammes à l’écran. Les interfaces graphiques sont mises en œuvre par un ensemble de logiciels souvent inclus dans les systèmes d’exploitation (Windows) ou fournis avec eux par les distributions (Linux).
CLI
C’est une interface en ligne de commande (CLI pour Command Line Interface) dans laquelle la communication entre l’utilisateur et l’ordinateur s’effectue en mode texte : l’utilisateur tape une ligne de commande, c’est-à-dire du texte au clavier pour demander à l’ordinateur d’effectuer une opération et l’ordinateur affiche du texte correspondant au résultat de l’exécution des commandes tapées ou à des questions qu’un logiciel pose à l’utilisateur. Elle nécessite un interpréteur de commandes (un shell) qui fournit une invite de commande (prompt).
Terminal
Un terminal est le nom d’un logiciel d’émulation de terminal. Un émulateur de terminal, aussi appelé console virtuelle ou terminal virtuel, est un logiciel qui émule le fonctionnement d’un terminal informatique ce qui permet d’interagir avec les commandes Unix lorsqu’on utilise un environnement graphique.
Système embarqué
Un système embarqué est défini comme un système électronique et informatique autonome, souvent temps réel, spécialisé dans une tâche bien précise. Le terme désigne aussi bien le matériel informatique que le logiciel utilisé. Ses ressources sont généralement limitées. Cette limitation est généralement d’ordre spatial (encombrement réduit) et énergétique (consommation restreinte).
ARM
ARM est une société britannique spécialisée dans le développement d’architectures 32 bits de type RISC. Fondée sous la forme d’une coentreprise par Acorn Computers, Apple Computer (maintenant Apple Inc.) et VLSI Technology, ARM développe également un grand nombre de blocs de propriété intellectuelle (IP). Elle est basée sur un modèle économique particulier de la microélectronique : la conception de propriétés intellectuelles (Intellectual Properties). Ainsi il n’est pas possible d’acheter un processeur ARM comme c’est le cas pour Intel. Les cœurs ARM sont intégrés au sein de systèmes sur puces (SoC) complets. Les cœurs de processeurs ARM sont très présents dans les systèmes embarqués (téléphone mobile, console portable, tablette électronique). Les architectures ARM sont des architectures matérielles RISC 32 bits (ARMv1 à ARMv7) et 64 bits (ARMv8)1 développées par ARM Ltd depuis 1990 et introduites à partir de 1983 par Acorn Computers. Dotés d’une architecture relativement plus simple que d’autres familles de processeurs, et bénéficiant d’une faible consommation, les processeurs ARM sont devenus dominants dans le domaine de l’informatique embarquée, en particulier la téléphonie mobile et les tablettes. Ces processeurs sont fabriqués sous licence par un grand nombre de constructeurs.
SSH
SSH (Secure Shell) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Le protocole SSH a été conçu avec l’objectif de remplacer les différents programmes rlogin, telnet, rcp, ftp et rsh.
X11
X Window System ou X11 est un environnement graphique de type « fenêtré » qui gère l’interaction homme-machine par l’écran, la souris et le clavier de certains ordinateurs en réseau. Il est souvent appelé X Window à ne pas confondre avec x windows. C’est le système standard ouvert d’interaction graphique avec l’utilisateur sur les UNIX (Linux, BSD, etc.). La commande xhost permet de contrôler l’accès au serveur X Window System.
Raspbian
Raspbian est un système d’exploitation libre et gratuit fondé sur GNU/Linux/Debian et optimisé pour fonctionner sur un Raspberry Pi. Étant donné les ressources limitées de cet ordinateur, Raspbian utilise des logiciels réputés pour être légers tels que le gestionnaire de fenêtres LXDE et le navigateur Web Midori.
LXDE
LXDE est un environnement de bureau libre pour les systèmes de type Unix, tels que Linux ou BSD. Le nom LXDE est l’acronyme de “Lightweight X11 Desktop Environment” (environnement de bureau X11 léger).
Système de fichiers
Un système de fichiers (File System) est une façon de stocker les informations et de les organiser dans des fichiers sur des mémoires de masse comme un disque dur. Une telle gestion des fichiers permet de traiter, de conserver des quantités importantes de données ainsi que de les partager entre plusieurs programmes informatiques. Il offre à l’utilisateur une vue abstraite sur ses données et permet de les localiser à partir d’un chemin d’accès. Un système de fichiers s’installe sur une partition (cf. fdisk). On crée un système de fichiers par une opération de formatage.
Partition
Une partition est une partie d’une mémoire de masse (disque dur par exemple) destinée à accueillir un système de fichiers. Les informations sur les partitions sont conservées sur le disque lui-même dans des zones qu’on appelle tables de partitions. La table de partitions principale est contenue dans le premier secteur du disque ou secteur d’amorçage (généralement MBR ou GPT) qui contient également le programme d’amorçage. Chaque ligne d’une table de partitions contient l’adresse de début de la partition et sa taille. Il peut s’agir de partitions primaires qui contiendront un système de fichiers ou de partitions étendues qui contiendront à leur tour une table de partitions ayant la même structure que la table principale. Le MBR (Master Boot Record) est le nom donné au premier secteur adressable d’un disque dur (cylindre 0, tête 0 et secteur 1, ou secteur 0 en adressage logique) dans le cadre d’un partitionnement Intel. Sa taille est de 512 octets. Le MBR contient la table des partitions (les quatre partitions primaires) du disque dur. Il contient également une routine d’amorçage dont le but est de charger le système d’exploitation, ou le chargeur d’amorçage (boot loader) s’il existe, présent sur la partition active.
zImage, uImage
Image est le fichier binaire générique d’un noyau (kernel) Linux. Maintenant, on utilise plus souvent zImage, une version compressée auto-extractible. Sur les systèmes embarqués, on utilise couramment uImage, un fichier qui inclut le noyau et U-Boot ainsi que les informations pour le chargement. uImage est créé avec l’outil mkimage.
Paquet (package)
Un paquet ou parfois paquetage (package) est une archive (souvent compressée) comprenant les fichiers, les informations et procédures nécessaires à l’installation d’un logiciel sur un système d’exploitation en s’assurant de la cohérence fonctionnelle du système ainsi modifié. L’utilisation d’un paquetage logiciel est un élément constitutif d’une bonne pratique d’intégration logicielle. deb est le format de fichier des paquets logiciels de la distribution Debian GNU/Linux. Presque toutes les distributions basées sur Debian utilisent aussi ce format (Ubuntu par exemple). rpm (Red Hat Package) est un système de gestion de paquets de logiciels utilisé sur certaines distributions GNU/Linux. C’est le format utilisé par Linux Standard Base (LSB). Pacman (contraction de package-manager) est le gestionnaire de paquets officiel de la distribution Linux Arch Linux. Pacman utilise des archives .tar.gz, .bz2 ou .xz pour ses paquets. Voir aussi : tgz (fichier archive créé avec tar et ensuite compressé généralement avec gzip), msi (pour les fichiers d’installation pour Windows Installer).
Chaîne de compilation croisée
Une chaîne de compilation (toolchain) désigne l’ensemble des paquets utilisés dans le processus de compilation d’un programme, pour un processeur donné. Le compilateur n’est qu’un élément de cette chaîne, laquelle varie selon l’architecture matérielle cible. Une chaîne de compilation croisée est une chaîne compilée pour fonctionner sur l’architecture de processeurs de la machine hôte, mais qui va compiler des logiciels pour une architecture cible différente. La compilation croisée fait donc référence aux chaînes de compilation capables de traduire un code source en code objet dont l’architecture processeur diffère de celle où la compilation est effectuée. Ces chaînes sont principalement utilisés en informatique industrielle et dans les systèmes embarqués.
ELF
ELF (Executable and Linkable Format) est un format de fichier binaire utilisé pour l’enregistrement de code compilé (objets, exécutables, bibliothèques de fonctions). Aujourd’hui, ce format est utilisé dans la plupart des systèmes d’exploitation de type Unix (GNU/Linux, Solaris, IRIX, System V, BSD), à l’exception de Mac OS X.

Informations sur le système

$ uname -a
Linux raspberrypi 3.6.11+ #474 PREEMPT Thu Jun 13 17:14:42 BST 2013 armv6l GNU/Linux

$ cat /proc/version 
Linux version 3.6.11+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #474 PREEMPT Thu Jun 13 17:14:42 BST 2013

$ cat /etc/issue
Debian GNU/Linux 7

$ cat /etc/debian_version 
7.1

Configuration du réseau

Manuel :

  1. Configuration de l’adresse IP

    $ sudo ifconfig eth0 192.168.1.2 netmask 255.255.255.0
  2. Ajout de la route par défaut

    $ sudo route add default gw 192.168.1.12

Fixe (static) :

  1. Éditer le fichier associé aux interfaces réseaux

    $ sudo vi /etc/network/interfaces
    
    #iface eth0 inet dhcp
    iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.12
    network 192.168.1.0
    broadcast 192.168.1.255

Mise à jour du système

$ sudo apt-get update
$ sudo apt-get upgrade

Prise en main à distance

  • ssh :

    $ ssh pi@192.168.1.2
    Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
    pi@192.168.1.2's password: 
    Linux raspberrypi 3.6.11+ #371 PREEMPT Thu Feb 7 16:31:35 GMT 2013 armv6l
    
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Sat Feb  9 10:20:37 2013
    pi@raspberrypi ~ $

Remarque : ssh -Y pi@192.168.1.2 (l’option -Y permet de transmettre l’interface graphique X11 et donc de pouvoir exécuter des programmes GUI)

On utilisera la commande scp pour faire des copies de fichiers entre les 2 systèmes. On peut aussi utiliser “Se connecter à un serveur …” dans Nautilus.

  • vnc :

    $ sudo apt-get install tightvncserver

    Pour lancer le serveur vnc sur la pi :

    $ sudo tightvncserver

    Test avec un client vnc (vncviewer par exemple sous Linux) : 192.168.1.2:5901

Installation de l’environnement Qt

Retour au sommaire