lundi, novembre 10, 2014

Installation et configuration de Raspbian sur Raspberry PI puis connexion SSH depuis Windows

Je viens de recevoir au travail un ensemble de Raspberry PI (Raspberry PI modèle B et Raspberry PI modèle B+).  Pour une première prise en main, je voulais compiler mon premier programme Java HelloWord dessus sans avoir à connecter sur le Raspberry PI un clavier, une souris et un écran. 

Comme vous pouvez vous en douter, l'objectif de ce billet est de vous montrer comment à partir d'un simple Raspberry PI, installer un OS, se connecter en SSH puis éditer, compiler et exécuter un programme Java. Je me suis fixé comme contrainte de ne pas connecter de clavier, souris et écran sur le Raspberry PI. Ce dernier sera connecté en direct sur mon portable PC Windows via le port Ethernet. Avec le partage de connexion, l'accès Internet disponible depuis ma carte Wifi sera redirigé vers le port Ethernet. Par conséquent toutes les opérations depuis le Raspberry PI seront effectuées depuis mon portable PC Windows.

L'explication qui sera donnée dans ce billet n'est peut être pas la plus simple. En effet, il est simple de connecter le Raspberry PI sur un routeur d'une Box d'en identifier son IP, de se connecter en SSH et de pouvoir profiter d'une connexion Internet depuis le Raspberry PI. Malheureusement dans la configuration au travail, je ne dispose pas de routeur connecté sur Internet.    

Présentation du matériel


Pour les besoins de cette expérimentation, j'ai utilisé le matériel suivant.
  • Un Raspberry PI modèle B+ (repère 1).
  • Un cable USB - Micro-B pour l'alimentation (repère 2).
  • Un cable Ethernet (repère 3).
  • Un micro SD de 4 Go avec un adaptateur grand format pour connecter au PC (repère 4).
  • Un portable PC avec WIFI sous Windows 7.

Télécharger et préparer carte SD 

  • Télécharger depuis le site de Raspberry PI, l'image de Raspbian. Le fichier pèse environ 955 Mo. Un point de détail, j'ai du passer par la version Torrent car la version ZIP posait problème pour le téléchargement.
  • Télécharger Win32DiskImager afin de construire une carte SD bootable. Je souhaitais utiliser Refus, découvert dernièrement, mais il n'a su reconnaître ma carte SD. 
  • Exécuter Win32DiskImager, choisir votre carte SD, choisir l'image Raspbian puis faire Write. Attendre un certain temps, afin que votre carte SD soit prête.

Configurer le partage de connexion Internet (ICS)

  • Ouvrir la fenêtre de Connexions réseau.
  • Sélectionner le réseau sans fil puis afficher les propriétés. 
  • Cocher l'option "Autoriser d'autres utilisateurs du réseau ..." puis sélectionner au niveau de "Connexion réseau domestique" le réseau filaire qui sera utilisé par le Raspberry PI.
  • Cliquer sur Paramètres et sélectionner les services Serveur Web (HTTP) et Serveur Web sécurisé (HTTPS)
  • Pour finir faire Ok 

Fixer une IP pour le Raspberry PI

  • Connecter la carte SD dans le Raspberry PI puis connecter le câble réseau et d'alimentation.
  • Ouvrir une console Windows (cmd.exe).
  • Faire un appel à l'outil ipconfig pour connaître les informations des cartes réseaux.
  • Dans la zone rouge est indiquée l'adresse IP de votre carte réseau. Dans mon cas, mon adresse IP est la 192.168.137.1.
  • Débrancher l'alimentation du Raspberry PI et connecter la carte SD sur le portable PC.
  • Depuis la carte SD, éditer le fichier cmdline.txt puis compléter à la fin en ajoutant le clé ip et la valeur doit suivre le schéma suivant : A.B.C.E::A.B.C.D. Où A.B.C.D est votre adresse IP (pour moi 192.168.137.1) et E une valeur différente par exemple 3. Le résultat attendu est présenté sur la figure suivante.
  • A noter que si vous ne souhaitez pas partager la connexion Internet, saisir de la forme ip=A.B.C.E.
  • Déconnecter la carte SD du portable PC, la connecter sur le Raspberry PI et alimenter le.
  • Attendre environ une minute le temps que l'OS du Raspberry PI soit chargé.

