Linux

BIOS/MBR vs UEFI/GPT

Dans cet article nous allons voir quelles sont les différences entre MBR et GPT et pourquoi il est nécessaire de connaître les connaître pour installer un OS linux. MBR comme GPT sont tous les deux des systèmes de partitionnement. MBR (Master Boot Record) est le système de partition utilisé sous BIOS tandis que GPT (GUID Partition Table) est utilisé par BIOS. Il est très important de faire la distinction entre ces deux système et surtout de savoir si notre ordinateur fonctionne sous BIOS ou sous UEFI. En effet suivant le système de partitionnement utilisé l'installation d'un OS est un peu différente.

BIOS, pour Basic Input Output System, est le système élémentaire historique d'entrées-sorties de votre ordinateur. C'est un logiciel qui va être utilisé afin vérifier le bon fonctionnement de tous les composants de votre ordinateur (on parle de l'étape de Power-On Self Test). Une fois cette vérification faite, et si tout fonctionne correctement, le BIOS va faire appel à la MBR afin de charger le système d'exploitation.

Cette MBR est en fait le premier secteur adressable d'un disque dur dont la taille est fixé à 512 octets.  Sur cette MBR sont stockés la table des partitions (contenant des informations relatives à nos partitions telles que leurs tailles), une routine d'amorçage dont le but est de charger le système d'exploitation ainsi que quelques autres informations dont on ne discutera pas au cours de cet article.

Voici schématiquement à quoi ressemble une MBR:

Au tout début de la MBR se trouve la routine de 440 octets. Cette routine c'est le micro programme en charge de lancer notre système d'exploitation. C'est ce qu'on appelle plus communément un bootloader. Ensuite nous avons la table des partitions primaires. Cette table peut contenir au maximum 4 entrées qui disposeront chacun de 16 octets leurs permettant de stocker des métadonnées (taille de la partition, adresse mémoire du début de la partition, indicateur de boot...). Enfin nous aurons une signature obligatoire située à l'octet 510 et 511 et dont la valeur doit toujours être "0x55AA".

Lorsque vous allumez votre ordinateur et une fois le Power-On Self Test terminé, le BIOS va parcourir la table des partitions primaires et rechercher la partition ayant le flag "active". Ce flag est en fait le premier octet de chacune des entrées de la table des partitions:

Si votre ordinateur a correctement été installé alors cette partition devrait être la partition /boot dans lequel se trouve le kernel Linux, potentiellement le répertoire contenant grub ainsi que d'autres binaires.

Seulement voilà, sous MBR une partition ne peut pas stocker plus de 2,2 To de données or aujourd'hui il n'est pas rare de voir des serveurs ayant besoin de plusieurs dizaines de To de stockage. MBR n'est donc pas adapté à ces besoin. Pour remédier à ce problème un nouveau système de partitionnement est née: GPT et avec lui est apparu UEFI.

UEFI (Unified Extensible Firmware Interface) est donc le remplaçant de BIOS et ce depuis 2012. UEFI introduit un nouveau système de partitionnement GPT (GUID Parition Table). La structure de la GPT est fondamentalement différente de celle d'une MBR classique:

Premièrement nous pouvons voir que la GPT n'est pas composée que d'un seul secteur mais de deux. Le premier, dit primaire, est situé au début du disque tandis que le second, dit secondaire, est situé à la fin du disque. En fait GPT impose la création d'une GPT secondaire qui n'est en fait rien d'autre qu'une backup de la GPT primaire.

En plus de cette double structure GPT on peut aussi voir qu'il n'existe plus d'espace disque alloué à une potentielle routine. Et oui, sous UEFI le bootloading est opéré par le bootloader généralement stocké sur le disque et plus précisément sur la partition GPT /boot/efi/.

L'avantage de GPT c'est qu'il est dorénavant possible de créer jusqu'à 128 partitions par disque ayant chacune une taille maximale de 256To. C'est pourquoi UEFI est aujourd'hui le micro-programme exploité par défaut par les constructeurs de cartes mères.

Alors c'est super tout ça mais comment je sais si mon ordinateur fonctionne sous BIOS ou UEFI ? C'est assez simple à déterminer en fait, soit vous vous rendez dans les paramètres de votre carte mère en tapotant F11, F12 ou tout autres touches à l'allumage de votre ordinateur. Soit vous pouvez effectuer cette vérification directement depuis votre système d'exploitation actuel.

Si le répertoire /sys/fimrware/efi est présent alors votre ordinateur tourne sous UEFI

Vous pourrez accéder aux paramètres système de votre ordinateur et vérifier le contenu de la variable BIOS Mode:

Si vous voyez "Legacy" c'est que votre ordinateur tourne sous BIOS autrement ça sera de l'UEFI.

Administration générale

Administration générale

Dézinguer le network manager

Au cours de cet article nous allons modifier des outils permettant d’assurer le fonctionnement de nos interfaces réseaux. Par conséquent il y aura une courte période où vous n’aurez plus accès à Internet et donc à cet article. Je vous invite donc à télécharger cette page sur votre ordinateur via la commande suivante :

https://whiteflag.blog/books/linux/page/dézinguer-le-network-manager

Sur Linux, on dispose d’un petit outil bien sympathique qui nous permet de nous connecter à nos réseaux Wi-Fi’s et/ou filaires facilement : le NetworkManager !

Selon le site officiel de la distribution debian,

Le but essentiel de NetworkManager est de rendre la configuration du réseau et son paramétrage aussi indolores et automatiques que possible. Si on utilise DHCP, NetworkManager est destiné à remplacer les routes prédéfinies, obtenir des adresses IP d’un serveur DHCP et modifier les serveurs de noms chaque fois qu’il le juge opportun. En effet, le but de NetworkManager est de faire en sorte que les connexions réseau fonctionnent simplement.

wiki.debian.org

Alors oui, le NetworkManager simplifie grandement la vie. Il suffit de cliquer sur l’icône, de sélectionner son point d’accès Wi-Fi et d’entrer le passphrase pour être connecté au réseau. Cependant on ne sait pas vraiment ce qu’il se passe derrière et ça c'est chiant

Donc aujourd’hui on va voir comment désactiver le Network Manager et se connecter aux réseaux manuellement.

I/ Désactiver Network Manager

Avant de désactiver le Network Manager il va falloir installer deux paquets :

- Le paquet resolvconf qui va nous permettre de faire de la résolution DNS.

sudo apt install resolvonf

- La suite d’outils iw qui nous permettra de jouer avec le réseau Wi-Fi.

sudo apt install iw

Une fois que vous les avez téléchargé, nous pourrons désactiver le Network Manager. Pour cela il suffira d’entrer ces lignes :

sudo systemctl stop NetworkManager #Pour le stopper
sudo systemctl disable NetworkManager #Pour le désactiver

Ne supprimez pas le paquet NetworkManager ! On ne sait jamais ce qui peut arriver et vous vous retrouveriez bien bête en cas de problèmes. Si jamais vous avez à nouveau besoin du NetworkManager alors vous pourrez le réactiver en utilisant ces commandes :

sudo systemctl enable NetworkManager #Pour l'activer
sudo systemctl start NetworkManager #Pour le démarrer

Que vous l’activiez ou le désactiviez, il sera obligatoire de redémarrer votre machine :

sudo reboot

OK, à partir de maintenant vous n’aurez plus accès à Internet. Suivant le réseau auquel vous voulez vous connecter, vous aurez des outils différents à utiliser. Du coup nous allons voir comment se connecter via WEP, WPA, WPS, aux réseaux publics et en filaire manuellement.

Avant de se connecter à un point d’accès il faut le détecter. Sans le NetworkManager nous n’avons pas d’interfaces visuelles pour nous dire quels sont les points d’accès disponibles.

Par contre nous avons l’outils iw qui va nous permettre de scanner le réseau via la commande suivante :

sudo iw dev "votre_interface_wifi" scan | less

nm1.png

Ci-dessus vous avez une partie du résultat du scan de iw. Rien ne vous empêche, bien évidemment, d’utiliser la commande grep afin de rechercher un SSID (identifiant réseau) spécifique. A partir du résultat de iw nous serons en mesure de nous connecter à n’importe quel point d’accès et ce grâce à deux utilitaires: wpa_supplicant et wpa_passphrase.

II/ Connexion aux réseaux publics

La connexion au réseau public est très rapide à faire, il suffit de créer un fichier contenant ces lignes :

network= {
	ssid="Nom de votre point d'accès"
	ou
	bssid="Addresse MAC du point d'accès"
	key_mgmt=NONE
}

Il sera possible d'utiliser le SSID ou le BSSID (ou les deux) afin de se connecter au point d'accès. Ensuite nous n'aurons plus qu'à utiliser ces deux commandes:

wpa_supplicant -B -i <interface wifi à utiliser> -c <fichier de configuration>
dhclient <interface wifi à utiliser>

La première commande nous permettra d'initialiser la connexion au point d'accès tandis que la seconde nous permettra de faire une demande de bail DHCP.

III/ Connexion à un AP utilisant WEP

Pour se connecter à un AP qui utilise WEP Il faudra créer un fichier ayant ce contenu:

network={
    ssid="Nom du point d'accès"
    key_mgmt=NONE
    wep_key0="passphrase"
    wep_tx_keyidx=0
}

Pour rappel, WEP permet l'utilisation de quatre clés de différentes. Ici nous n'en spécifions qu'une seule via la directive wep_key0. La directive wep_tx_keyidx quant à elle indique quelle est la clé par défaut à utiliser. Puis on réutilisera les commandes:

wpa_supplicant -B -i <interface wifi à utiliser> -c <fichier de configuration>
dhclient <interface wifi à utiliser>

IV/ Connexion à un AP utilisant WPA

Pour se connecter à un point d’accès Wi-Fi utilisant WPA, nous nous servirons de l'outil wpa_passphrase qui va nous permettre de créer la PSK de notre réseau Wi-Fi:

nm4.png

Il faudra stocker l'output dans un nouveau fichier de configuration puis utiliser wpa_supplicant de la même manière que précédemment:

wpa_supplicant -B -i <interface wifi à utiliser> -c <fichier de configuration>
dhclient <interface wifi à utiliser>​

V/ Erreur courante

Pour plusieurs raisons il se peut que le terminal vous renvoie ce message :

nm8.png

Cela veut dire qu'une connexion Wi-Fi est déjà établie via wpa_supplicant. Pas de panique, il suffit de kill le process :

sudo pkill wpa_supplicant

et de relancer les commandes précédentes pour que la connexion s’établisse correctement :

VI/ Se connecter via le WPS

Pour se connecter via WPS il suffit d’utiliser l’outil wpa_cli:

wpa_cli wps_pbc "adresse_MAC_de_votre_point_d'accès"

L’outil wpa_cli va se mettre en écoute, il ne vous restera plus qu’à appuyer sur le bouton WPS situé sur votre box pour que la connexion s’établisse. Enfin, demandez une adresse IP via l’outil DHCPCD :

sudo dhcpcd "votre_interface_wifi"

Voilà pour la partie configuration.

Administration générale

Gestion de logs avec rsyslog

Un log c’est un événement qui permet de tracer le fonctionnement du système ou d’une application. Par exemple quand vous lancez le service apache2, un log est crée pour indiquer que le service s’est bien lancé (ou pas). Tous les logs sont stockés dans des fichiers de log.

Sur Linux, les fichiers de log se trouvent dans le répertoire /var/log :

log1.png

Dans ce répertoire on trouve des logs système tel que auth.log qui contient le détail de toutes les connexions sur la machine, et des fichiers de log qui correspondent à un service (apache2 par exemple).

Seulement voilà, nos programmes (et le système) écrivent énormément de choses et du coup lire les logs devient vite compliqué. Voyez par vous même le nombre de logs écrits par apache2 en 1 seconde :