Installation de vSphere 6.5 dans Proxmox

Chap 1. Configuration d’un serveur DNS-DHCP avec Zentyal
Chap 2. Installation de vSphere 6.5 dans Proxmox

Chap 2. Installation de vSphere 6.5 dans Proxmox

L’installation de vSphère 6.5 dans proxmox n’est peut être pas évident pour tout le monde. C’est pour celà que j’écris cet article.

Avant d’aller plus loin, je tiens à préciser quelques points.

Primo, vous pouvez télécharger gratuitement la suite vSphère sur le site de VMware. Noter que le produit nécessite une license, une fois la période d’essai gratuite de 60 jours terminée.
Secondo, il n’est plus nécessaire d’installer vCenter dans un serveur Windows. Il faut l’installer comme une machine virtuelle à part entière.
Tertio, je tiens à rappeler que j’utilise debian 9.1 sur un macbook pro. Du coup, j’ai rencontré des soucis lorsqu’il fallait appuyer sur la touche F11 du clavier pour valider l’installation de l’ESXi. Bizarrement, c’est la seule touche en combinaison avec fn, qui n’est pas reconnue, puisque F2 et F9 le sont. Même soucis avec un clavier externe attaché au Mac. Il m’a fallut utiliser un PC/linux pour continuer et terminer l’installation.

I. Préparation est installation du serveur ESXi

Je pars du principe que vous avez installé Proxmox sur un ordinateur ou un serveur dédié avec au moins 16GB de mémoire physique.

Créez une machine virtuelle principale pour acceuillir le serveur ESXi, avec les spécifications suivantes.

CPU >= 2 (type: host)
RAM >= 10GB
Local disk0 >= 2GB (format VMDK)
Local disk1 >= 25GB (format VMDK)
Network: VMXNET3
OS: Other OS types

Ajouter un deuxième disque dur pour l’installation du serveur vCenter.


Ici, j’ai pris la taille du disque proposée par défaut, qui est de 35GB.

Une fois la machine virtuelle prête, vous pouvez vous lancer dans l’installation du serveur ESXi.

Concernant les adresses IP à appliquer aux serveurs, il est fortement conseillé d’utiliser une adresse IP statique.

Une fois l’installation terminée, formater le deuxième disque afin qu’il soit utilisable pour l’installation de vCenter. Pour celà, il suffit de taper l’adresse IP du serveur ESXi dans votre navigateur internet.

II. Installation du serveur vCenter

Comme je le disais dans le titre, il est maintenant possible d’installer vCenter à partir d’une machine tournant sous linux, mais cependant pas avec n’importe quelles distributions. Il faut utiliser Ubuntu ou Suse linux.

Je me suis donc créé une machine virtuelle Ubuntu dans Proxmox, puis j’ai lancé le fichier d’installation de vCenter. Ce; tte étape peut se faire en deux étapes. Une fois la première étape terminée, vous pouvez poursuivre l’installation à une date ultérieure, puis de reprendre à partir de la deuxième étape en entrant dans l’URL de votre navigateur l’adresse IP du serveur vCenter.

Étape 1:


En production, il est fortement recommandé d’ajouter un serveur via son nom de domaine au lieu de l’adresse IP. Je vous explique comment faire à la troisième partie de ce chapitre.

Comme je n’ai pas configuré de serveur DNS lors de cette manipulation, et surtout que c’est un lab, je peux donc me permettre d’utiliser l’adresse IP comme solution temporaire.


Note: Je viens de terminer un article expliquant comment configurer un serveur DNS. Je vous renvoie sur cette page pour voir comment procéder.


Étape 2:
Accéder à l’interface du vCenter à partir de son adresse IP. Vous allez constater qu’il vous faut du flash! Et oui, sans flash vous pouvez toujours utiliser l’interface en HTML5, mais avec des fonctionnalitées limitées.

Heureusement, le problème avec flash sera définitivement résolu d’ici 2020, finalement! Adobe a annoncé officiellement que flash sera retiré du marché après cette date:

« as open standards like HTML5, WebGL and WebAssembly have matured over the past several years, most now provide many of the capabilities and functionalities that plugins pioneered and have become a viable alternative for content on the web. (…) Adobe is planning to end-of-life Flash. Specifically, we will stop updating and distributing the Flash Player at the end of 2020 and encourage content creators to migrate any existing Flash content to these new open formats. »

III. Note concernant l’installation du vCenter via Ubuntu, une fois le serveur DNS/DHCP configuré

Dans la première partie de cet article, je vous ai expliqué comment installer un serveur vCenter lorsqu’on n’a pas de serveur DNS en place. Dans cette partie, nous allons en tenir compte de la présence de Zentyal, qui sera notre serveur DNS sur le réseau (cf. chap 1).

Avant de procéder à l’installation du serveur vCenter, je tiens à rappeler que j’utilisez un nom de domaine en .local (mylab.local). Celà pose un problème lorsqu’on utilise la version bureau de Ubuntu qui, utilise un serveur DNS en local (Avahi), et qui, lui aussi traduit les noms de domaines du type le-nom-de-mon-hote.local en adresse IP.

