lundi 10 août 2015

BBB - Démarrage

Debian sur BeagleBone Black (rev B)


Cet article résume comment installer un système Debian pour BBB, sur une carte microSD depuis un PC fonctionnant sous Linux. Le système sera ensuite transféré dans les 2GB de mémoire flash de la BeagleBone Black (rev B).

Accessoires


Installation de Linux Debian en eMMC


Ecriture sur carte micro SD

La distribution en usage actuellement dérive d'une Debian Jessie. Celle-ci est disponible en téléchargement sur le site elinux.org. L'image sera écrite dans les 2GB de mémoire eMMC d'une BeagleBone Black (rev B).

L'image Debian pour eMMC peut se télécharger avec laligne de commande suivante:
wget https://rcn-ee.com/rootfs/2015-07-08/flasher/BBB-eMMC-flasher-debian-8.1-console-armhf-2015-07-08-2gb.img.xz

Dans un premier temps, cette image sera décompressée puis écrite sur une carte microSD d'une capacité minimale de 2GB.

Décompresser le fichier contenant la distribution:
unxz BBB-eMMC-flasher-debian-7.5-console-2014-06-05-2gb.img.xz

Inserer la carte SD dans son logement puis rechercher son point de montage.
La commande dmesg permet d'identifier le type de périphérique: 
[15362.326489] mmcblk0: mmc0:0001 SD16G 14.6 GiB
[15362.329144]  mmcblk0: p1
[15362.496985] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!


La commande umount permet de démonter la partition qui contiendra la distribution:
umount /dev/mmcblk0p1

Recopier l'image pour la BeagleBone depuis le PC sous linux vers la carte microSD:
sudo dd bs=4M if=./BBB-eMMC-flasher-debian-8.1-console-armhf-2015-07-08-2gb.img of=/dev/mmcblk0

Transfert de l'image Debian en eMMC

Ensuite, il faut :
  1. Insérer cette image sur microSD dans le lecteur de la carte BeagleBone.
  2. Maintenir enfoncé le bouton user boot de la carte.
  3. Mettre la carte sous tension.
  4. Relâcher le bouton user boot uniquement lorsque les 4 LED de la carte clignotent les une à la suite des autres.
Après 30-45 minutes, les 4 LED de la carte restent toutes allumées en même temps. Le système peut être mis hors tension et il suffira de retirer la carte microSD pour rebooter la BBB depuis sa mémoire eMMC.

1er démarrage


Utiliser le français

La définition des paramètres régionaux ainsi que le positionnement des variables d'environnement (LANG) se fait avec l'aide de la commande suivante:
sudo dpkg-reconfigure locales

Définir l'heure locale

La définition de l'heure locale et du fuseau horaire se fait avec la commande suivante:
dpkg-reconfigure tzdata

Mettre le clavier en français

Le clavier se bascule dans la langue française (AZERTY) avec les commandes suivantes:  
sudo apt-get update
sudo apt-get install console-data
dpkg-reconfigure console-data

Définir la liste des dépots sources

Pour une distribution dérivée d'une version debian wheezy, le fichier de définition des dépots sources devrait contenir les entrées suivantes:
cat /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free
deb http://ftp.us.debian.org/debian/ wheezy-updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb [arch=armhf] http://repos.rcn-ee.net/debian/ wheezy main

Installer un serveur ssh

Mettre à jour la liste des paquets disponibles puis installer un serveur ssh avec les commandes suivantes:
sudo apt-get update
sudo apt-get install openssh-server

Installer un serveur ntp

Mettre à jour la liste des paquets disponibles puis installer un serveur ssh avec les commandes suivantes: 
sudo apt-get update
sudo apt-get install ntp

Définir le nom utilisé pour ce système

Ajouter le nom xxx qui sera utilisé par ce système, dans le fichier /etc/hostname

Changer de mot de passe

 L'image du système téléchargée utilise un compte et un mot de passe par défaut: debian / temppwd
Il est conseillé de créer un nouvel utilisateur mais on peut aussi utiliser le compte debian à condition de changer son mot de passe avec la commande suivante:
passwd

Définir une adresse IP statique

Afin de faciliter les accès ultérieurs par ssh, on peut remplacer l'adressage DHCP par une IP statique:
sudo vi /etc/network/interfaces

Remplacer la ligne:
iface eth0 inet dhcp

Par les lignes suivantes:
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

IP statique avec et image de test

Dans les cas où la version téléchargée correspond à une image Jessie de test, les ajouts dans le fichier /etc/network/interface seront sans effet. Pour les versions Jessie de test, le réseau est piloté par le module ConnMan qui possède une interface en ligne de commande. Dans ce cas, il faudra déterminer le nom du service ethernet avec la commande suivante:
$ sudo connmanctl services
AO Wired ethernet_d05fb8ed4f78_cable 

