Lorsque le besoin se fait sentir de créer un système puissant et fiable basé sur Linux (que ce soit pour maintenir les processus d’un système ou l’hébergement Web, etc.), il devient alors nécessaire de configurer le noyau du système de manière à ce que l’ensemble du système fonctionne. de manière plus efficace et fiable.
De plus, le processus de configuration du noyau Linux est simplifié par la disponibilité du code Linux afin que n’importe qui puisse télécharger le code source du noyau Linux et l’utiliser.
Dans cet article, nous allons vous aider à comprendre certains aspects généraux de la configuration du noyau Linux et comment ajouter un nouvel appel système. Nous allons jeter un coup d’oeil.
Paramètres de noyau configurables
Le noyau du système Linux a été développé de telle manière qu’il est assez facile de le personnaliser en fonction des conditions de fonctionnement et de l’environnement matériel requis (à peu près comme tout le reste dans les systèmes UNIX et Linux).
De plus, la flexibilité de Linux vous permet de configurer son noyau de manière à ce qu’il soit possible aux administrateurs système de modifier les paramètres à tout moment.
Pour accomplir cette tâche, il existe une interface spéciale qui prend en charge les canaux de données entre le noyau et les programmes de niveau utilisateur. C’est par ces canaux que les instructions sont envoyées pour définir les valeurs des paramètres du noyau.
1. Installation des packages nécessaires
Tout d’abord, vous devez vous assurer que votre système dispose de tous les packages nécessaires à la construction du noyau. Si ce n’est pas le cas, vous devez installer ceux qui manquent.
Pour ce faire, exécutez la commande:
sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev
2. Obtenir les sources du noyau
Les meilleures sources sont prises sur le site de votre kit de distribution (si elles sont disponibles) ou sur le site officiel du noyau: kernel.org. Alors, sélectionnez une version, allez sur kernel.org et téléchargez les sources tarball requises.
L’archive obtenue sur le site officiel doit être décompressée. Pour ce faire, rendez-vous dans votre dossier de téléchargements et exécutez la commande unpack :
cd ~ / Downloads(the folder you downloaded the archive to) / tar xvf linux *
Ensuite, vous devez allez dans le dossier avec les sources du noyau décompressées. Pour la version 5.14.14, la commande ressemblera à ceci:
cd linux-5.13.7/
3. Configuration de base actuelle
Prenez la configuration actuelle du noyau et utilisez-la comme base pour en créer une nouvelle. Vous pouvez récupérer une telle configuration à l’aide de la commande:
zcat /proc/config.gz > .config
La configuration du noyau est situé dans le /boot
dossier, dans un fichier appelé configuration et la version du noyau. Pour copier le fichier de configuration dans le dossier source, exécutez la commande suivante:
cp /boot/config-(version)-generic .config
4. Paramétrage automatique
La configuration résultante doit être mise à jour avec l’état du noyau actuel. Les nouvelles versions du noyau ajoutent généralement de nouvelles options qui ne sont pas encore disponibles dans la configuration du noyau de votre distribution.
La localmodulesconfig
La commande peut être utilisée pour optimiser ce processus car c’est le moyen le plus simple de créer un noyau Linux pour votre matériel. Il vérifie les modules du noyau qui sont actuellement chargés et ne laisse que ces modules activés, tout en gardant tous les autres désactivés.
Pour exécuter le localmodulesconfig
script, utilisez la commande suivante :
make localmodulesconfig
Création d’un appel système
Alors, ouvrez un terminal de commande et, en utilisant le éditeur nano, créez un nouveau fichier de type C comme ça:
nano exp.c
Maintenant, dans l’éditeur, écrivez tous les codes C suivants :
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc, char *argv[]) { printf("PID of somefile.r = %d\n", getpid()); Char *args[] = {"First", "Second", "Third", Null}; execv("./justfile", args); return 0; }
Une fois cela fait, votre fonction principale sera créée. Ici, Printf
affiche les données de chaîne et le PID du processus du fichier unfichier.r.
Nous avons alors un tableau de args[]
types de caractères contenant certaines valeurs. L’appel système exec est utilisé pour prendre le nom de fichier et le tableau sur une ligne ci-dessus comme argument. Créez un autre fichier c, justfile.rà l’aide de l’éditeur nano.
Entrez-y le code:
#include<stdio.h> #include<unistd.h> #include<stdlib.h> int main(int argc, char *argv[]) { printf("Pid of justfile.r = %d\n", getpid()); return 0; }
Compilons maintenant les deux fichiers à l’aide de la collection de compilateurs GNU :
gcc –o somefile somefile.r gcc –o justfile justfile.r
Lorsque nous exécutons le unfichier.r fichier, il sort la première instruction d’impression à partir de unfichier.r fichier et les deux lignes d’impression de justfile.r comme vous pourrez le voir ci-dessous :
./somefile PID of somefile.r = 2602 PID of justfile.r = 2602