administrator@budgie:~$ ping debian.local
PING debian.local (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=1 ttl=64 time=2.36 ms
64 bytes from 192.168.1.10 (192.168.1.10): icmp_seq=2 ttl=64 time=1.31 ms
^C
--- debian.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.317/1.838/2.360/0.523 ms

Par contre,

administrator@budgie:~$ ping esxi-01.mylab.local
ping: esxi-01.mylab.local: Name or service not known

 

Et ceci, malgré le fait que la résolution de noms se fait sans problème.

administrator@budgie:~$ host esxi-01.mylab.local
esxi-01.mylab.local has address 192.168.1.51

Si vous vous décidez tout de même à lancer l’installation de vCenter sans prendre compte les alertes ci-dessus, vous allez recevoir un message d’erreur de type:

error: Could not get certificate fingerprint from host, esxi01.mylab.local: Error: getaddrinfo ENOTFOUND esxi01.mylab.local esxi01.mylab.local:443

Pour comprendre ce problème, jettons un coup d’oeil au fichier /etc/nsswitch.conf. Si je m’intéresser à ce fichier, ce n’est pas par hasard puisque les services comme dig, host, nslookup, etc. y font référence pour résoudre les noms de domaines via la commande getaddrinfo.

Si je reprends l’explication de Wikipedia concernant le fichier NSS (Name Service Switch), ce fichier « autorise le remplacement des traditionnels fichiers Unix de configuration (par exemple /etc/passwd, /etc/group, /etc/hosts) par une ou plusieurs bases de données centralisées ».

hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname

La partie qui nous intéresse dans ce fichier est la partie au niveau de la ligne hosts. La recherche d’information via les commandes comme ping, nslookup, etc., se fait en lisant la ligne de gauche à droite.

  1. files traduit les noms d’hôtes statics via le fichier /etc/hosts
  2. mdns4_minimal traduit les noms de domaines en passant par le multicast DNS (mDNS)
  3. [NOTFOUND=return] signifie que, si la requête juste avant cette commande (ici, une requête mDNS) renvoie une réponde de type notfound, alors le système n’essaie pas d’autre méthode pour résoudre le nom de domaine
  4. dns, comme vous pouvez vous en doutez, traduit les noms de domaine à la façon traditionnelle

Le problème que j’ai rencontré plus haut s’explique par le fait que la recherche du nom de domaine est enclenchée par mDNS, puisque c’est la première requête DNS rencontrée au niveau de la ligne host. Puis la recherche s’arrête net et sans passer par notre serveur DNS puique, si l’on regarde le fqdn qui est esxi-01.mylab.local, mDNS recherche dans sa base de donnée s’il n’y a pas un nom d’hôte ayant pour nom esxi-01.mylab. Comme il n’y a rien de tel, la recherche s’arrête et ne va pas plus loin que [NOTFOUND=return].

Pour régler ce problème, placer dns avant mdns.

hosts: files dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4_minimal myhostname

C’est une méthode parmis tant d’autre, et c’est ce que je recommande vivement de suivre.

Pour plus d’information concernant le multicast DNS, je vous renvoie à ces articles:

https://wiki.archlinux.org/index.php/avahi
https://doc.ubuntu-fr.org/zeroconf
https://fr.wikipedia.org/wiki/Avahi_(logiciel)

Publicités

Information sur le matériel – HP Proliant Gen8

Pour résumé, voici l’essentiel de ce qu’il faut savoir de mon nouveau micro-serveur HP Proliant Gen8.

  • CPU : Intel Xeon E3 1265L Dual-core
  • 16 Go DDR3 ECC
  • 3 Disques durs SCSI

Cependant, je vais en profiter de cette page pour vous faire découvrir quelques commandes utiles pour avoir les informations sur votre système.

Commençons par les commandes pour avoir les informations sur la mémoire RAM.

~# cat /proc/meminfo
MemTotal: 16257496 kB
MemFree: 9012728 kB
MemAvailable: 10773580 kB

~# free -m
total used free shared buff/cache available
Mem: 15876 4947 8800 99 2128 10520
Swap: 10239 0 10239
~# free -h
total used free shared buff/cache available
Mem: 15G 4.9G 8.5G 99M 2.1G 10G
Swap: 9G 0B 9G

Pour avoir les informations sur les mémoires physiques, je n’ai pas trouvé mieux qu’avec la commande « dmidecode -t 17 ». D’autres exemples avec cette seront abordées un peu plus loin.

Puis vient ensuite la série des « ls », comme lscpu pour avoir des informations sur le processeur, lspci pour avoir la liste des bus PCI et des composants qui y sont attachés, etc. D’autres commandes comme lshw, pour avoir une information détaillée sur tout le système, ou encore lsscsi ne font pas parties des commandes de bases. Il faut les installer pour pouvoir les utiliser.

Pour avoir la liste des commandes « ls* », il faut commencer par trouver le dossier dans lequel ces commandes sont placées.

~# which lscpu
/usr/bin/lscpu
~# whereis lscpu
lscpu: /usr/bin/lscpu /usr/share/man/man1/lscpu.1.gz

Ensuite, il suffit de lister le contenu de ce dossier.

~# ls /usr/bin/ | grep ^ls
lsattr
lscpu
lshw
lsinitramfs
lsipc
lslocks
lslogins
lsns
lsof
lspci
lspgpot
lsscsi
lsusb

Voici plus ou moins, ce que vous devriez avoir avec ces commandes. J’ai supprimé les informations inutiles pour ne pas trop charger cette page.

# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Model name: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
CPU MHz: 2500.000
Virtualization: VT-x
NUMA node0 CPU(s): 0-7

~# lsscsi
[0:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 850 2B6Q /dev/sdb
[2:0:0:0] disk ATA SanDisk SDSSDP12 0 /dev/sdc
[6:0:0:0] disk HP iLO LUN 00 Media 0 2.10 /dev/sdd

~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk /mnt/850Pro
sdb 8:16 0 238.5G 0 disk /mnt/850Pro2
sdc 8:32 0 117.4G 0 disk
├─sdc1 8:33 0 1M 0 part
├─sdc2 8:34 0 256M 0 part
└─sdc3 8:35 0 117.1G 0 part
├─pve-swap 253:0 0 10G 0 lvm [SWAP]
├─pve-root 253:1 0 29.3G 0 lvm /
├─pve-data_tmeta 253:2 0 64M 0 lvm
│ └─pve-data 253:4 0 63.3G 0 lvm
└─pve-data_tdata 253:3 0 63.3G 0 lvm
└─pve-data 253:4 0 63.3G 0 lvm
sdd 8:48 0 256M 1 disk
└─sdd1 8:49 0 251M 1 part

~# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/Ivy Bridge DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:06.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.4 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 5 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 8 (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation C204 Chipset Family LPC Controller (rev 05)
00:1f.2 RAID bus controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA RAID Controller (rev 05)
01:00.0 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Slave Instrumentation & System Support (rev 05)
01:00.1 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200EH
01:00.2 System peripheral: Hewlett-Packard Company Integrated Lights-Out Standard Management Processor Support and Messaging (rev 05)
01:00.4 USB controller: Hewlett-Packard Company Integrated Lights-Out Standard Virtual USB Controller (rev 02)
02:00.0 Memory controller: Hewlett Packard Enterprise Device 005f
03:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

Puis vient ensuite la super commande « lshw ».

~# lshw
description: Tower Computer
product: ProLiant MicroServer Gen8 (712317-421)
vendor: HP
*-cpu
description: CPU
product: Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz

*-memory
description: System Memory
size: 16GiB
capabilities: ecc

*-scsi:0
logical name: scsi0
capabilities: emulated
*-disk
description: EXT4 volume
product: Samsung SSD 850
logical name: /dev/sda
logical name: /mnt/850Pro
size: 238GiB

Une version plus concise de lshw serait,

~# lshw -short
H/W path Device Class Description
============================================================
system ProLiant MicroServer Gen8 (712317-421)
/0 bus Motherboard
/0/0 memory 64KiB BIOS
/0/400 processor Intel(R) Xeon(R) CPU E3-1265L V2 @ 2.50GHz
/0/400/710 memory 128KiB L1 cache
/0/400/720 memory 1MiB L2 cache
/0/400/730 memory 8MiB L3 cache
/0/1000 memory 16GiB System Memory
/0/1000/0 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/1000/1 memory 8GiB DIMM DDR3 Synchronous Unbuffered (Unregistered) 1333 MHz (0.8 ns)
/0/100 bridge Xeon E3-1200 v2/Ivy Bridge DRAM Controller
/0/100/1 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6 bridge Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
/0/100/6/0 memory Memory controller
/0/100/1a bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1c bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 1
/0/100/1c.4 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 5
/0/100/1c.4/0 eno1 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.4/0.1 eno2 network NetXtreme BCM5720 Gigabit Ethernet PCIe
/0/100/1c.6 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 7
/0/100/1c.6/0 bus uPD720201 USB 3.0 Host Controller
/0/100/1c.6/0/0 usb4 bus xHCI Host Controller
/0/100/1c.6/0/1 usb5 bus xHCI Host Controller
/0/100/1c.7 bridge 6 Series/C200 Series Chipset Family PCI Express Root Port 8
/0/100/1c.7/0 generic Integrated Lights-Out Standard Slave Instrumentation & System Support
/0/100/1c.7/0.1 display MGA G200EH
/0/100/1c.7/0.2 generic Integrated Lights-Out Standard Management Processor Support and Messaging
/0/100/1c.7/0.4 bus Integrated Lights-Out Standard Virtual USB Controller
/0/100/1c.7/0.4/1 usb3 bus UHCI Host Controller
/0/100/1d bus 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1d/1/1/3 bus Hub
/0/100/1d/1/1/3/1 scsi6 storage Ultra Fast Media Reader
/0/100/1d/1/1/3/1/0.0.0 /dev/sdd disk 268MB LUN 00 Media 0
/0/100/1d/1/1/3/1/0.0.0/1 /dev/sdd1 volume 255MiB Windows FAT volume
/0/100/1e bridge 82801 PCI Bridge
/0/100/1f bridge C204 Chipset Family LPC Controller
/0/100/1f.2 storage 6 Series/C200 Series Chipset Family SATA RAID Controller
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda volume 238GiB Samsung SSD 850
/0/2 scsi1 storage
/0/2/0.0.0 /dev/sdb volume 238GiB Samsung SSD 850
/0/3 scsi2 storage
/0/3/0.0.0 /dev/sdc disk 126GB SanDisk SDSSDP12
/0/3/0.0.0/1 /dev/sdc1 volume 1023KiB BIOS Boot partition
/0/3/0.0.0/2 /dev/sdc2 volume 255MiB Windows FAT volume
/0/3/0.0.0/3 /dev/sdc3 volume 117GiB LVM Physical Volume
/1 power Power Supply 1
/2 vmbr0 network Ethernet interface
/3 tap104i0 network Ethernet interface
/4 tap102i0 network Ethernet interface

Une autre commande que je trouve très intéressante serait « dmidecode ».

~# dmidecode -t
dmidecode: option requires an argument -- 't'
Type number or keyword expected
Valid type keywords are:
bios
system
baseboard
chassis
processor
memory
cache
connector
slot

Dmidecode nécessite qu’on lui fournisse le type (« -t ») d’information à récupérer en option. Cette option peut être un nom, ou un numéro. La commande « dmidecode -t 1 » donne le même résultat que « dmidecode -t system ». Voyez dans le manuel pour plus d’information.

~# man dmidecode
DMI TYPES
The SMBIOS specification defines the following DMI types:

Type Information
────────────────────────────────────────────
0 BIOS
1 System
...

Ajout d’un disque dur externe et migration de données

Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian
Chap 2. Installation de OwnCloud sur un Raspberry Pi
Chap 3. Sécuriser votre RPi
Chap 4. Accès au serveur Web Owncloud à partir de son nom de domaine
Chap 5. Connection SSH
Chap 6. Les fichiers journaux
Chap 7. Let’s Encrypt (LE)
Chap 8. Ajout d’un disque dur externe et migration de données
Chap 9. Suppression et ajout d’une interface graphique
Chap 10. Rappel sur les différentes étapes pour mettre en place un server dédié à Owncloud

Chap 8. Ajout d’un disque dur externe et migration de données

Je vous ai parlé de sécurité tout au long des différents chapitres précédents. Au risque de vous décevoir, ce ne serait pas pour la dernière fois que je vais vous en parler de méthodes qui pourraient améliorer la sécurité sur vos serveurs.

Dans le chapitre 2, nous avons installé Owncloud avec les options par défaut, dans le répertoire racine du serveur apache, c’est à dire dans le dossier « /var/www/html/ ». Ceci dans le but de simplifier l’installation et la configuration de Owncloud pour les non-initiés.

Sachez que ce choix est loin d’être le meilleur. Ci-dessous je vais essayer de vous aider à migrer vos dossiers et configurations vers la nouvelle destination.
Si vous ne vous sentez pas à l’aise pour le faire, le meilleur choix serait de faire une nouvelle installation, puis de bien choisir les options qui vous intéressent, entre autre l’emplacement pour installer Owncloud ainsi que celui où placer les données.

/!\ Personnelement, je pense qu’il faut réinstaller Owncloud.
Ce chapitre est donc conçu à titre informative, pour vous aider à être un peu plus à l’aise avec les différentes manipulations sous linux.

I. Installation dans le dossier racine de Apache

Ceci est juste un petit rappel de la méthode décrite dans le chapitre 2. Ici, Owncloud a été installé directement dans le dossier racine par défaut du serveur Apache, c’est à dire dans /var/www/html. Comme je l’ai dit plus haut, ce n’est pas le meilleur choix, mais il est intéressant de le faire afin de pouvoir suivre les différentes étapes pour apprendre comment migrer les différentes informations de notre serveur Owncloud.
Si vous ne l’avez pas encore remarqué, le répertoire /var/www/html ainsi que son contenu, appartient par défaut à l’utilisateur root. Faites donc très attention à y appliquer un utilisateur sans privilège (ici www-data) à ce dossier.

raspi$ ls -al /var/www/html/
total 28288
drwxr-xr-x  4 root     root         4096 Apr  8 19:07 .
drwxr-xr-x  3 root     root         4096 Jan  4 20:19 ..
-rw-r--r--  1 www-data www-data     12 Apr  3 23:21 index.html
drwxr-xr-x 15 www-data www-data     4096 Apr  8 18:32 owncloud
drwxr-xr-x  2 root     root         4096 Apr 19 22:58 .well-known

Ceci dit, afin de limiter la casse si jamais il y a accès non autorisé à votre serveur, donner donc le minimum de permission à l’utilisateur Owncloud pour que ce dernier n’ait pas accès au reste du système. Cet utilisateur ne doit absolument pas avoir des mêmes privilèges que n’importe quel utilisateur de votre système dont la liste ne se limite pas seulement à l’utilisateur root, ou l’utilisateur principal que j’ai appelé USERNAME depuis de début de cette série d’article.

Noter que le choix du nom de l’utilisateur Owncloud n’a pas d’importance. Par défaut, l’utilisateur Apache doit appartenir au groupe www-data, et c’est par soucis de simplicité que j’ai choisi un utilisateur Apache de même nom que le groupe.

II. Installation dans le dossier /home

Pour ceux qui sont un peu plus sceptique concernant l’efficacité du choix proposé par défaut, un autre choix serait d’installer Owncloud dans /home. Ne l’oubliez pas que l’utilisateur Owncloud ne doit pas avoir les mêmes permissions que n’importe quel utilisateur du système (ie root, USERNAME, etc.).
Ce choix d’installation dans /home est un bon choix pour les utilisateurs qui ne trouvent pas pratique de travailler dans un répertoire qu’ils n’ont pas choisi.
Il est fort probable que vous avez déjà installé Owncloud dans le dossier racine de Apache, c’est à dire dans /var/www/html/owncloud. Ce n’est pas grave, je vais vous indiquer comment effectuer la migration de vos configurations et données, vers un autre répertoire de votre choix.

Migrations du répertoire Owncloud dans /home

Etape 1: Arrêter le serveur web

Arrêter le serveur Apache avant de migrer vos données.

raspi$ sudo service apache2 stop

Etape 2: Commencer la migration des données

Créer un répertoire de travail Owncloud, puis y appliquer les permissions pour l’utilisateur www-data.

raspi$ mkdir /home/USERNAME/www-dev

Migrer vos données et configurations Owncloud.

raspi$ sudo cp -rv /var/www/html/owncloud /home/USERNAME/www-dev

Appliquer et vérifier les nouvelles permissions.

raspi$ chown -R www-data:www-data /home/USERNAME/www-dev

raspi$ ls -l /home/USERNAME | grep www-dev
drwxr-xr-x 2 www-data www-data 4096 Jul 10 14:21 www-dev
$ ls -l /home/USERNAME/owncloud
total 168
drwxr-xr-x 28 www-data www-data  4096 Jul 10 14:30 3rdparty
drwxr-xr-x 21 www-data www-data  4096 Jul 10 14:31 apps
-rw-r--r--  1 www-data www-data   477 Jul 10 14:31 AUTHORS
drwxr-xr-x  2 www-data www-data  4096 Jul 10 14:30 config
-rw-r--r--  1 www-data www-data  3017 Jul 10 14:31 console.php
-rw-r--r--  1 www-data www-data 34520 Jul 10 14:31 COPYING-AGPL
drwxr-xr-x 19 www-data www-data  4096 Jul 10 14:31 core
-rw-r--r--  1 www-data www-data  5915 Jul 10 14:31 cron.php
drwxr-x---  5 www-data www-data  4096 Jul 10 14:31 data
-rw-r--r--  1 www-data www-data 23886 Jul 10 14:31 db_structure.xml
-rw-r--r--  1 www-data www-data   179 Jul 10 14:31 index.html
-rw-r--r--  1 www-data www-data  2026 Jul 10 14:31 index.php
-rw-r--r--  1 www-data www-data  2595 Jul 10 14:31 indie.json
drwxr-xr-x  3 www-data www-data  4096 Jul 10 14:31 l10n
drwx--x---  3 www-data www-data  4096 Jul 10 14:30 letsencrypt
drwxr-xr-x  6 www-data www-data  4096 Jul 10 14:31 lib
-rw-r--r--  1 www-data www-data   283 Jul 10 14:31 occ
drwxr-xr-x  2 www-data www-data  4096 Jul 10 14:31 ocs
drwxr-xr-x  2 www-data www-data  4096 Jul 10 14:31 ocs-provider
-rw-r--r--  1 www-data www-data  2969 Jul 10 14:31 public.php
-rw-r--r--  1 www-data www-data  4521 Jul 10 14:31 remote.php
drwxr-xr-x  3 www-data www-data  4096 Jul 10 14:32 resources
-rw-r--r--  1 www-data www-data    26 Jul 10 14:31 robots.txt
drwxr-xr-x 13 www-data www-data  4096 Jul 10 14:31 settings
-rw-r--r--  1 www-data www-data  1817 Jul 10 14:31 status.php
drwxr-xr-x  3 www-data www-data  4096 Jul 10 14:30 themes
-rw-r--r--  1 www-data www-data   233 Jul 10 14:31 version.php

Renommer l’ancien repértoire Owncloud au lieu de le suppprimer.

raspi$ sudo mv /var/www/html/owncloud /var/www/html/owncloud_original

Etape 3: Indiquer le nouveau chemin d’accès vers Owncloud au Serveur Web

Vu que notre serveur Owncloud a changé de répertoire, il faut indiquer au serveur web comment y accéder. Pour celà, il suffit de créer un lien symbolique dans /var/www/html.

raspi$ sudo ln -s /home/USERNAME/www-dev/owncloud /var/www/html/owncloud

raspi$ chown -R www-data:www-data /var/www/html/owncloud

Etape 4: Relancer le serveur web Apache

Relancer le server web, puis essayer d’accéder à l’URL de votre serveur Owncloud.

$ sudo service apache2 start

Tout devrait être bon, et vous ne devriez pas avoir de problèmes de permission.

III. Déplacer le dossier Data de la carte SD vers un disque dur externe

Pourquoi direz vous qu’il est préférable d’installer les données de Owncloud sur un support extérieur au raspberry pi?
Il y a au moins deux raisons à celà. Notez tout d’abord que l’espace disponible sur une carte SD est assez limitée. Puis ayez en tête que la durée de vie d’une carte SD est beaucoup plus courte en comparaison de celle d’un disque mécanique (HDD ou SDD). Si je peux, je vais aussi évoquer le fait que monter et démonter un disque dur externe ne nécessite pas un arrêt total du raspberry pi dans le cas où vous pensez remplacer le support physique sur lequel est enregistré vos données.

/!\ Je tiens à préciser que le disque dur doit être fourni avec une alimentation externe, puisque le raspberry pi n’est pas assez puissant pour pour alimenter un autre appareil via son port USB.

Etape 1: Partitionner le disque dur externe

Brancher maintenant votre disque dur sur l’un des ports USB du raspberry pi. Puis identifier les différentes partitions.

raspi$ sudo fdisk -l
!--Sortie Tronquée--!
Device         Boot  Start     End Sectors  Size Id Type
/dev/mmcblk0p1        8192  131071  122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 2848767 2717696  1.3G 83 Linux
!--Sortie Tronquée--!

Device     Boot Start     End Sectors  Size Id Type
/dev/sda1        2048 3907028991 3907026944  1.8T 83 Linux

« Rappel sur la désignation des partitions

Les périphériques sont désignés par le système par des fichiers dans le répertoire /dev/.
Les périphériques de stockage seront donc reconnus par /dev/sda, /dev/sdb, etc.
Les partitions sont désignées par leur numéro dans le disque (/dev/sda1, /dev/sda2, …)
Les partitions peuvent aussi être reconnues par leur UUID et leur label. » (lu sur ubuntu-fr.org)

Le disque qui nous intéresse est celui en /dev/sda, et contient déjà une partition (/dev/sda1) qu’on va supprimer avant d’en créer une nouvelle. Les autres partitions (/dev/mmcblk0p[number]) sont ceux de la carte SD du raspberry pi, qu’il ne faut surtout pas toucher.
Pour partitionner ce disque, plusieurs outils sont à votre dispositions. Entre autre, il y a fdisk et cfdisk. Je préfère utiliser fdisk qui ne nécessite pas l’utilisation des flèches pour se déplacer sur la page, et qui me permet donc d’aller plus vite dans le partionnement du disque.
Pour plus d’information sur ces différentes commandes, n’hésitez pas à visiter la page « Partitionner son disque dur en ligne de commande« .

/!\ Les commandes ci-dessous vont supprimer tout le contenu de votre disque. Faites donc bien attention à ce que vous faites.

raspi$ sudo fdisk /dev/sda

Command (m for help): p
Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec7a7cb7

Device     Boot Start        End    Sectors  Size Id Type
/dev/sda1        2048 3907028991 3907026944  1.8T 83 Linux

Supprimer la ou les partitions de votre disque dur externe, ici /dev/sda1.

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Vérifier que la ou les partitions ont bien été supprimées.

Command (m for help): p
Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec7a7cb7

Créer ensuite une nouvelle partition. Sur mon disque de 2To, je ne vais utiliser que la moitié pour l’instant.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-3907029166, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-3907029166, default 3907029166): +1T

Created a new partition 1 of type 'Linux' and of size 1 TiB.

Vérification.

Command (m for help): p
Disk /dev/sda: 1.8 TiB, 2000398933504 bytes, 3907029167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec7a7cb7

Device     Boot Start        End    Sectors Size Id Type
/dev/sda1        2048 2147485695 2147483648   1T 83 Linux

Enregistrer les modifications et quitter fdisk.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Voyons ce que çà donne avec la commande fdisk.

raspi$ sudo fdisk -l
!--Sortie Tronquée--!
Device     Boot Start        End    Sectors Size Id Type
/dev/sda1        2048 2147485695 2147483648   1T 83 Linux

Je n’ai utilisé que 1To d’espace disque pour les données. Je réserve le reste d’espace disponible pour une utilisation ultérireure.

Etape 2: Formatez le disque

Formatez la nouvelle partition en un système de fichier EXT4.

raspi$ sudo mkfs.ext4 /dev/sda1

Noter que la méthode « sudo mkfs -t /dev/sda1 » est à déprécier (voir « man mkfs » ).

Si vous n’êtes pas à l’aise avec les lignes de commandes pour partitionner et formater un disque, l’outil graphique GParted est votre ami.

Etape 3: Monter le disque dur externe

Vérifier encore une fois que vous voyez toutes les partitions, et plus particulièrement celle en /dev/sda1.

raspi$ sudo fdisk -l

Créer maintenant un point de montage, c’est à dire qu’il nous faut un nom de dossier à partir duquel on pourra accéder au disque. Je n’ai pas à préciser que ce dossier doit être impérativement vide.

raspi$ sudo mkdir /mnt/owncloud

Ne créer surtout pas de dossier nommé « data » sous /mnt/owncloud, pour éviter d’avoir un sous-dossier data à l’intérieur même du dossier du même nom. Ce qu’on veut c’est un dossier /mnt/owncloud/data/ et non /mnt/owncloud/data/data/.

Il est temps de monter le disque dur externe dans le répertoire indiqué.

raspi$ sudo mount /dev/sda1 /mnt/owncloud

Vérifier ensuite que le disque est bien monté.

raspi$ df -HT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/root      ext4      7.8G  4.9G  2.6G  66% /
devtmpfs       devtmpfs  506M     0  506M   0% /dev
tmpfs          tmpfs     511M     0  511M   0% /dev/shm
tmpfs          tmpfs     511M  7.0M  504M   2% /run
tmpfs          tmpfs     5.3M  4.1k  5.3M   1% /run/lock
tmpfs          tmpfs     511M     0  511M   0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat       63M   22M   42M  35% /boot
tmpfs          tmpfs     103M     0  103M   0% /run/user/1000
/dev/sda1      ext4      1.1T   75M  1.1T   1% /mnt/owncloud

Vous vous êtes certainement posé la question, à un moment ou à un autre, s’il faut choisir /mnt ou /media dans lequel il faut monter notre disque externe. Il y a pas mal de débat sur internet là dessus, mais cet article m’a convaincu qu’il faut choisir /mnt lorsqu’on monte manuellement un disque et qui, de plus, si le disque est supposé rester connecté en permanence au raspberry pi.

Etape 4. Migrer le dossier DATA

Migrer uniquement données du dossier DATA vers le disque dur externe. Et surtout, n’oubliez pas d’éteindre le serveur web avant d’aller plus loin.

Avant de se lancer dans le test, je me suis connecté à l’URL de mon Owncloud (http://localhost) avec un utilisateur de test (Username). Puis j’ai téléversé la video de Bug Bunny. Si tout va bien, à la fin de la migration, je devrai pouvoir télécharger et téléversion des fichiers avec mon utilisateur de test. Vérifions celà.

Selection_006
fig 1. Fichier de test dans Owncloud

Arrêter le serveur web.

raspi$ sudo service apache2 stop

Migrer les données vers la nouvelle partition.

raspi$ sudo cp -rv /var/www/html/owncloud/data /mnt/owncloud

raspi$ mv /var/www/html/owncloud/data var/www/html/owncloud/data_original

raspi$  sudo chown -R www-data:www-data /mnt/owncloud/data

Etape 5: Mettez à jour les informations des serveurs PHP

Mettez à jour le fichier de config.php pour y indiquer la nouvelle route pour atteindre le dossier DATA.

raspi$ vim /var/www/tml/howncloud/config/config.php

Remplacer ‘datadirectory’ => ‘/var/www/owncloud/data‘
Par ‘datadirectory’ => ‘/mnt/owncloud/data‘.

Etape 6: Mettez à jour les informations des serveurs Apache

De même que pour le serveur PHP, modifier les informations de owncloud.conf.

raspi$ sudo vim /etc/apache2/sites-available/owncloud.conf


!--sortie tronquée--!
    <Directory "/mnt/owncloud/data">
	# just in case if .htaccess gets disabled
	Require all denied
    

Etape 7: Redémarrer le serveur web

Relancer le server Apache.

raspi$ service apache2 start

Etape 8: monter automatiquement le disk dur externe

Si vous négligez cette étape, vous risque de ne plus avoir accès à vos données après redémarrage du raspberry pi, si vous oubliez de monter votre disque. De ce fait, il est préférable de le monter automatiquement afin d’éviter ce genre de désagrément.

Lancer la commande blkid afin d’identifier la partition qui nous intéresse et de récupérer son UUID.

raspi$ sudo blkid 
/dev/sda1: UUID="55ec24c7-c730-4689-9811-f1158362ea3c" TYPE="ext4"

Noter l’UUID: 55ec24c7-c730-4689-9811-f1158362ea3c
Editer le fichier /etc/fstab:

raspi$ sudo cp /etc/fstab /etc/fstab_original

raspi$ sudo vim /etc/fstab

Ajouter les informations du disque à monter à la dernière ligne de la page. Quand c’est indiqué [TAB], c’est qu’il faut appuyer sur la touche Tabulation du clavier.

UUID=55ec24c7-c730-4689-9811-f1158362ea3cd [TAB] /mnt/owncloud [TAB] ext4 [TAB] defaults,nofail [TAB] 0 [TAB] 2

D’après les notes dans cet excellent article, l’auteur a du ajouter l’option NOFAIL pour résoudre le problème de redémarrage du raspberry pi, du au fait que le disque dur externe met trop de temps à se monter, ce qui empêche le démarrage du système.

L’option DEFAULTS, inclue l’option automount de la nouvelle partition. Cet option utilise les configurations par défaut en une seule commande au lieu de rentrer la série d’option suivante: rw, suid, dev, exec, auto, nouser, async.

Et comme d’habitude, si vous ne vous sentez pas à l’aise avec les lignes de commandes,vous pouvez toujours utiliser un outil graphique commme disk-manager par exemple.

Etape 9: Test de vérification

Connectez vous à l’URL de votre Owncloud, puis faites les tests ci-dessous pour vérifier si la migration des données s’est bien déroulée, et que vous avez toujours ajouter ou supprimer des fichiers.
Comme vous pouvez le constater au niveau de la figure 2, nous avons toujours la vidéo de Bunny, ainsi qu’on a téléversé un nouveau fichier et tout s’est bien déroulé.

Selection_008
fig 2. Ajout d’un nouveau fichier

L’espace disque disponible est bien celui auquel on s’attend.

Selection_009
fig 3. Vérification de l’espace disponible

Le test suivant consite à redémarrer le raspberry pi, puis de vérifier si le disque dur externe est monté automatiquement suite à ce redémarrage.

raspi$ sudo reboot

Attendez une bonne petite vingtaine de secondes, puis reconnectez vous de nouveau en ssh au raspberry pi. N’hésitez pas à pinger l’appareil pour vérifier qu’il est accessible ou non.

Taper la commande

raspi$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  4.6G  2.4G  66% /
devtmpfs        483M     0  483M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  6.6M  481M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/mmcblk0p1   60M   21M   40M  35% /boot
/dev/sda1      1008G  341M  957G   1% /mnt/owncloud
tmpfs            98M     0   98M   0% /run/user/1000

Si vous voyez la partion /dev/sda1 monté comme prévu, et ben je n’ai rien à ajouter de plus. Féliciation! Ce chapitre est terminé pour vous.

Sources et Références

How to set/change data directory
Deplacer le contenu de /var/www/html vers /home/USERNAME/
comment migrer uniquement les donnees dans home
Raspberry Pi OwnCloud 9 (Drop box Clone)
Install OwnCloud on your Raspberry Pi
Simple Owncloud Installation on Raspberry Pi 2
Owncloud and an external hard drive
What’s the most “correct” mount point for a permanent NTFS partition?
Ubuntu: Mount The Drive From Command Line
Comment ajouter un nouveau disque dur
How to set/change data directory
Le montage des systèmes de fichiers
Raspberry Pi External Storage Part 1 – Step by Step Permanent External Hard Drive (plus OwnCloud Adjustments)

Connection SSH

Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian
Chap 2. Installation de OwnCloud sur un Raspberry Pi
Chap 3. Sécuriser votre RPi
Chap 4. Accès au serveur Web Owncloud à partir de son nom de domaine
Chap 5. Connection SSH
Chap 6. Les fichiers journaux
Chap 7. Let’s Encrypt (LE)
Chap 8. Ajout d’un disque dur externe et migration de données
Chap 9. Suppression et ajout d’une interface graphique
Chap 10. Rappel sur les différentes étapes pour mettre en place un server dédié à Owncloud

Chap 5. Connection SSH

Qu’est ce que le SSH?

« Secure Shell (SSH) 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. Par la suite, tous les segments TCP sont authentifiés et chiffrés.
Le protocole SSH a été conçu avec l’objectif de remplacer les différents programmes rlogin, telnet, rcp, ftp et rsh. » (Wikipedia)

Pour faire simple, il y a deux manières pour se connecter à un serveur distant.

Un de façon non sécurité, et que l’on déconseille fortement, puisque tout le traffic passe en mode clair sur le réseau. C’est comme si vous communiquer avec votre banquier à l’autre bout de la rue, avec un mégaphone, pour lui faire part de vos possessions et biens, ainsi que leurs emplacements.

L’autre méthode serait de chiffrer tous les échanges entre votre poste et le serveur, afin que ces communications restent confidentiels à l’abris des regards indiscrets.

Pas mal d’astuces sur la façon de mieux sécuriser l’accès au serveur SSH on déjà été proposés dans les précédents chapitre, donc je ne vais pas m’étaler dessus.Ici, je vais essayer d’ajouter quelques points non vus précédement.

Gel du terminal après disconnection du SSH

Vous avez certainement noté un problème de « gel » de votre terminal, un certain temps d’inactivité, lorsque vous vous connectez en SSH à votre serveur, et que vous n’arrivez plus à prendre la main dessus! C’est tout à fait normal, puisqu’un fois la session en SSH terminée, votre machine se déconnecte du serveur, mais ne vous laisser pas reprendre la main sur la console.

Pour y remédier, vous avez une liste de méthode.

Méthode 1:

Taper deux fois la touche « ENTREE » puis successivement sur les touches « ~ » et « . », sans les guillemets.

$ man ssh
!---Tronquée---!
The supported escapes (assuming the default ‘~’) are:
~.      Disconnect.
!---Tronquée---!

Méthode 2:

Si vous pensez que cette solution n’est pas pratique, vous pouvez toujours ajouter une ligne avec la commande « ~. », sans les guillemets bien sûr, dans le fichier .ssh/config de votre RPi.

raspi$ vim ~/.ssh/config
~.
raspi$ sudo service ssh restart

Méthode 3:

Une solution des plus classique, serait d’éditer l’un des fichiers de configuration du serveur ou de votre poste de travail. Il n’est pas nécessaire de le faire sur les deux à la fois.

SSH serveur

raspi$ sudo vim /etc/ssh/ssh_config
ClientAliveInterval 60
raspi$ sudo service sshd restart

N’oublier pas de redémarrer le service correspondant à chaque modification d’un fichier de configuration sur un serveur.

SSH client

Ajouter les deux lignes ci-dessous dans le fichier dans la configuration locale de votre ssh.

monOrdi$ vim ~/.ssh/config
Host *
ServerAliveInterval 60

L’option ServerAliveInterval va garder la connection active même si l’utilisateur est inactif. Et l’option ClientAliveInterval va tout de même envoyer des paquets vides vers le serveur toutes les 60 secondes, pour garder la connection active.

Méthode 4:

Sur le même principe qu’à la méthode 3, vous pouvez ajouter comme argument ServerAliveInterval, lorsque vous vous connectez en SSH.

monOrdi$ ssh -o ServerAliveInterval=60 user@example.com

Méthode 5:

Configurer PUTTY, avec une valeur de keepalive interval:

monOrdi$ sudo apt-get install putty

037

 

Création d’une Banière personnalisée

Afficher un message d’acceuil (Message du jour ou MOTD) lors de la connection en SSH, est une très bonne idée. Une banière peut servir à afficher un message d’avertissement, etc., celà dépend de vos besoins.
Le message d’information affiché par défaut, lors de la connection sur notre serveur RPi nous donne les informations d’utilisation du logiciel, ainsi que les informations sur la dernière connection réussie sur le serveur.

018

Pour donner une touche plus personnelle à votre banière, rendez-vous dans le fichier /etc/motd et apportez-y toutes les modifications nécessaires.

Si comme moi, vous êtes nostalgique du logo de tux, alors récupérer le logo sur github. Copier  ensuite avec un outil graphique en mode root (gvim, gksudo gedit, etc.), les lignes situées entre BEGIN_LOGO et END_LOGO.
Mais avant tout, garder tout de même une copie de l’ancien fichier motd.

raspi$ sudo mv  /etc/motd /etc/motd_old

Il va de soit que, pour se connecter en mode graphique, il nous faut un visionneur de bureau distant, Remmina par exemple, et qu’il faut aussi ouvrir le port 3389 du parefeux de votre serveur RPi si ce n’est pas le cas.

raspi$ sudo gvim /etc/motd

Et voici le résultat avec le choix de « classic.log ».

019

Customisation du MOTD

Pour un tunning un peu plus poussé de votre page, voici deux liens qui pourraient vous être utile: Customize your MOTD – LINUX,et Custom MOTD – Message of the Day.

Mettre à jour de la passephrase

Dans le cas où vous avez créé une passphrase lors de la création de clés pour une connection sécurisée entre votre poste et le serveur RPi, si comme moi vous avez utilisé un mot de passe simple pour faire des tests, il est donc temps de mettre un mot-de-passe un peu plus sûr.
Pour ce faire, à partir de l’ordinateur sur lequel vous avez généré la clé, taper,

monOrdi$ cd ~/.ssh/

monOrdi$ ls
id_rsa id_rsa.pub
monOrdi$ ssh-keygen -f id_rsa -p

A lire

Je vous recommande aussi de lire les articles suivants, si vous souhaitez approfondir vos connaissances sur le SSH:

Secure Secure Shell
Awesome SSH
The ultimate ssh tips & tricks

Sources et Réferences

SSH – ubuntu-fr
Banner Files
OpenSSH Change a Passphrase With ssh-keygen command
Connecting to a server using SSH on Linux or Mac OS

Prise en main du RPi et installation de Mate sur un Raspbian

Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian
Chap 2. Installation de OwnCloud sur un Raspberry Pi
Chap 3. Sécuriser votre RPi
Chap 4. Accès au serveur Web server à partir de son nom de domaine
Chap 5. Connection SSH
Chap 6. Les fichiers journaux
Chap 7. Let’s Encrypt (LE)
Chap 8. Ajout d’un disque dur externe et migration de données
Chap 9. Suppression et ajout d’une interface graphique
Chap 10. Rappel sur les différentes étapes pour mettre en place un server dédié à Owncloud

Chap 1. Prise en main du RPi et installation de Mate sur un Raspbian

I. Installation de Raspbian sur un RPi(2)

Avant de se lancer dans l’installation, il faut absolument être sur et certain que la carte SSD est reconnue, et que vous avez pu l’identifiée dans votre liste de partition.

Première chose à faire serait de lancer la commande “df” quand la carte SD n’est pas insérée, puis de refaire la même manipulation après l’avoir inséré et de comparer les résultats.

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 14G 4.0G 78% /
udev 10M 0 10M 0% /dev
tmpfs 766M 9.3M 756M 2% /run
tmpfs 1.9G 92K 1.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda5 433G 117G 294G 29% /home
tmpfs 383M 4.0K 383M 1% /run/user/118
tmpfs 383M 20K 383M 1% /run/user/1000
/dev/sdb1 60M 20M 41M 34% /media/matakasi/boot
 /dev/sdb2 7.2G 2.5G 4.5G 36% /media/matakasi/c7f58a52-6b71-4cea-9338-65f3b8af27bf

Ici, les deux dernières lignes se sont ajoutées. De ce fait, ma carte se trouve dans dans la partition /dev/sdb.

On peut avoir les mêmes résultats avec la commande fdisk, à la différence qu’il faut être un super utilisateur pour pouvoir la lancer la commande.

$ sudo fdisk -l

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 24575 20480 10M Linux filesystem
/dev/sda3 24576 39282687 39258112 18.7G Linux filesystem
/dev/sda4 39282688 55492607 16209920 7.7G Linux swap
/dev/sda5 55492608 976771071 921278464 439.3G Linux filesystem

Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 131071 122880 60M c W95 FAT32 (LBA)
 /dev/sdb2 131072 15523839 15392768 7.3G 83 Linux

Ceux qui ont acheté leurs raspberry avec la carte SD de 8Go, devraient avoir NOOB préinstallé dessus. Si c’est le cas, vous devriez avoir comme point de montage, pareil à la photo ci-dessous.

https://linuxintosh.files.wordpress.com/2015/07/003.jpg?w=545

Une fois que vous avez identifié la carte SD, démontez ensuite toutes les partitions concernées avec la commande umount. Ici, j’ai deux partition dans /dev/sdb (/dev/sdb1 et /dev/sdb2).

$ sudo umount /dev/sdb1
$ sudo umount /dev/sdb2

Vous pouvez toujours vérifier que tous les points de montages de la carte SD ont bien été démontés. Si vous avec déjà NOOB préinstallé, il vous faut donc démonter de /dev/sdb1 à /dev/sdb6.

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 14G 4.0G 78% /
udev 10M 0 10M 0% /dev
tmpfs 766M 9.3M 756M 2% /run
tmpfs 1.9G 92K 1.9G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda5 433G 117G 294G 29% /home
tmpfs 383M 4.0K 383M 1% /run/user/118
tmpfs 383M 20K 383M 1% /run/user/1000
$

Placez vous ensuite dans le répertoire contenant l’image raspbian. Ici, j’ai téléchargé la version Lite.

$ls
2015-11-21-raspbian-jessie-lite.img

Maintenant, copier l’image du raspbian téléchargée, vers la carte SD. Pour rappel, ma carte SD se trouve sur la partition /dev/sdb. Il faut que vous adaptez la commande ci-dessous par rapport à l’emplacement de votre carte, qui peut ne pas se trouver forcement dans /dev/sdb.

La commande par défaut pour copier une image étant dd, cependant je préfère la commande dcfldd qui indique l’avancement de la copie contrairement à dd.

$ sudo apt install dcfldd
$ sudo dcfldd if=2015-11-21-raspbian-jessie-lite.img of=/dev/sdb bs=1M
1280 blocks (1280Mb) written.
1326+0 records in
1326+0 records out
$sync

II. Configuration du Raspbian

Une fois l’installation terminée, vous pouvez insérer la carte SD dans le lecteur du Raspberry Pi, puis brancher ce dernier à un moniteur (ou écran télé avec prise HDMI). Une fois le Raspberry pi lancé, l’identifiant par défaut pour s’authentifier est pi, avec pour mot de passe raspberry.

raspberrypi login: pi
password: raspberry

Ne paniquez pas s’il n’y a pas d’interface graphique, puisqu’on va en installer un, un peu plus tard.

Il vient ensuite la partie de configuration du réseau. Si vous taper « ip add show », vous devriez avoir une adresse IP de type APIPA, c’est à dire, une adresse IP qui commence par 169.254.X.X. C’est l’adresse IP assignée automatiquement à tout ordinateur qui n’a pas pu récupérer une adresse du serveur DHCP.

De ce fait, il faudrait assigner une adresse ip statique, de préférence pour les serveurs, à notre Raspberry pi. Je propose de garder les configuration dans /etc/network/interfaces, telle qu’elles.

$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

# iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
$

Notez bien que j’ai commenté la ligne « iface eth0 inet manual »!!

Ensuite, de créer un nouveau fichier /etc/network/interfaces.d/eth0, avec les informations qu’on souhaite lui apporter. Je vais en profiter de ce chapitre pour vous faire découvrir une autre façon de créer un fichier et d’y ajouter des informations dedans.

Si vous avez des doutes sur le comment configurer une interface statique, je vous renvoie à la page officielle de debian et de ubuntu.

$ sudo cat >  /etc/network/interfaces.d/eth0 << eof
> auto eth0
>
> iface eth0 inet static
>     address 172.16.1.16
>      netmask 255.255.255.0
>      gateway 172.16.1.1
> eof

Redémarrer ensuite l’interface eth0.

# ifdown eth0

# ifup eth0

Comme vous pouvez le constater, je n’ai pas rajouté d’adresse DNS dans ce fichier. Pour ce faire, il y a plusieurs méthode, mais je préfère ne pas utiliser l’outil resolvconf, qui peut être installé à partir du dépôt de Debian. Par contre, je vais mettre à jour le fichier /etc/resolv.conf en y ajouter le ou les adresses des serveurs DNS. Par contre, cette option ne permet pas de garder les informations du fichier après redémarrage du Raspberry Pi à cause d’une mise à jour dymanique attendu de l’application resolvconf, qui n’arrivera jamais vu qu’on ne l’a pas installé. Il faut donc bloquer cette mise-à-jour en utilisant la commande chattr.

L’option +i de cette commande désactive la mise-à-jour, par contre l’option -i fait l’inverse.

# vi /etc/resolv.conf
# Generated by resolvconf
nameserver 8.8.8.8
nameserver 8.8.4.4

# chattr +i /etc/resolv.conf 

Suite à l’application de cette commande, le fichier se trouve en mode lecture uniquement.

# vi /etc/resolv.conf
# Generated by resolvconf
nameserver 8.8.8.8
nameserver 8.8.4.4
"/etc/resolv.conf" [readonly] 3 lines, 64 characters

Je vous propose ensuite d’effectuer les mises à jour de votre système et d’installer VIM.

$ sudo apt update
$ sudo apt upgrade

$ sudo apt install vim

Accéder à l’interface de configuration votre raspberry pour effectuer les manipulations suivantes:

$ sudo raspi-config
  1. Utiliser tout l’espace de la carte SD (la commande dd ne monte que la taille de l’image raspbian). Par défaut, l’espace disponible et utilisée sur votre carte est de même taille que l’image de votre raspbian. Ici, sur une carte de 8Go, l’espace disponible n’est que de 1,3Go
    pi@raspberrypi:~ $ df -h
    Filesystem Size Used Avail Use% Mounted on
     /dev/root 1.3G 1.1G 160M 87% /
     devtmpfs 459M 0 459M 0% /dev
     tmpfs 463M 0 463M 0% /dev/shm
     tmpfs 463M 12M 451M 3% /run
     tmpfs 5.0M 4.0K 5.0M 1% /run/lock
     tmpfs 463M 0 463M 0% /sys/fs/cgroup
     /dev/mmcblk0p1 60M 20M 41M 34% /boot

    Sélectionner “Expand Filesystem”, puis la taille du disque sera mise a jour après redémarrage

  2. Modifier le mot de passe de l’utilisateur pi, qui est l’utilisateur par defaut
  3. Activer le SSH sur le raspberry pi, si ce n’est pas déjà fait. Il faut aller dans “Advanced Options>SSH>Enable”
  4. Optionnellement, vous pouvez installer le paquet XRDP, pour l’accès en RDP vers le raspberry.
    $ sudo apt install xrdp
  5. Redémarrer le système:
    $ sudo reboot

III. Installation de Mate sure un Raspbian

L’installation d’une interface graphique n’est pas une priorité pour moi, vu que je vais créer un serveur owncloud. Mais pour curiosite, je vais le faire quand même avec l’aide de cet article.

Récupérer l’adresse ip de votre RPi avec la commande

$ ip add show

Puis accéder en SSH ou avec Remmina installé à partir d’un ordinateur distant, vers le RPi. Si vous n’y avez pas accès, pinger le RPi sinon, vérifier que votre ordinatuer et le RPi sont sur le même réseau.

ordinateur$ ssh pi@172.16.1.16

Une fois connectée à votre RPi, effectuer une petite vérification avant d’installer quoi que ce soit:

pi@raspberrypi:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.2G 1.1G 5.9G 15% /
devtmpfs 459M 0 459M 0% /dev
tmpfs 463M 0 463M 0% /dev/shm
tmpfs 463M 6.2M 457M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 60M 20M 41M 34% /boot

Ici, j’ai bien les 8Go d’espace de ma carte SD. Si vous vous lancer dans l’installation de Mate ou d’un autre programme qui nécessite beaucoup d’espace, alors que vous n’en avez pas assez, vous risquez d’avoir quelques soucis.

Maintenant qu’on est sur d’avoir assez d’espace, on peut commencer l’installation de Mate.

pi@raspberrypi:~ $ echo "deb http://archive.raspbian.org/mate jessie main" |sudo tee -a /etc/apt/sources.list.d/mate.list

pi@raspberrypi:~ $ cat /etc/apt/sources.list.d/mate.list
deb http://archive.raspbian.org/mate jessie main

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
pi@raspberrypi:~ $ sudo apt install mate-core mate-desktop-environment

pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt lightdm

Une fois notre DE (environement de bureau) installé, je vais changer la configuration du RPi pour l’obliger à se lancer en mode console à chaque démarrage. Pour se faire, lancer encore une fois la commande:

$ sudo raspi-config

Dans boot Options, sélectionner Console Autologin. N’ayez crainte, le RPi restera toujours joignable en RDP sur lequel on pourra avoir l’environement de bureau récemment installé.

Si vous êtes satisfait de votre configuration sur le RPi, je vous recommande vivement d’effectuer une copie de votre image, dans le but de le cloner sur un autre appareil, ou juste commeune image de sauvegarde à réutiliser plus tard.

Raspian en version Lite est assez dépourvu de plusieurs applications. Ce n’est pas très mauvais en soit, puisqu’il ne vous reste plus qu’à installer ce qui vous intéresse. Entre autre, je vous conseille d’installer vim et iceweasel.

IV. Sauvegarde/Clone de la configuration

Comme précédement, dans un premier temps, repérer la partition où est montée la carte SD, puis démontez toutes les partitions dessus.

$ sudo umount /dev/sdb1
$ sudo umount /dev/sdb2

Placer vous dans un repértoire de votre ordinateur, dans lequel vous souhaitez récupérer l’image du disque. Ici, j’ai créer un dossier Backup,

$ cd ~/Backup

Puis lancer la commande:

$ sudo dd if=/dev/sdb of=sd.img bs=4M

ou encore

$ sudo dcfldd if=/dev/sdb of=sd.img bs=4M

Faites attention aux options IF (Input File), qui est la source, et OF (Output File), qui est la destination. La valeur de dd n’a pas de grande importance, que ce soit 512k, 1M ou 4M. Plus cette valeur est grande, plus la copie est rapide, mais avec des risques.

Référence:

Installing Operating System Images on Linux
RPi Easy SD Card Setup

I. Cross-Compilation: Création du noyau

Tentative d’installation d’un Debian sur un serveur NAS Buffalo LS-XL

Il y a quatre étapes pour l’installation d’un système Debian sur un serveur NAS Buffalo LS-XL. Je précise que j’utilise aussi Debian sur le système hôte.

Dans un premier temps, il faut créer deux modules, un noyau et un initramfs (ou initrd), pour pouvoir démarrer le serveur NAS avec nos propres configurations. Ceux installés sur le serveur ne nous permet pas d’installer un autre système d’exploitation que celui livré par défaut.

Ensuite il nous faut un serveur TFTP pour y placer tout ce dont on a besoin pour l’amorçage du serveur à partir du réseau. Bien entendu, il y aura besoin d’un système hôte pour accéder à distance au contenu du serveur, et y installer le système d’exploitation.

En dernier, il nous faut de nouveau créer un nouveau noyau pour pouvoir commencer cette fois ci, l’installation de Debian sur le serveur NAS puisqu’il n’y en a pas de noyau sur mesure pour les serveurs LS-XL sur le site officiel de Debian.

Avant de commencer les manipulations, je vous propose de lire entièrement cet article, puis de comprendre ce qu’il faut faire et ensuite. Les étapes intermédiaires, comme par exemple accéder à un dossier, ne seraient pas toujours affichés dans la liste des commandes à taper. Cependant, pour vous aider à vous situer dans les différents répertoires, j’ai placé leurs noms avant chaque commande (ex. /opt/nasbuild# ). Le dièse “#” implique que les commandes doivent être effectuées en mode root.

Je tiens à préciser qu’on ne partira pas d’un construction d’un noyau à partir de rien. Le noyau sur lequel on va se baser serait la version 3.3.4 disponible sur le site officiel de Buffalo, et qui devrait être compatible avec les serveurs LS-XL.

I. Cross-Compilation: compilation du noyau

Dans cet article, je vais parler de la préparation d’un noyau linux compatible ARM9, à lancer lors du démarrage du serveur NAS.

Avant de parler de cross-compilation, il faut comprendre ce que c’est qu’une compilation. Si je peux le résumer ainsi, une compilation est le fait de transformer un langage compréhensible par l’homme en un langage compréhensible par une machine, en utilisant un Compilateur. Un compilateur transforme les codes sources en codes exécutables spécifique à une machine.

On parle de cross-compilation quand la machine cible, celle qui va recevoir les instructions de compilation, n’a pas la même architecture que la machine hôte, celle sur laquelle vous effectuez la compilation. Ici, je vais compiler un noyaux linux à partir d’un ordinateur MAC Intel (hôte), avec la version 3.3.4 du noyau linux, pour architecture ARM.

Dans ce qui suit, on va plutôt parler de Toolchain (chaîne de compilation), dont le compilateur n’en est qu’un élément.

Etape 1: Téléchargement de tous les tarballs nécessaire à la compilation

Les logiciels tierces, c’est à dire ceux qui ne font pas parties des logiciels par défaut dans Debian, devraient être placés dans /opt.

Note: J’ai du rajouter un tiret devant les liens en http pour éviter d’avoir des hyperliens dans les commandes à exécuter.

# cd /opt
/opt# mkdir nasbuild
/opt/nasbuild# wget _http://buffalo.jp/php/los.php?to=gpl/storage/ls-x/165/linux-3.3.4.tar.gz -O linux-3.3.4.tar.gz

Le noyaux linux fourni par Buffalo ne peut démarrer qu’avec le cross-compilateur gcc CodeSourcery arm-2007q3.

/opt/nasbuild# wget _http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/CodeSourcery/arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

Téléchargement de Mkimage, qui est un utilitaire pour nous permettre de créer les images du noyau et de l’initrd dont on aura besoin pour la suite. On en reparlera dans un autre chapitre.

/opt/nasbuild# wget _http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/mkimage

Etape 2: Préparation de l’environnement

Préparer l’environement en installant le compilateur et le mkimage.

/opt/nasbuild# tar -jxvf arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

/opt/nasbuild# cd arm-2007q3

/opt/nasbuild/arm-2007q3# ls -a
. .. arm-none-eabi bin include lib libexec share

/opt/nasbuild/arm-2007q3# cd bin

/opt/nasbuild/arm-2007q3/bin# cp ../../mkimage .

/opt/nasbuild/arm-2007q3/bin# chmod a+x mkimage

Copier mkimage dans /bin, rendez ce fichier exécutable, puis ajouter à la variable PATH le chemin pour y accéder.

/opt/nasbuild/arm-2007q3/bin# ls
arm-none-eabi-addr2line arm-none-eabi-gcov arm-none-eabi-readelf
arm-none-eabi-ar arm-none-eabi-gdb arm-none-eabi-run
arm-none-eabi-as arm-none-eabi-gdbtui arm-none-eabi-size
arm-none-eabi-c++ arm-none-eabi-gprof arm-none-eabi-sprite
arm-none-eabi-c++filt arm-none-eabi-ld arm-none-eabi-strings
arm-none-eabi-cpp arm-none-eabi-nm arm-none-eabi-strip
arm-none-eabi-g++ arm-none-eabi-objcopy mkimage
arm-none-eabi-gcc arm-none-eabi-objdump
arm-none-eabi-gcc-4.2.1 arm-none-eabi-ranlib

/opt/nasbuild/arm-2007q3/bin# echo “$PATH”
“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”

/opt/nasbuild/arm-2007q3/bin# export PATH=$PATH:`pwd`

On peut avoir le même résultat avec la commande: export PATH=$PATH:$PWD.

/opt/nasbuild/arm-2007q3/bin# echo “$PATH”
“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nasbuild/arm-2007q3/bin

Vérifier que l’on peut lancer n’importe quelle commande située de /opt/nasbuild/arm-2007q3/bin, ceci afin de nous assurer qu’on peut lancer directement la commande mkimage plus tard dans l’article.

# arm-none-eabi-gcc –version
arm-none-eabi-gcc (CodeSourcery Sourcery G++ Lite 2007q3-53) 4.2.1
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Note: il y a deux tirets « — » devant « version ».

/opt/nasbuild# wget http://buffalo.jp/php/los.php?to=gpl/storage/ls-x/165/linux-3.3.4.tar.gz -O linux-3.3.4.tar.gz

/opt/nasbuild# tar -zxvf linux-3.3.4.tar.gz

Etape 3: Compilation du Noyau

C’est le moment de créer l’image de boot (uImage) qu’on utilisera pour démarrer le serveur NAS via le réseau.

/opt/nasbuild# cd linux-3.3.4

Dans le fichier Makefile, remplacer arm-none-linux-gnueabi- par le préfixe du compilateur arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2, puis vérifier bien que “arm” est la valeur associée à ARCH.

/opt/nasbuild/linux-3.3.4# vim Makefile
!——–Tronquée————!
ARCH ?= arm
#CROSS_COMPILE ?= arm-none-linux-gnueabi-
CROSS_COMPILE ?= arm-none-eabi-
!——–Tronquée————!

Comme valeur associée au CROSS_COMPILE, on peut aussi lui donner le chemin absolue vers le toolchain ARM Linux comme suit:

CROSS_COMPILE ?= /opt/nasbuild/linux-3.3.4/bin/arm-none-eabi-

Importer, puis si nécessaire éditer les scripts Configure (./config). Deux options pour le faire:

1. Copier le fichier de configuration du noyau buffalo_nas_fw_88f6281.config dans le dossier /opt/nasbuild/linux-3.3.4.

/opt/nasbuild/linux-3.3.4# ls buffalo/configs/
buffalo_hswdhtgl_arm_100.config buffalo_nas_fw_88f6281.config
buffalo_lsgl_arm_100.config buffalo_nas_fw_88f6281_tsxel.config
buffalo_lsgl_arm_101.config buffalo_nas_fw_atom_d510_101.config
buffalo_lsgl_arm_102.config buffalo_nas_fw_atom_d510.config
buffalo_lsgl_hs_arm_100.config buffalo_nas_fw_kiri.config
buffalo_lsqgl_arm_200.config buffalo_tshtgl_arm_100.config
buffalo_lswsgl_arm_100.config buffalo_tshtgl_arm_110.config
buffalo_lswsgl_arm_200.config buffalo_tsxl_arm_100.config
buffalo_lswtgl_arm_100.config kirkwood.config
buffalo_lswtgl_arm_200.config marvell_config100.config
buffalo_lswwn_arm_200.config marvell_lsgl_100.config
buffalo_nas_fw_200.config marvell_tshtgl_100.config

Le choix du fichier de configuration buffalo_nass_fw_88f6281 n’est pas anodin. Les deux processeurs Marvell Kirkwood 88F6192 (celui de notre serveur NAS) et 88F6281, sont de la même famille et ont pratiquement les mêmes caractéristiques.

/opt/nasbuild/linux-3.3.4# cp buffalo/configs/buffalo_nas_fw_88f6281.config .config
/opt/nasbuild/linux-3.3.4# vim .config

Ci-dessous les informations qui devraient être dans le script configure, en rouge le plus important.

#CONFIG_CMDLINE
CONFIG_CMDLINE= »console=ttyS0,115200 root=/dev/ram0 panic=5 lowmem=1″
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
# CONFIG_CMDLINE_EXTEND is not set
CONFIG_CMDLINE_FORCE=y

#CONFIG_DEVTMPFS
CONFIG_DEVTMPFS=y

#CONFIG_PHONE
# CONFIG_PHONE is not set

#CONFIG_LEGACY_PTYS
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=16

#CONFIG_IP_ROUTE_CLASSID
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_ROUTE_CLASSID=y

#CONFIG_HID_SUPPORT
# CONFIG_HID_SUPPORT is not set

#CONFIG_USB_SUPPORT
# CONFIG_USB_SUPPORT is not set

Metter en commentaire tout ce qui suit, c’est à dire, aux lignes contenant CONFIG_USB, il faut y ajouter un # devant:

# CONFIG_USB_

#CONFIG_RTC_CLASS
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE= »rtc0″

CONFIG_RTC_DRV_MV=y

Mettez en commentaire les autres lignes contenant CONFIG_RTC_* , et même ceux cités ci-dessus, si vous n’en voyez pas l’utilité.

En option, vous pouvez aussi ajouter les informations ci-dessous dans le même ficher .config.

#CONFIG_TEXTSEARCH
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m

2. Une autre option, au lieu d’éditer le fichier buffalo_nas_fw_88f6281.config, serait d’importer les scripts Configure disponibles ici (lsxl-install.config) ou (kernel_.config_for_ls-xl.txt ).

/opt/nasbuild/linux-3.3.4# mv lsxl-install.config .config
/opt/nasbuild/linux-3.3.4# make oldconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf –oldconfig Kconfig
#
# configuration written to .config
#

La commande MAKE s’utilise généralement avec l’option -jN (N = nombres de processeurs/core sur la machine hôte x 2), afin d’optimiser la compilation en utilisant tous les processeurs de la machine hôte.

La commande LSPCU permet d’afficher le nombre de processeurs présent sur l’ordinateur (CPU = 4). On a donc, N = 8 (4CPU x 2).

$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 37
Model name: Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz
Stepping: 5
CPU MHz: 1197.000
CPU max MHz: 2395.0000
CPU min MHz: 1197.0000
BogoMIPS: 4788.41
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0-3

/opt/nasbuild/linux-3.3.4# make -j8 uImage
(durée de la compilation: 3 minutes)

uImage est l’image du noyau dans un format compatible u-boot.

/opt/nasbuild/linux-3.3.4# make -j8 modules
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: ‘include/generated/mach-types.h’ is up to date.
CALL scripts/checksyscalls.sh
!——–Tronquée————!
Building modules, stage 2.
MODPOST 67 modules
!——–Tronquée————!
(durée de la compilation: 1 minute)

Ces deux dernières commandes permettent de compiler le noyau ainsi que ces modules, et que l’on peut fusionner en une seule commande “make -j8 uImage modules”.

Le noyau et module nouvellement créés, sont maintenant disponible dans /opt/nasbuild/linux-3.3.4/arch/arm/boot.

/opt# tree -L 3
.
├── nasbuild
│   ├── arm-2007q3
│   │   ├── arm-none-eabi
│   │   ├── bin
│   │   ├── include
│   │   ├── lib
│   │   ├── libexec
│   │   └── share
│   ├── arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
│   ├── linux-3.3.4
│   │   ├── arch
│   │   ├── binaries
│   │   ├── block
│   │   ├── buffalo
│   │   ├── cesa
│   │   ├── COPYING
│   │   ├── CREDITS
│   │   ├── crypto
│   │   ├── Documentation
│   │   ├── drivers
│   │   ├── firmware
│   │   ├── fs
│   │   ├── include
│   │   ├── init
│   │   ├── ipc
│   │   ├── Kbuild
│   │   ├── Kconfig
│   │   ├── kernel
│   │   ├── lib
│   │   ├── LspReadme.txt
│   │   ├── LspReleaseNotes_KW.txt
│   │   ├── MAINTAINERS
│   │   ├── Makefile
│   │   ├── Makefile.88f6281
│   │   ├── Makefile.atom_d510
│   │   ├── Makefile.mv78100
│   │   ├── mm
│   │   ├── modules.builtin
│   │   ├── modules.order
│   │   ├── Module.symvers
│   │   ├── net
│   │   ├── README
│   │   ├── REPORTING-BUGS
│   │   ├── samples
│   │   ├── scripts
│   │   ├── security
│   │   ├── sound
│   │   ├── System.map
│   │   ├── tools
│   │   ├── usr
│   │   ├── virt
│   │   ├── vmlinux
│   │   └── vmlinux.o
│   ├── linux-3.3.4.tar.gz
│   └── mkimage

La prochaine étape serait de configurer initrd (initramfs) afin d’avoir les pilotes nécessaire au démarrage du serveur NAS.

 Résumé des différentes étapes de la création du Noyau

Etape 1: Téléchargement de tous les tarballs nécessaire à la compilation

/opt/nasbuild# wget _http://buffalo.jp/php/los.php?to=gpl/storage/ls-x/165/linux-3.3.4.tar.gz -O linux-3.3.4.tar.gz

/opt/nasbuild# wget _http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/CodeSourcery/arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

/opt/nasbuild# wget _http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/mkimage

Etape 2: Préparation de l’environnement

/opt/nasbuild# tar -jxvf arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2

/opt/nasbuild/arm-2007q3/bin# cp ../../mkimage .

/opt/nasbuild/arm-2007q3# chmod a+x mkimage

/opt/nasbuild/arm-2007q3# export PATH=$PATH:`pwd`

/opt/nasbuild# wget _http://buffalo.jp/php/los.php?to=gpl/storage/ls-x/165/linux-3.3.4.tar.gz -O linux-3.3.4.tar.gz

/opt/nasbuild# tar -zxvf linux-3.3.4.tar.gz

Etape 3: Compilation du Noyau

/opt/nasbuild/linux-3.3.4# vim Makefile
!——–Tronquée————!
ARCH ?= arm
#CROSS_COMPILE ?= arm-none-linux-gnueabi-
CROSS_COMPILE ?= arm-none-eabi-
!——–Tronquée————!

Copier les scripts Configure disponibles ici (lsxl-install.config) ou (kernel_.config_for_ls-xl.txt) dans .config.

/opt/nasbuild/linux-3.3.4# mv lsxl-install.config .config
/opt/nasbuild/linux-3.3.4# make oldconfig

/opt/nasbuild/linux-3.3.4# make -j8 uImage modules

Annexe: commande MAKE

Ci-dessous, en non-grisée, la liste des options utilisées pour construire notre noyau.

# make help
Cleaning targets:
clean – Remove most generated files but keep the config and
enough build support to build external modules
mrproper – Remove all generated files + config + various backup files
distclean – mrproper + remove editor backup and patch files

Configuration targets:
config – Update current config utilising a line-oriented program
nconfig – Update current config utilising a ncurses menu based program
menuconfig – Update current config utilising a menu based program
xconfig – Update current config utilising a QT based front-end
gconfig – Update current config utilising a GTK based front-end
oldconfig – Update current config utilising a provided .config as base
localmodconfig – Update current config disabling modules not loaded
localyesconfig – Update current config converting local mods to core
silentoldconfig – Same as oldconfig, but quietly, additionally update deps
defconfig – New config with default from ARCH supplied defconfig
savedefconfig – Save current config as ./defconfig (minimal config)
allnoconfig – New config where all options are answered with no
allyesconfig – New config where all options are accepted with yes
allmodconfig – New config selecting modules when possible
alldefconfig – New config with all symbols set to default
randconfig – New config with random answer to all options
listnewconfig – List new options
oldnoconfig – Same as silentoldconfig but set new symbols to n (unset)

Other generic targets:
all – Build all targets marked with [*]
* vmlinux – Build the bare kernel
* modules – Build all modules
modules_install – Install all modules to INSTALL_MOD_PATH (default: /)
firmware_install- Install all firmware to INSTALL_FW_PATH
(default: $(INSTALL_MOD_PATH)/lib/firmware)
dir/ – Build all files in dir and below
dir/file.[oisS] – Build specified target only
dir/file.lst – Build specified mixed source/assembly target only
(requires a recent binutils and recent build (System.map))
dir/file.ko – Build module including final link
modules_prepare – Set up for building external modules
tags/TAGS – Generate tags file for editors
cscope – Generate cscope index
gtags – Generate GNU GLOBAL index
kernelrelease – Output the release version string
kernelversion – Output the version stored in Makefile
headers_install – Install sanitised kernel headers to INSTALL_HDR_PATH
(default: /opt/nasbuild/linux-3.3.4/usr)
!——–Tronquée————!
Architecture specific targets (arm):
* zImage – Compressed kernel image (arch/arm/boot/zImage)
Image – Uncompressed kernel image (arch/arm/boot/Image)
* xipImage – XIP kernel image, if configured (arch/arm/boot/xipImage)
uImage – U-Boot wrapped zImage
bootpImage – Combined zImage and initial RAM disk
(supply initrd image via make variable INITRD=)
dtbs – Build device tree blobs for enabled boards
install – Install uncompressed kernel
zinstall – Install compressed kernel
uinstall – Install U-Boot wrapped compressed kernel
Install using (your) ~/bin/installkernel or
(distribution) /sbin/installkernel or
install to $(INSTALL_PATH) and run lilo
!——–Tronquée————!

Si vous avez oublié de rajouter au $PATH le chemin vers les binaires que vous avez crées, vous allez avoir un messages

# make help
make: arm-none-eabi-gcc: Command not found

Notes:

Kernel Compilation
Introduction to cross-compiling for Linux
Linux Kernel in a Nutshell
Linux Kernel Driver DataBase
Compiling a new Kernel (and Reiser4)Debian : Compiler un noyau avec « kernel-package »
Noyau Linux, modules, et initrd

Utilisation du Wifi sans Network Manager

Il est peu courant, voire même impensable, le fait de s’en passer d’un outil comme Network Manager sur des ordinateurs portables. J’avoue que ce n’est pas très pratique, surtout lorsqu’on se déplace régulièrement. L’utilité de vouloir s’en passer de cet outil, ou de tout autre outil graphic avec les mêmes fonctionnalitées, se limite donc aux ordinateurs du bureau. Au niveau sécurité, je ne vois pas l’intérêt d’utiliser le wifi sur un serveur, surtout si ce dernier est en production. Par contre, sur un serveur utilisé en lab, je peux encore comprendre.

Avant d’aller plus loin, j’espère que vous avez installé les pilotes pour votre carte wifi. Si vous ne savez pas quel est le modèle de votre carte, vous « lspci » est la commande à connaitre.

$ lspci | grep Network
03:00.0 Network controller [0280]: Broadcom Corporation BCM43224 802.11a/b/g/n [14e4:4353] (rev 01)

La commande « /sbin/iw dev » (ou « sudo iw dev »), vous donnera l’information sur le nom de l’interface wifi à configurer sur votre ordinateur.

$ sudo iw dev
phy#0
Interface wlan0
ifindex 3
wdev 0x1
addr c8:xx:xx:xx:xx:95
type managed

1. Installation du packet wpasupplicant

$ aptitude search wpasupplicant
i wpasupplicant – client support for WPA and WPA2 (IEEE 802.11i)
p wpasupplicant:i386 – client support for WPA and WPA2 (IEEE 802.11i)

Le « i » devant « wpasupplicant », indique que le packet est déjà installé. Si ce n’est pas le cas, vous pouvez toujours l’installer avec la commande

$ apt-get install wpasupplicant

Ce paquet contient ce qu’il faut pour démarrer ou arrêter une interface (ifup <interface_wifi>, ifdown <interface_wifi> ou encore ifquery <interface_wifi>). Un peu plus loin dans ce chapitre, je vais aussi vous montrer comment générer une clef en hexadécimal en utilisant cet outil, pour ne pas enregistrer le mot de passe du wifi en clair dans votre fichier de configuration.

Bref, pour faire très simple sans rentrer dans les détails, cet outil va permettre à un utilisateur de se connecter sur un réseau sans fil, à partir de moment où on arrive à s’authentifier.

2. Vérification de l’état de la carte wifi

$ ip addr show wlan0
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether c8:xx:xx:xx:xx:95 brd ff:ff:ff:ff:ff:ff

La commande « ip addr » peut se simplifier par « ip a », qui nous donnera exactement le même résultat.

$ ip link show wlan0
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether c8:xx:xx:xx:xx:95 brd ff:ff:ff:ff:ff:ff

Les commandes « ip addr » et « ip link » peuvent s’utiliser avec des options comme « show <nom de l’interface> », pour afficher juste ce qu’il nous faut comme information. Ce sont des commandes iproute2, auquelles il faut commencer à s’habituer.

Une autre commande, qui nous servira plus tard pour vérifier si on est bien connecté au wifi.

# iwconfig wlan0
wlan0 IEEE 802.11abgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=19 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off

3. Configuration manuelle de l’accès au wifi

Dans un premier temps, il faut arrêter Network Manager.

# /etc/init.d/network-manager stop

Sinon, vous pouvez aussi le supprimer définitivement.

Créer ensuite un fichier pour la configuration de l’interface wifi. Personnellement, je préfere un fichier séparé de celui du /etc/network/interfaces.

# touch /etc/network/interfaces/wlan0
# chmod 600 /etc/network/interfaces.d/wlan0

L’intérêt de la modification des droits d’accès à ce fichier, est de ne pas afficher votre clé wifi aux utilisateurs autre que Root.

Maintenant, on peut commencer le scan puis d’ajouter les informations nécessaires pour se connecter au réseau.

# iwlist scan
eth0 Interface doesn’t support scanning.
wlan0 Interface doesn’t support scanning : Network is down
lo Interface doesn’t support scanning.

La tentative de scan ne peut qu’échouer, puisque l’interface wlan0 n’est pas activée. Pour l’activer,

# ip link set wlan0 up

Si, avec cette commande, vous n’arrivez toujours pas à scanner votre réseau, passer à la commande suivante.

# ifup wlan0

On peut refaire un test de scan du réseau.

# iwlist scan
eth0 Interface doesn’t support scanning.
wlan0 Scan completed :
Cell 01 – Address: E8:XX:XX:XX:XX:AE
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=42/70 Signal level=-68 dBm
Encryption key:on
ESSID: »Mon_reseau_wifi« 
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
!————————!
Cell 02 – Address: EA:40:F2:A0:70:A0
Channel:1
Frequency:2.412 GHz (Channel 1)
!————————!

Une fois que vous avez repérer votre réseau wifi, générer un clé hexadécimale à partir du mot de passe pour y accéder. Il n’est pas nécessaire de copier la sortie de la commande « wpa_passphrase » dans un quelconque fichier, sauf pour la valeur du PSK. Généralement, sur certains blogs, on vous propose de copier justement ces informations dans le fichier /etc/wpa_supplicant.conf, mais cela affichera le mot de passe de votre wifi en clair.

$ wpa_passphrase Mon_reseau_wifi Mon_mot_de_passe_wifi
network={
ssid= »Mon_reseau_wifi« 
#psk= »Mon_mot_de_passe_wifi« 
psk=567xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx920
}

4. Configurer le fichier wlan0

Vous pouvez utiliser n’importe quel outil pour configurer ce fichier, mais je préfère utiliser VIM. Ci-dessous un outil que j’ai essayé par curiosité, mais qui ne fait rien de plus que de vous laisser le choix de l’éditeur de fichier. Par défaut, on vous propose nano.

# sensible-editor /etc/network/interfaces.d/wlan0
Select an editor. To change later, run ‘select-editor’.
1. /bin/nano <—- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
Choose 1-3 [1]: 2

# The wireless network interface with dhcp
auto wlan0
iface wlan0 inet dhcp
wpa-ssid Mon_reseau_wifi
wpa-psk 567xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx920

Copier les informations à partir de « auto wlan0 » comme ci-dessus, dans votre fichier wlan0, et avec les bonnes informations.

5. Tester la connection à internet

# ping google.com
ping: unknown host google.com

$ ip link show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether c8:xx:xx:xx:xx:95 brd ff:ff:ff:ff:ff:ff

# ifdown wlan0
Killed old client process
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on Socket/fallback
DHCPRELEASE on wlan0 to 192.168.1.1 port 67

# ifup wlan0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPOFFER from 192.168.1.1
DHCPACK from 192.168.1.1
bound to 192.168.1.10 — renewal in 1679 seconds.

# iw wlan0 link
Connected to e8:xx:xx:xx:xx:ae (on wlan0)
SSID: Mon_reseau_wifi
freq: 2412
RX: 811158 bytes (5944 packets)
TX: 135869 bytes (1041 packets)
signal: -65 dBm
tx bitrate: 78.0 MBit/s MCS 12

bss flags: short-preamble short-slot-time
dtim period: 0
beacon int: 100

# ping google.com
PING google.com (74.125.24.102) 56(84) bytes of data.
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=1 ttl=51 time=14.4 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=2 ttl=51 time=13.3 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=3 ttl=51 time=16.3 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=4 ttl=51 time=14.4 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=5 ttl=51 time=13.5 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=6 ttl=51 time=15.3 ms
64 bytes from de-in-f102.1e100.net (74.125.24.102): icmp_seq=7 ttl=51 time=13.9 ms
^C
— google.com ping statistics —
7 packets transmitted, 7 received, 0% packet loss, time 6008ms
rtt min/avg/max/mdev = 13.368/14.500/16.382/1.000 ms

$ ip a show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c8:xx:xx:xx:xx:95 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::cabc:c8ff:fecc:4e95/64 scope link
valid_lft forever preferred_lft forever

Noter que je n’ai pas utiliser /etc/init.d/networking {stop/start/restart}; puisque cette commande redémarre toutes les interfaces sans exeption. Or, ce qui m’intéresse, c’est de ne redémarrer qu’une interface spécifique. De ce fait, le meilleur choix est d’utiliser « {ifdown|ifup} <interface> ».

6. Troubleshoot

Il n’y en a pas beaucoup de commandes à connaître. Ci-dessous un bref résumé des commandes que j’ai le plus utilisées.

ip link
ip link show wlan0

sudo ifconfig -a

iwlist scan

ifdown wlan0
ifup wlan0

iw wlan0 link

dhclient -v -r wlan0
dhclient -v wlan0

7. Les logs

Si jamais vous avez des problèmes de réseau, le mieux c’est de voir ce qui se passe dans les logs. Voir les quelaues exemples ci-dessous:

# ifup wlan0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on LPF/wlan0/c8:xx:xx:xx:xx:95
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPOFFER from 192.168.1.1
DHCPACK from 192.168.1.1
bound to 192.168.1.10 — renewal in 1679 seconds.

# cat /var/log/syslog | grep wlan0
Jul 18 08:06:43 nunux kernel: [ 373.279111] IPv6: ADDRCONF(NETDEV_UP): wlan: link is not ready
Jul 18 08:06:44 nunux dhclient: Listening on LPF/wlan0/c8:xx:xx:xx:xx:95
Jul 18 08:06:44 nunux dhclient: Sending on LPF/wlan0/c8:xx:xx:xx:xx:95
Jul 18 08:06:44 nunux dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
Jul 18 08:06:53 nunux dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
Jul 18 08:06:53 nunux wpa_supplicant[3476]: wlan0: CTRL-EVENT-REGDOM-CHANGE init=BEACON_HINT type=UNKNOWN
Jul 18 08:06:55 nunux wpa_supplicant[3476]: wlan0: SME: Trying to authenticate with E8:XX:XX:XX:XX:AE (SSID=’Mon_reseau_wifi‘ freq=2412 MHz)
Jul 18 08:06:55 nunux kernel: [ 385.221724] wlan0: authenticate with E8:XX:XX:XX:XX:AE
Jul 18 08:06:55 nunux kernel: [ 385.231415] wlan0: direct probe to E8:XX:XX:XX:XX:AE (try 1/3)
Jul 18 08:06:55 nunux kernel: [ 385.433241] wlan0: send auth to E8:XX:XX:XX:XX:AE (try 2/3)
Jul 18 08:06:56 nunux wpa_supplicant[3476]: wlan0: Trying to associate with E8:XX:XX:XX:XX:AE (SSID=’Mon_reseau_wifi‘ freq=2412 MHz)
Jul 18 08:06:56 nunux kernel: [ 385.817935] wlan0: authenticated
Jul 18 08:06:56 nunux kernel: [ 385.821490] wlan0: associate with E8:XX:XX:XX:XX:AE (try 1/3)
Jul 18 08:06:56 nunux wpa_supplicant[3476]: wlan0: Associated with E8:XX:XX:XX:XX:AE
Jul 18 08:06:56 nunux kernel: [ 386.376264] wlan0: RX AssocResp from E8:XX:XX:XX:XX:AE (capab=0x411 status=0 aid=1)
Jul 18 08:06:56 nunux kernel: [ 386.376716] wlan0: associated
Jul 18 08:06:56 nunux kernel: [ 386.376751] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Jul 18 08:06:57 nunux wpa_supplicant[3476]: wlan0: WPA: Key negotiation completed with E8:XX:XX:XX:XX:AE [PTK=CCMP GTK=CCMP]
Jul 18 08:06:57 nunux wpa_supplicant[3476]: wlan0: CTRL-EVENT-CONNECTED – Connection to E8:XX:XX:XX:XX:AE completed [id=0 id_str=]
Jul 18 08:06:58 nunux avahi-daemon[2501]: Joining mDNS multicast group on interface wlan0.IPv6 with address fe80::cabc:c8ff:fecc:4e95.
Jul 18 08:06:58 nunux avahi-daemon[2501]: New relevant interface wlan0.IPv6 for mDNS.
Jul 18 08:06:58 nunux avahi-daemon[2501]: Registering new address record for fe80::cabc:c8ff:fecc:4e95 on wlan0.*.
Jul 18 08:07:05 nunux dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 21
Jul 18 08:07:08 nunux dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Jul 18 08:07:12 nunux dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
Jul 18 08:07:12 nunux avahi-daemon[2501]: Joining mDNS multicast group on interface wlan0.IPv4 with address 192.168.1.10.
Jul 18 08:07:12 nunux avahi-daemon[2501]: New relevant interface wlan0.IPv4 for mDNS.
Jul 18 08:07:12 nunux avahi-daemon[2501]: Registering new address record for 192.168.1.10 on wlan0.IPv4.
Jul 18 08:08:17 nunux wpa_supplicant[3476]: wlan0: WPA: Group rekeying completed
!——————————!
Jul 18 08:33:59 nunux dhclient: DHCPREQUEST on wlan0 to 192.168.1.1 port 67
Jul 18 08:34:17 nunux wpa_supplicant[3476]: wlan0: WPA: Group rekeying completed with E8:XX:XX:XX:XX:AE [GTK=CCMP]

# dmesg
007

Sources:

How to use a WiFi interface (Debian)
How To Connect To A WPA Wifi Using Command Lines On Debian
Debian Linux Configure Wireless Networking With WPA2
Connect to WiFi network from command line in Linux
How to connect to a WPA/WPA2 WiFi network using Linux command line
WiFi HowTo(Ubuntu)
Network configuration (Debian)
Linux Force DHCP Client (dhclient) to Renew IP Address