Enssuite, utiliser la commande pour configurer l'adresse IP statique et les adresses des serveur de noms. la synthaxe de la commande est la suivante:
sudo connmanctl config --ipv4 manual --nameservers


$ sudo connmanctl config ethernet_d05fb8ed4f78_cable --ipv4 manual 192.168.1.xxx 255.255.255.0 192.168.1.1 --nameservers 8.8.8.8 

On peut ensuite vérifier la configuration réseau avec la commande suivante: 
$ ip addr show dev eth0  

Enfin, on pourra revenir à la configuration DHCP avec la commande suivante: 
$ sudo connmanctl config ethernet_d05fb8ed4f78_cable --ipv4 dhcp

2nd Redémarrage


Au second redémarrage, faire un état des lieux du systéme.

IP statiques / Résolution de noms

vérifier les paramètres de votre carte réseau avec l'aide de la commande suivante:
sudo ifconfig

Ensuite, vérifier que le système accède bien à un serveur de noms de domaine:
cat /etc/resolv.conf

Mémoire / espace disque

La commande free -mh affiche la quantité de RAM utilisée:
                             total       used       free     shared   buffers   cached
Mem:                    490M      401M     89M     0B        36M        261M
-/+ buffers/cache: 103M      387M
Swap:                    0B           0B         0B

Remarque:

Ce système ne possède pas d'espace de swap.

La commande df -h affiche la liste des systémes de fichiers montés ainsi que leurs points de montage et taux d'occupation.

Filesystem   Size   Used   Avail    Use%  Mounted on
rootfs           1.8G  875M  789M  53%    /
udev             10M  0         10M    0%       /dev
tmpfs            99M  9.9M   89M    11%    /run
/dev/disk/by-uuid/5b9e0cf5-52b7-4bf3-8e38-c9c805d89105  1.8G  875M  789M  53% /
tmpfs            246M 0         246M   0%    /dev/shm
tmpfs            246M 0         246M   0%    /sys/fs/cgroup
tmpfs            100M 0         100M   0%    /run/user
tmpfs             5.0M 0         5.0M    0%    /run/lock

samedi 8 août 2015

RPi 1 2 - Démarrage

Raspbian


Cet article résume comment installer un système Raspbian, sur une carte SD depuis un PC fonctionnant sous Linux.Le système installé devra possèder les caractéristiques d'un serveur et non d'une station de travail pourvue d'un  environnement graphique. Il sera donc configuré en conséquence.

Accessoires


Installation d'un serveur


Le système d’exploitation est une distribution de type Linux Debian appelée Raspbian.
La distribution en usage actuellement dérive d'une Debian Wheezy. Celle-ci est disponible en téléchargement sur le site de raspberrypi.

La distribution Raspbian peut se télécharger depuis un poste Linux avec la ligne de commande suivante:
wget http://downloads.raspberrypi.org/raspbian_latest

Décompresser le fichier contenant la distribution:
ls -alh
unzip  raspbian_latest

Inserer la carte SD dans son logement puis rechercher son point de montage.
La commande dmesg permet d'identifier le type de périphérique: 
[15362.326489] mmcblk0: mmc0:0001 SD16G 14.6 GiB
[15362.329144]  mmcblk0: p1
[15362.496985] FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!


La commande umount permet de démonter la partition qui contiendra la distribution:
umount /dev/mmcblk0p1

Finalement, on recopie l'image Raspbian sur la carte SD ( Une procèdure détallée est disponible sur le site raspberry):
dd bs=4M if=./2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0

Après cette opération de copie assez longue, la carte SD peut être insérée dans le logement de la carte du Raspberry Pi.

1er démarrage


Après insertion de la carte SD et mise sous tension, un menu de configuration s'affiche automatiquement lors du premier démarrage. Ensuite, il sera toujours possible de relancer ce menu en saisissant la commande raspi-config dans un terminal (avec les droits de root).


Configuration depuis raspi-config


Voici les options de menu raspi-config:
  • Expand_Filesystem: par défault la partition système fait 2Go. Cette option permet de l'agrandir afin d'occuper tout l'espace disponible.
  •  Change User Password: pour modifier le mot de passe de l'utilisateur par default (pi/raspberry) .
  •  Enabled boot to Desktop/Scratch: pour lancer une console ou un environnement au boot. 
  •  Internationalisation Options: pour changer la langue. Pour mettre  et mettre le clavier en français. Pour changer l'heure locale.
  •  Advanced Options: Pour activer le service SSH afin de se connecter à distance. Pour redéfinir le nom de la machine sur le réseau. Pour définir les quantités de mémoire allouées respectivement aux CPU et au GPU.