Se connecter en SSH via IP

  • Pour la suite, je suppose que l'outil SSH est installé. Dans mon cas, il est fourni via le package GIT installé sur mon Windows.
  • Depuis l'invite de console Windows (cmd.exe) exécuter l'instruction suivante :
$ ssh pi@192.168.137.3
  • Un mot de passe vous sera demandé, sa valeur par défaut est raspberry.
  • Vous voilà connectez en SSH sur votre Raspberry PI. Il s'agit d'un environnement Linux basé sur Debian. Première chose pour vérifier si l'accès est Internet est fonctionnel, c'est de faire une mise à jour de votre dépôt : 
 $ sudo apt-get update

Se connecter en SSH via le nom d'hôte

Les problèmes avec les solutions précédentes sont les suivants :
  • si on change de Portable PC, il faut recommencer la procédure car l'IP fourni à votre carte réseau local ne sera peut-être pas la même ; 
  • si on souhaite brancher un Raspberry PI sur un routeur avec un DHCP, il faudra supprimer les modifications du fichier cmdline.txt.
Je vous propose dans cette section de rendre accessible le nom d'hôte de votre Raspberry PI depuis votre Windows. Suivre les indications suivantes.
  • Se connecter en SSH vers le Raspberry PI.
  • Par défaut, le hostname du Raspberry PI est raspberrypi. Si vous souhaitez le changer, modifier les fichiers /etc/hostname et /etc/hosts. Ne pas oublier de faire un reboot après changement.
  • Depuis le système Raspberry PI, installer le package Samba :
 $ sudo apt-get install samba
  • Éteindre votre Raspberry PI et connecter la carte SD sur votre portable PC afin de supprimer dans le fichier cmdline.txt les modifications que vous aviez apportées.
  • Connecter votre carte SD sur le Raspberry PI et allumer le.
  • Pour connaître l'IP de votre Raspberry PI depuis Windows, faites simplement
 $ ping raspberrypi
A noter que si vous avez plusieurs Raspberry PI sur le réseau (ce qui n'est pas notre cas ici car c'est du point à point), penser à rendre unique le nom d'hôte.  

Exécuter son premier programme Java

A la première connexion sur le Raspberry PI, j'ai été surpris de voir que la version 8 de Java était installée. Je m'attendais à la version 7. Disposant d'une JVM, j'ai donc décidé de la tester.
  • Créer un fichier appelé HelloWorld.java à partir de nano :
$ sudo nano HelloWorld.java
  • Saisir le bout de code ci-dessous :
public class HelloWorld {
  public static void main(String[] argv) {
    System.out.println("Hello World");
  }
}
  • Compiler via la commande suivante :
$ javac HelloWorld.java
  • Exécuter le programme Java :
$ java HelloWorld
  • Java vous dit bonjour et de mon côté je vous dis à bientôt.

Ressources

mardi, novembre 04, 2014

Liens pratiques de la semaine

Vous trouverez dans ce billet une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines. 

Eclipse
Java
  • Une bonne explication sur la différence entre une HashMap et une HashTable
  • GWT 2.7.1 RC1 est disponible. Le Super Dev Mode est maintenant par défaut
  • jORM est un ORM Java très léger
  • jsoup est une bibliothèque pour manipuler le contenu HTML. Ici un exemple sur comment utiliser la recherche avec Google
NoSQL/BigData
  • Un billet français sur le développement de job MapReduce Hadoop
HTML5/JavaScript and co.
  • Etherpad est un éditeur de texte collaboratif
Divers
  • TextQL et q sont des projets permettant d'exécuter des requêtes SQL depuis des fichiers CSV
  • SndLatr, une extension Chrome, est un outil pour programmer l'envoi d'email depuis GMail
  • Movienr est un site Web qui vous permettra de trouver facilement un film en fonction de vos préférences.
  • Apachetop et GoAccess sont deux outils pour suivre les logs de son Apache HTTP favori
  • Refus, un outil permettant de créer des clés USB bootable
  • Un billet qui explique comment packager une box avec Vagrant
  • Taiga est outil de gestion de projet de toute beauté. A côté mon Redmine semble bien triste. J'ai utilisé ce projet Github pour utiliser Taiga sous Vagrant
  • Un billet qui présente rapidement les principes de Docker