Présentation du projet
J'ai un Raspberry PI B première génération sur lequel j'ai installé il y à longtemps ArchArm et XBMC le tout permettant de visionner sur ma télé les données de mon NAS.
Je vous l'accorde j'ai un télévision SAMSUNG avec SmartHUB mais voila je l'ai interdit sur le réseau, pour par exemple un micro qui fonctionne en permanence et que l'on ne peut pas arrêter, un butineur de très mauvaise qualité, bref SmartHUB je m'en passe.  
Dernièrement le Raspberry PI a pris un petit coup de jeune :-) la version 2 B avec son nouveau SOC est vraiment intéressant à un prix humm.... 45€ avec un bloc alim 2A.
Pré-requis
- un raspberry PI 2B
- un bloc alimentation de 5V 2A
- une carte microSD 8 Go
- un câble Ethernet
- un dongle USB WI-FI
- un clavier sans fil
  
Réalisation du projet
Préparation de la carte microSD
Je vais utiliser mon portable sous Arch pour préparer la carte microSD. Je pars du principe que vous avez les connaissance minimum pour correctement identifier votre carte microSD.
    fdisk -l
me permet de trouver ma carte
    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0x417ee54b
donc vous remplacerez /dev/mmcblk0 par l'identifiant de votre carte.
Ce que nous allons faire : * Création d'une partition primaire de 100M au format FAT * Création d'une partition prenant tout la place disponible restante au format Linux
Voila le déroulé des actions à effectuer :
    phil@asus~ $sudo fdisk /dev/mmcblk0
    Bienvenue dans fdisk (util-linux 2.26.1).
    Les modifications resteront en mémoire jusqu'à écriture.
    Soyez prudent avant d'utiliser la commande d'écriture.
Commande (m pour l'aide) : o
    Création d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0xbfab1046.
Commande (m pour l'aide) : p
    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0xbfab1046
Commande (m pour l'aide) : n
    Type de partition
       p   primaire (0 primaire, 0 étendue, 4 libre)
       e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (1-4, 1 par défaut) : 1
    Premier secteur (2048-15523839, 2048 par défaut) : 
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-15523839, 15523839 par défaut) : +100M
    Une nouvelle partition 1 de type « Linux » et de taille 100 MiB a été créée.
Commande (m pour l'aide) : t
    Partition 1 sélectionnée
Type de partition (taper L pour afficher tous les types) : c
    Type de partition « Linux » modifié en « W95 FAT32 (LBA) ».
Commande (m pour l'aide) : n
    Type de partition
       p   primaire (1 primaire, 0 étendue, 3 libre)
       e   étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (2-4, 2 par défaut) : 2
    Premier secteur (206848-15523839, 206848 par défaut) : 
    Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (206848-15523839, 15523839 par défaut) : 
    Une nouvelle partition 2 de type « Linux » et de taille 7,3 GiB a été créée.
Commande (m pour l'aide) : w
~~~~{console}     
    La table de partitions a été altérée.
    Appel d'ioctl() pour relire la table de partitions.
    Synchronisation des disques.
Voila maintenant la carte est correctement partitionnée.
~~~~{console}
    fdisk -l
...
    Disque /dev/mmcblk0 : 7,4 GiB, 7948206080 octets, 15523840 secteurs
    Unités : secteur de 1 × 512 = 512 octets
    Taille de secteur (logique / physique) : 512 octets / 512 octets
    taille d'E/S (minimale / optimale) : 512 octets / 512 octets
    Type d'étiquette de disque : dos
    Identifiant de disque : 0xbfab1046
    Périphérique   Amorçage Début      Fin Secteurs Taille Id Type
    /dev/mmcblk0p1            2048   206847   204800   100M  c W95 FAT32 (LBA)
    /dev/mmcblk0p2          206848 15523839 15316992   7,3G 83 Linux
Les commandes suivantes s'effectuerons dans une console root
Formatage de la première partition en FAT
    mkfs.vfat /dev/mmcblk0p1
Création d'un répertoire
    mkdir boot
Montage de la partition
    mount /dev/mmcblk0p1 boot
Formatage de la deuxième partition en EXT4
    mkfs.ext4 /dev/mmcblk0p2
Création d'un répertoire
    mkdir root
Montage de la partition
    mount /dev/mmcblk0p2 root
Téléchargement du systeme d'exploitation
    wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-2-latest.tar.gz
On dé-tar et l'on pose cela sur root
    bsdtar -xpf ArchLinuxARM-rpi-2-latest.tar.gz -C root
On s'assure que toutes les données dans les tampons en mémoire sont inscrite sur le disque.
    sync
Déplacement des fichiers de démarrage sur la première partition:
    mv root/boot/* boot
Démontage des partitions
    umount boot root
Insérer la microSD dans le Raspberry Pi, connecter le câble Ethernet, et l'alimentation 5V.
A partir de là le Raspberry Pi boot, il vous faut trouver quelle IP a été donnée.
    sudo nmap -v -sn 192.168.1.0/24
et la réponse se trouve dans la liste
    Nmap scan report for 192.168.1.57
    Host is up (0.0069s latency).
    MAC Address: B8:27:EB:E9:BE:E8 (Raspberry Pi Foundation)
lancer une connexion ssh
    ssh root@192.168.1.57
le mot de passe est 'root'
Configuration de ArchARM
Mise à jour du système
    pacman -Syu
Dans mon cas la mise à jour a installé un nouveau kernel on reboot
    reboot
changement du mot de passe root
    passwd
fuseau horaire
    date
    Sat May  2 19:20:16 UTC 2015
    rm localtime
    ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
    date
    Sat May  2 21:21:09 CEST 2015
Création d'un utilisateur kodi
    useradd -m -g users -G wheel,storage,audio,video -c kodi -s /bin/bash kodi
et on s'occupe aussi de son mot de passe
    passwd kodi
supprimer l'acces root via ssh
Bon dois je le faire ou pas, je suis sur mon reseau local, le firewall du routeur ne permet pas l'accès au port 22.
dans le fichier /etc/ssh/sshd_conf et remplacer
    #PermitRootLogin yes
par
    PermitRootLogin no
sudo
    pacman -S sudo
puis on configure l'accès
    export EDITOR=nano;
    visudo
on supprimera le commentaire
    ## Same thing without a password
    %wheel ALL=(ALL) NOPASSWD: ALL
quelques outils.
    pacman -S mc
    pacman -S gst-plugins-base gst-plugins-ugly gst-libav gst-plugins-good gst-plugins-bad ffmpeg
    pacman -S alsa-firmware alsa-utils alsa-oss 
Réseau
L'accès s'effectue en Wi-Fi sur mon réseau local. Je passe en IP fixe cela permet de gagner quelques secondes lors du boot.
Installation du Wifi
Pour gérer la connexion j'utilise netctl, j'ai besoin d'installer
    pacman -S dialog dhclient wpa_supplicant ifplugd ifenslave
création du fichier de configuration
    nano /etc/netctl/wifi-maison-static
puis on modifie comme suit
    Description='Connexion WiFi maison static'
    Interface=wlan0
    Connection=wireless
    Security=wpa
    ESSID='votre ESSID'
    Key='votre passphrase'
    IP=static
    Address='192.168.1.35/24'
    Gateway='192.168.1.1'
    DNS=('192.168.1.1')
    # Uncomment this if your ssid is hidden
    #Hidden=yes
On test la connexion
    netctl start wifi-maison-static
s'il n'y a pas de retour d'erreur, pour le démarrage au boot
    netctl enable wifi-maison-static
Installation de Kodi
    pacman -S kodi-rbp
    pacman -S polkit udisk upower lsb-release
Création du fichier /etc/systemd/system/xbmc.service qui va nous permettre de démarrer kodi lors du boot.
    [Unit]
    Description = Starts an instance of KODI
    After = remote-fs.target
    [Service]
    User = kodi
    Group = kodi
    Type = simple
    ExecStart = /usr/bin/kodi-standalone -l /run/lirc/lircd
    Restart = on-failure
    [Install]
    WantedBy = multi-user.target
puis
    systemctl enable kodi
Il ne reste plus qu'a paramétrer kodi pour l'accès au partage réseau, et modifier les preferences de fonctionnement.
Pilotage de kodi
un clavier
Le petit clavier est reconnu sans problème
    dmesg 
me donne
    [  643.719669] usb 1-1.3: new low-speed USB device number    6 using dwc_otg
    [  643.850496] usb 1-1.3: New USB device found, idVendor=0c40, idProduct=8000
    [  643.857578] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [  643.868503] usb 1-1.3: Product: 2.4GHz receiver
    [  643.874965] usb 1-1.3: Manufacturer: ELMCU
    [  643.902874] input: ELMCU 2.4GHz receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/0003:0C40:8000.0005/input/input4
    [  643.918396] hid-generic 0003:0C40:8000.0005: input,hidraw0: USB HID v1.11 Keyboard [ELMCU 2.4GHz receiver] on usb-bcm2708_usb-1.3/input0
    [  643.960169] input: ELMCU 2.4GHz receiver as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.1/0003:0C40:8000.0006/input/input5
    [  643.975794] hid-generic 0003:0C40:8000.0006: input,hidraw1: USB HID v1.11 Mouse [ELMCU 2.4GHz receiver] on usb-bcm2708_usb-1.3/input1
une partie des touches comme vol+, pause, sont bien reconnues le clavier est en qwerty
avec une tablette ou smartphone Android
Il existe deux applications pour piloter Kodi. Les deux sont disponibles dans le dépôt f-droid.org.