Utiliser le français

Depuis le menu:  raspi-config | Internationalisation Options | Change locale

Définir l'heure locale

Depuis le menu:  raspi-config | Internationalisation Options | Change Timezone

Mettre le clavier en français

Depuis le menu:  raspi-config | Internationalisation Options | Change Keyboard layout

Etendre le système de fichier

Depuis le menu:  raspi-config | Expand Filesystem

Changer de mot de passe

Depuis le menu:  raspi-config | Change User Password

Démarrer le systéme en mode console

Depuis le menu:  raspi-config | Enable boot to Desktop / Scratch

Activer le serveur SSH

Depuis le menu:  raspi-config | Advanced Options | SSH

Définir le nom utilisé pour ce système

Depuis le menu:  raspi-config | Advanced Options | Hostname

Définir la quantité de mémoire allouée au GPU

Depuis le menu:  raspi-config | Advanced Options | Split

Utiliser 16Mib de RAM pour le GPU et le reste disponible pour le CPU.

Redémarrage et poursuite de la configuration


Ensuite, on pourra effectuer les actions suivantes:
  • Définir la liste des dépots sources
  • Mettre à jour les paquets
  • Définir une adresse IP statique

Définir la liste des dépots sources

Pour une distribution dérivée de la version Debian Wheezy, le fichier de définition des paquets devrait contenir les entrées suivantes:
cat /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ wheezy main contrib non-free rpi


Mettre à jour les paquets

Dans ce cas, on peut mettre à jour le système depuis Internet avec la commande suivante:
sudo apt-get update

Définir une adresse IP statique

Afin de faciliter les accès ultérieurs par ssh, on peut remplacer l'adressage DHCP par une IP statique:
sudo vi /etc/network/interfaces

Remplacer:
iface eth0 inet dhcp

Par:
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Attention:

  • Mon routeur est une LivePlay Orange qui utilise le masque de sous réseau  192.168.1.xxx mais certains utilisent 192.168.0.xxx.
  • DHCP est désormais pris en charge par un nouveau paquet appelé dhcpcd. Dans ce cas, le fichier de configuration des interfaces réseaux ne comprend plus la ligne d'instruction iface eth0 inet dhcp. Celle-ci est remplacée par la ligne d'instruction iface eth0 inet manual. La suppression de la ligne iface eth0 inet manual est actuellement insuffisante et lors du redémarrage de l'interface réseau, le service dhcpcd continue de collecter une IP dynamique. Le systéme possède alors deux adresses IP: une IP statique définie par l'instruction iface eth0 inet static et une IP dynamique obtenue par le client dhcpcd...  Il est nécessaire de supprimer le paquet raspberrypi-net-mods, puis de descativer dhcpcd (voir les deux lignes de commande ci-dessous). Le redémarrage de l'interface réseau conduira enfin à l'obtention d'une seule IP statique.
  •  
    sudo apt-get purge raspberrypi-net-mods
    sudo update-rc.d -f dhcpcd remove

Résolution des noms de domaines

Lorsque la carte réseau possède une adresse IP définie de manière statique, la résolution de noms (DNS) ne se fait plus et le fichier de configuration /etc/resolv.conf est vide ! Dans ce cas, il sera nécessaire d'ajouter les entrées de DNS dans le fichier de configuration /etc/network/interfaces qui prendra finalement la forme suivante:
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.xxx
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-domain home
dns-search home
dns-nameservers 192.168.1.1 8.8.8.8 4.2.2.1
 

Redémarrage


Pour redémarrer la raspberry, il faudra saisir la commande suivante:
sudo reboot

Ensuite le systéme sera rendu accessible à distance depuis un client ssh avec la commande suivante:
ssh pi@192.168.1.xxx

Etat des lieux


Mémoire

La commande free -mh pernet de visualiser la quantité de RAM utilisée par le systéme:
                              total       used       free     shared    buffers     cached
Mem:                     482M     65M       417M     0B        10M        30M

-/+ buffers/cache:  24M       458M
Swap:                    99M       0B           99M

Espace disque

La commande df -h permet d'obtenir la liste des systémes de fichiers montés ainsi que leur point de montage et taux d'occupation:

Filesystem      Size  Used Avail Use% Mounted on
rootfs           30G  2.4G   26G   9% /
/dev/root        30G  2.4G   26G   9% /
devtmpfs        238M     0  238M   0% /dev
tmpfs            49M  228K   49M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            97M     0   97M   0% /run/shm
/dev/mmcblk0p1   56M   19M   37M  34% /boot


Adressage IP

Les commandes ifconfig et ip addr permettent d'afficher les infomations sur les interfaces réseau configurées: