Outils pour utilisateurs

Outils du site


issue120:labo_linux2

Table des matières

1

Would you like to learn more about Linux? If you do, one of the best ways is to have a go at building Linux From Scratch, also known as LFS. LFS was briefly mentioned in FCM#71, page 53. Some of the content of this article was taken from material on the LFS website, and the “book” that describes how to build LFS. The two guys who make up the mintCast team are each currently building LFS systems, and discussing their progress on their regular podcasts. These are broadcast every other Sunday at 19:00 UTC (my thanks to Gord Campbell for pointing me to mintCast). Linux From Scratch is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code. It was created by Gerard_Beekmans, and initially released in December 1999. One important reason for this project's existence is to help you learn how a Linux system works from the inside out. Building an LFS system helps demonstrate what makes Linux tick, and how things work together and depend on each other. One of the best things that this learning experience can provide is the ability to customize a Linux system to suit your own unique needs. Another key benefit of LFS is that it allows you to have more control over the system without relying on someone else's Linux implementation. With LFS, you are in the driver's seat and dictate every aspect of the system.

Aimeriez-vous en apprendre plus sur Linux ? Si c'est le cas, une des meilleures façons est de devoir construire Linux from Scratch (Linux à partir de zéro), connu aussi comme LFS. LFS a été brièvement cité dans le FCM n° 71, page 53. Certains contenus de cet article avaient été tirés du site Web de LFS et du « livre » qui décrit comment construire LFS. Les deux gars qui composent l'équipe mintCast sont chacun en train de construire des systèmes LFS et ils présentent leurs avancements dans leurs podcasts habituels. Ils diffusent un dimanche sur deux à 19 h UTC (merci à Gord Campbell de m'avoir indiqué mintCast).

Linux from Scratch est un projet qui vous fournit les instructions pas à pas pour construire votre propre système Linux personnalisé, complètement, à partir du code source. Il a été créé par Gerard Beekmans et publié initialement en décembre 1999. Une raison importante de l'existence de ce projet est de vous aider à découvrir comment fonctionne un système Linux de l'intérieur. La construction d'un système LFS aide à montrer ce qui rend Linux unique, comment les choses travaillent ensemble et dépendent les unes des autres. Une des meilleures choses que cette expérience d'apprentissage peut apporter est la capacité à personnaliser un système Linux pour qu'il corresponde à vos propres besoins.

Un autre bénéfice important de LFS est qu'il vous permet d'avoir un contrôle plus grand sur le système sans être tributaire de l'implémentation de quelqu'un d'autre. Avec LFS, vous êtes au poste de pilotage et imposez chaque aspect du système.

LFS allows you to create very compact Linux systems. When installing regular distributions, you are often forced to install a great many programs which are probably never used or understood. These programs waste resources. You may argue that with today's hard drive and CPUs, such resources are no longer a consideration. Sometimes, however, you are still constrained by size considerations if nothing else. Think about bootable CDs, USB sticks, and embedded systems. Those are areas where LFS can be beneficial. On completion, my LFS system was about 4.5 GB. Another advantage of a custom-built Linux system is security. By compiling the entire system from source code, you are empowered to audit everything and apply all the security patches desired. It is no longer necessary to wait for somebody else to compile binary packages that fix a security hole. Unless you examine the patch and implement it yourself, you have no guarantee that the new binary package was built correctly and adequately fixes the problem.

LFS vous permet de créer des systèmes Linux très compacts. Lors de l'installation des distributions habituelles, vous êtes souvent forcés d'installer une grande quantité de programmes qui ne seront probablement jamais utilisés ou compris. Ces programmes gaspillent des ressources. Vous pouvez arguer qu'avec les disques durs et CPU d'aujourd'hui, de telles ressources n'entrent plus en considération. Parfois, cependant, vous êtes encore contraint par des considérations de taille, si ce n'est par autre chose. Pensez aux CD, aux clés USB et aux systèmes intégrés bootables. Ce sont des secteurs où LFS peut apporter un avantage. Une fois installé, mon système LFS fait environ 4,5 Go.

Un autre avantage d'un système Linux construit spécialement, c'est la sécurité. En compilant le système entier depuis le code source, il vous est permis d'auditer chaque chose et d'appliquer tous les correctifs de sécurité désirés. Il n'est plus nécessaire d'attendre que quelqu'un d'autre compile les paquets binaires qui résolvent le trou dans la sécurité. Si vous n'examinez pas le correctif et ne l'implémentez pas vous-même, vous n'avez pas de garantie que le nouveau paquet binaire a été construit correctement et résout parfaitement le problème.

LFS seems to release new stable versions on a six-monthly basis, at the end of February and September. At the time of writing, the latest version is v8.0 released on 2017-02-25. Just be aware that when you finish a build of LFS, you end up with a minimal Linux system that has only a command-line interface and one user, root. There is a lot more work to do – using the Beyond LFS project book – to get any sort of GUI. Building an LFS system is not a simple task. In particular, as an absolute minimum, you should already have the ability to use the command-line (shell) to copy or move files and directories, list directory and file contents, and change the current directory. It is also expected that you have a reasonable knowledge of using and installing Linux software. No previous experience of compiling is required if you can follow the instructions carefully, but it would be helpful if you have compiled a kernel before.

LFS semble publier de nouvelles versions stables tous les six mois, fin février et fin septembre. Au moment où j'écris, la dernière version est la v8.0, publiée le 25/02/2017.

Soyez juste au courant que, quand vous avez fini une construction de LFS, vous vous retrouvez avec un système Linux minimal qui n'a qu'une interface en ligne de commande et un seul utilisateur, root. Il y a encore beaucoup de travail en plus à faire - en utilisant le livre « Beyond LFS project » (Au-delà du projet LFS) - pour disposer d'une sorte d'environnement graphique.

La construction d'un système LFS n'est pas une tâche simple. En particulier, comme minimum absolu, vous devez déjà être capable d'utiliser la ligne de commande (shell) pour copier et déplacer des fichiers et des répertoires, lister les contenus des répertoires et des fichiers et changer de répertoire courant. Il est aussi escompté que vous avez une connaissance raisonnable de l'utilisation et de l'installation des logiciels Linux. Aucune expérience préalable de compilation n'est requise si vous pouvez suivre les instructions avec soin, mais ça aiderait si vous avez déjà compilé un noyau auparavant.

2

These are some of my experiences from builds of 7.6, 7.8, 7.10 & now 8.0. My first build of LFS 7.6 took me about 50 hours spread over 7 days. This was on a Pentium 4 box with only 512 MB of RAM. It included reading everything three times before actually doing it, and also reading multiple man-pages to understand what all the unfamiliar options I was using meant. My second build on a similar box ran into problems (see 8.3 Compiling the Kernel (drivers) below), but by my third build, I was down to about 25 hours work (i7 CPU). My build of 8.0, on a box with a Celeron CPU, took about 34 hours. Of this, about 12 hours were taken to compile just GCC, so don’t think you have to sit and watch your display screen the whole time. LFS is designed to be built in one session. That is, the instructions assume that the system will not be shut down during the process. That does not mean that the system has to be done in one sitting. You can continue to do other work on your host system whilst compiling is being done in another (terminal) window. The issue is that certain procedures have to be re-accomplished after a reboot if resuming LFS at different points. The book does explain how to do this if necessary.

J'ai quelques expériences de construction des 7.6, 7.8, 7.10 et maintenant 8.0. Ma première construction de LFS 7.6 m'a demandé 50 heures réparties sur 7 jours. C'était sur un boîtier avec un Pentium 4 et seulement 512 Mo de RAM. Ça incluait la lecture de chaque chose trois fois avant de vraiment le faire et aussi de lire de nombreuses « man-pages » (pages d'aide) pour comprendre ce que signifiaient toutes les options peu familières que j'utilisais. Ma seconde construction sur un boîtier similaire a eu des problèmes (voir 3.8 Compiling the Kernel (drivers) - [3.8 Compiler le noyau (pilotes)] - ci-dessous), mais lors de ma troisième construction, je suis descendu à 25 heures de travail (processeur i7). Ma construction de la 8.0, sur un boîtier avec un processeur Celeron, a pris environ 34 heures. Là dessus, environ 12 heures ont été nécessaires pour compiler GCC seulement ; aussi, ne pensez pas que vous allez vous asseoir et regarder votre écran d'affichage en permanence.

LFS est conçu pour être construit en une session. C'est-à-dire que les instructions supposent que le système ne sera pas arrêté pendant le traitement. Cela ne signifie pas que le système doit être fait en une séance. Vous pouvez continuer à faire d'autres travaux sur votre système hôte pendant que la compilation se déroule dans une autre fenêtre (de terminal). Le problème est que certaines procédures doivent être effectuées à nouveau après un redémarrage, si LFS redémarre à certains endroits. Le livre explique comment le faire, si nécessaire.

Architecture Before you start, you have two decisions to make. The first is whether to build a 32-bit or a 64-bit system. A 32-bit system obviously will run only 32-bit executables. The default 64-bit build that results from LFS is considered a “pure” 64-bit system. That is, it supports 64-bit executables only. You have to recompile many of the packages again if you wish to run 32-bit executables as well. Instructions for both architectures are given in each book (see next section). My decision was 64-bit. systemd vs sysVinit The second decision determines which book you need to download from the website. Do you want to use systemd or sysVinit? I decided to go with systemd because most distros are using it now, including Debian, Ubuntu & Mint. It is also slightly less work to install.

Architecture

Avant de commencer, vous avez deux décisions à prendre. La première est de construire un système, soit 32-bit, soit 64-bit. Un système 32-bit va, bien sûr, ne faire fonctionner que des exécutables 32-bit. La construction 64-bit par défaut qui résulte de LFS est considérée comme un système 64-bit « pur ». C’est-à-dire qu'il ne supporte que des exécutables 64-bit. Vous devez recompiler de nombreux paquets si vous souhaitez lancer aussi des exécutables 32-bit. Les instructions pour les deux architectures sont données dans chaque livre (voir la prochaine section). Ma décision était 64-bit.

systemd vs sysVinit

La seconde décision détermine quel livre vous devez télécharger depuis le site Web. Voulez-vous systemd ou sysVinit ? J'ai décidé de prendre systemd parce que la plupart des distrib. l'utilisent maintenant, y compris Debian, Ubuntu et Mint. Il demande aussi légèrement moins de travail à l'installation.

On my first build, using v7.6, I started using the pdf version of the book. However, this is a little confusing in places as it does not have any hyperlinks. You can download the complete book in one html file (LFS-BOOK-8.0-systemd-NOCHUNKS.html), but my preference is for the tarball version. Download this from linuxfromscratch.org/lfs/downloads/stable-systemd/LFS-BOOK-8.0-systemd.tar.bz2 . Not only does this contain the complete book using smaller individual pages for each section (thereby making it easier to read), it also contains the md5sums and wget-list files, meaning it is the only file you need to download at this stage. It also has the smallest file size of the 3 different versions of the book. The wget-list files for systemd & sysVinit versions of LFS appear to be the same, so if you use wget to download your packages, you get all the packages to build both versions. Note however, that the required packages for systemd & sysVinit are slightly different. Of the 79 packages on the wget-list, 65 tarballs and 6 patches are common. For systemd, 2 tarballs are unique (dbus, systemd). For sysVinit, 5 tarballs & 1 patch are unique (eudev, bootscripts, sysklogd, sysvinit, udev, sysvinit-patch).

Lors de ma première construction, en utilisant la 7.6, j'ai commencé par utiliser la version pdf du livre. Cependant, il est un peu confus à certains endroits car il n'a aucun hyperlien. Vous pouvez télécharger le libre complet en un seul fichier html (LFS-BOOK-8.0-systemd-NOCHUNKS.html), mais ma préférence va à la version tarball. Téléchargez-la depuis linuxfromscratch.org/lfs/downloads/stable-systemd/LFS-BOOK-8.0-systemd.tar.bz2. Non seulement celle-ci contient le livre complet en utilisant des petites pages individuelles pour chaque section (de ce fait, plus facile à lire), mais il contient aussi les fichiers md5sums et wget-list, signifiant que c'est le seul fichier que vous devez télécharger à cette étape. Il a aussi la plus petite taille de fichier des 3 versions différentes du livre.

Les fichiers wget-list pour les versions systemd et sysVinit de LFS semblent identiques ; aussi, si vous utilisez wget pour télécharger vos paquets, vous obtenez tous les paquets pour construire les deux versions. Cependant, notez que les paquets requis pour systemd et sysVinit sont légèrement différents.

Sur les 79 paquets de wget-list, 65 tarball et 6 correctifs sont communs. Pour systemd, 2 tarball sont uniques (dbus, systemd). Pour sysVinit, 5 tarball et 1 correctif sont uniques (eudev, bootscripts, sysklogd, sysvinit, udev, sysvinit-patch).

3

General Overview of Building LFS The LFS system is built by using an already installed Linux distribution. This is referred to as the host system. After preparing a partition on which to build LFS, you download the various source packages (about 356 MB). Then, a preliminary toolchain must be compiled consisting of the tools used to compile LFS, like GCC, glibc, binutils and other necessary utilities. Next, the root directory must be changed (using chroot) to the toolchain's partition to start building the final system. The final toolchain can then be compiled. One of the first packages to compile is glibc; after that, the toolchain's linker must be adjusted to link against the newly built glibc, so that all the remaining packages that will make up the finished system can be linked against it as well. After some simple configuration files are created, the kernel must be compiled and GRUB installed before booting into your new LFS system.

Aperçu général de la construction de LFS

Le système LFS est construit en utilisant une distribution Linux déjà installée. Celle-ci sera considérée comme le système hôte. Après avoir préparé une partition sur laquelle construire LFS, vous téléchargez les différents paquets sources (environ 356 Mo).

Ensuite, une chaîne d'outils préliminaire doit être compilée, comprenant les outils utilisés pour compiler LFS, comme GCC, glibc, binutils et d'autres utilitaires nécessaires. Ensuite, vous devez changer de répertoire racine (en utilisant chroot) pour celui de la partition de la chaîne d'outils, pour commencer à construire le système final. La chaîne d'outils finale peut alors être compilée. Un des premiers paquets à compiler est glibc ; après cela, l'éditeur de liens (en anglais linker) de la chaîne d'outils doit être ajusté pour faire le lien avec le glibc nouvellement construit ; ainsi, tous les paquets restants qui constitueront le nouveau système peuvent aussi être liés à ce nouveau glibc. Après avoir créé quelques fichiers de configuration simple, le noyau peut être compilé et GRUB installé avant de démarrer dans votre nouveau système LFS.

Host System Requirements My host system for v8.0 used an Intel Celeron 1.80GHz CPU with 2GB of RAM. I recycled an old Seagate 160 GB SATA drive just for this LFS build. I then installed, as the host system, a fresh install of Linux Mint 18.1 Serena. The majority of the host minimum requirements are met by installing the “build-essential” package. This did not meet the requirement for makeinfo which is part of the texinfo package, so I installed that as well. Two bash scripts are created to confirm your host system meets the software requirements.

Exigences pour le système hôte

Mon système hôte pour la v8.0 utilise un processeur Celeron 1,8 GHz d'Intel avec 2 Go de RAM. J'ai recyclé un vieux disque SATA 160 Go de Seagate uniquement pour cette construction de LFS. J'ai ensuite installé, comme système hôte, une installation toute fraîche de Linux Mint 18.1 Serena. La majorité des exigences minimales de l'hôte sont réalisées en installant le paquet « build-essential ». Ceci ne remplit pas les exigences pour ce qui est de makeinfo qui est une partie du paquet texinfo, que j'ai donc aussi installé. Deux script bash sont créés pour vous confirmer que votre système hôte remplit les exigences logicielles.

Partitioning My preference is to use a GParted live CD to do my partitioning work. I disconnected the existing 1 TB HDD in the host box, and installed an old 160 GB drive just for this LFS build. With KISS (Keep It Simple Stupid) in mind, using GParted I created three primary partitions. I used the older MBR partition table (msdos in GParted) rather than a newer GPT scheme. /dev/sda1 Linux Mint 18.1 Serena /dev/sda2 Swap /dev/sda3 LFS 8.0 Make a note of the UUIDs for each of the partitions. You may want to include them in your fstab file (see 8.2 Filesystem Table below). I had no need to create a separate partition for /home as I did not intend to keep personal files on this drive. After booting into the host system, the new partition(s) can be mounted. Then I installed my host system on /dev/sda1.

Partitionnement

Je préfère utiliser Gparted en Live CD pour faire mon travail de partitionnement. J'ai déconnecté le disque dur de 1 To dans le boîtier hôte et installé un vieux disque de 160 Go juste pour cette construction de LFS. Avec KISS (Keep It Simple Stupid - Fais-le simplement et bêtement) en tête, en utilisant Gparted, j'ai créé trois partitions primaires. J'ai utilisé l'ancienne table de partition MBR (msdos dans Gparted) plutôt que le nouveau schéma GPT.

/dev/sda1 Linux Mint 18.1 Serena /dev/sda2 Swap /dev/sda3 LFS 8.0

Prenez note de l'UUID de chacune des partitions. Vous pouvez souhaiter les inclure dans votre fichier fstab (voir 8.2 Table du système de fichiers, ci-dessous). Je n'ai pas eu besoin de créer une partition séparée pour /home car je n'ai pas l'intention de conserver des fichiers personnels sur ce disque. Après avoir démarré sur le système hôte, la nouvelle partition peut être montée. Puis, j'ai installé mon système hôte sur /dev/sda1.

4

Downloading the Packages The source code packages and patches can be downloaded using the wget-list file included with the book tarball. DO NOT forget to check the md5sums of the downloaded files. When I downloaded the packages, wget did not report any errors. I went back and double-checked for this. However, the md5check showed an an error on one package. The file size was much smaller than it should have been, so I had to download that single package again to get it right. Creating the $LFS/tools Directory A /tools directory is created on the new partition to store the preliminary toolchain files. A new user is created with a clean environment before starting to compile the toolchain.

Télécharger les paquets

Les paquets de code source et les correctifs peuvent être téléchargés en utilisant le fichier wget-list inclus dans le livre tarball. N'oubliez PAS de vérifier les md5sums des fichiers téléchargés. Quand j'ai téléchargé les paquets, wget n'a retourné aucune erreur. J'ai recommencé et j'ai vérifié doublement cela. Et le md5check a montré une erreur dans un paquet. La taille du fichier était beaucoup plus petite que ce qu'elle aurait dû être ; aussi, j'ai téléchargé à nouveau ce seul fichier pour qu'il soit correct.

Créer le répertoire $LFS/tools

Un répertoire /tools est créé dans la nouvelle partition pour stocker les fichiers de la chaîne d'outils préliminaire. Un nouvel utilisateur est créé avec un environnement vierge avant de commencer à compiler la chaîne d'outils.

Constructing a Temporary System This is when the preliminary toolchain is compiled from the source packages. Uncompressing the Packages This is one area in the LFS book which is not fully explained for the first-time builder. For each package just use “tar xfv filename”. Then “cd” to the expanded directory before starting to follow the relevant instructions in the book. After you finish that section be sure to “cd” back up to the sources directory and remove the expanded directory before going onto the next package. After completing section 5, I strongly recommend that you backup the /tools directory containing your preliminary toolchain. If you later make a mistake in section 6 it is then easy to recover the build without having to start from the beginning again.

Construire un système temporaire

Ça se passe quand la chaîne d'outils préliminaire est compilée à partir des paquets sources.

Décompresser les paquets

C'est un des endroits du livre LFS qui n'est pas complètement expliqué pour un constructeur débutant. Pour chaque paquet, utilisez simplement « tar xfv mon_du_fichier ». Ensuite, avec « cd », passez au répertoire décompressé avant de commencer à suivre les instructions correspondantes dans le livre. Quand vous avez fini cette section, assurez-vous de revenir (cd) aux répertoires sources et supprimez le répertoire décompressé avant de passer à un nouveau paquet.

Après avoir terminé la section 5, je recommande fortement que vous fassiez une sauvegarde du répertoire /tools qui contient votre chaîne d'outils préliminaire. Si, plus tard, vous avez une erreur dans la section 6, ce sera plus facile de récupérer la construction, sans avoir à reprendre tout depuis le début.

Installing Basic System Software From this point on the new user login is no longer used. You continue as logged in as root, then create and mount some virtual filesystems using the host as a basis. You then chroot to the LFS system and create a new filesystem tree on the LFS partition and create some essential files and symlinks. Next you re-compile the toolchain, this time putting them in their final places. This is followed by compiling and installing all the remaining packages.

Installer le logiciel de base du système

À partir de ce point, le login du nouvel utilisateur n'est plus utilisé. Vous continuez en vous identifiant comme root, puis vous créez et montez certains systèmes de fichiers virtuels en utilisant l'hôte comme base. De là, vous « chrootez » (utiliser la commande chroot pour sauter dans un autre système) dans le système LFS, créez une nouvelle arborescence de système de fichiers sur la partition LFS et créez quelques fichiers et liens symboliques essentiels. Ensuite, vous re-compilez la chaîne d'outils, cette fois en les mettant à leurs places définitives. Suivent la compilation et l'installation de tous les paquets restants.

5

System Configuration In this section, you create the files necessary to configure a basic system. This includes network configuration, setting the timezone and locale, and setting up systemd to initialise the system. Making the LFS System Bootable In this section, the /etc/fstab file is created, followed by compiling and installing the Linux kernel and the GRUB bootloader.

Configuration du système

Dans cette section, vous créez les fichiers nécessaires à la configuration d'un système de base. Ceci comprend la configuration du réseau, le réglage du fuseau horaire et de l'heure, et le paramétrage de systemd pour initialiser le système.

Rendre le système LFS bootable

Dans cette section, le fichier /etc/fstab est créé, suivi de la compilation et de l'installation du noyau Linux et du chargeur de démarrage GRUB.

File System Table If, like me, you play around with multi-booting, multiple operating systems installed, changing partitions and booting from different drives in the same machine, the standard drive names (/dev/sda and so on) can easily change. I always modify my fstab file to use UUIDs instead (see section on partitioning). These do not change unless you reformat (make a new filesystem on) the drive.

Table des fichiers du système

Si, comme moi, vous jouez avec le multi-boot, avec plusieurs systèmes d'exploitation installés, en modifiant les partitions et en démarrant à partir de différents disques de la même machine, les noms standard des disques (/dev/sda et autres) peuvent être facilement changés. Je modifie toujours mon fichier fstab pour les remplacer par les UUID (voir la section sur le partitionnement). Ceux-ci ne changent pas sauf si vous reformatez le disque (vous faites un nouveau système de fichiers).

Compiling the Kernel (drivers) This is where I ran into problems on my second build. Everytime I tried to boot the system, it would freeze, usually, but not always, reaching a point of kernel panic. I went through a complete rebuild a second time with the same result. I had installed LFS with its own swap partition on a separate IDE hard-drive, so I moved the drive to a box with the same spec (Pentium 4 CPU with 512 MB of RAM) but about two years older. Although both boxes/motherboards had ports for SATA and IDE drives, the LFS system booted in the older box. What now? Eventually, I realized that the problem was somewhere in the kernel compilation. I moved the drive back to the first box, recompiled the kernel again with no success. I even tried copying the kernel from the host system, but got nowhere.

Compiler le noyau (pilotes)

C'est ici que j'ai rencontré des difficultés lors de ma deuxième construction. Chaque fois que j'essayais de démarrer le système, il gelait, habituellement, mais pas toujours, en atteignant un point de « kernel panic » (panique dans le noyau). J'ai refait une seconde construction intégrale avec le même résultat. J'avais installé LFS avec sa propre partition swap sur un disque IDE séparé ; aussi, j'ai déplacé le disque dans un boîtier de même spécif. (Pentium 4 avec 512 Mo de RAM) mais plus âgé d'environ deux ans. Bien que les deux boîtiers/cartes-mères aient des ports pour les disques SATA et IDE, le système LFS démarrait dans l'ancien boîtier. Pourquoi ? Éventuellement, j'ai réalisé que le problème était quelque part dans la compilation du noyau. J'ai ramené le disque dans le premier boîtier, recompilé le noyau sans succès. J'ai même essayé de copier le noyau du système hôte, mais n'aboutis à rien.

6

At this point, I started looking for more information on compiling the kernel. I found the same book that the mintCast team recently referred to; Linux Kernel in a Nutshell by Greg Kroah-Hartman. This can be downloaded for free from www.kroah.com/lkn. Even though this refers to compiling a very old kernel, I can not recommend this book enough. In it, Greg explains how to find out, among other things, what drivers the kernel of your host system is using. You can then decide which of these drivers is necessary when compiling the kernel for your LFS system. It turned out that the newer motherboard used SATA drivers even for the IDE drive, but the older board did not. These boards dated from when SATA drives were still comparatively new. After following Greg's compilation instruction, success at last. On building v8.0, I managed to get a bootable kernel first-time-around.

À ce moment, j'ai commencé à chercher plus d'informations sur la compilation du noyau. Je trouvais le même livre auquel l'équipe de mintCast faisait référence récemment : Linux Kernel in a Nutshell (Le noyau Linux dans une coquille de noix) par Greg Kroah-Hartman. Il peut être téléchargé gratuitement depuis www.kroah.com/lkn. Même s'il se réfère à la compilation d'un très vieux noyau, je ne pourrais jamais assez recommander ce livre. À l'intérieur, Greg, explique comment découvrir, parmi d'autres choses, quels sont les pilotes que le noyau de votre système hôte utilise. Vous pouvez ensuite décider lesquels de ces pilotes sont nécessaires lors de la compilation du noyau de votre système LFS.

Il est apparu que la carte-mère la plus récente utilisait des pilotes SATA, même pour le disque IDE, mais la plus ancienne, non. Ces cartes dataient d'une époque où les disques SATA étaient relativement récents. Après avoir suivi les instructions de compilation de Greg, le succès vint enfin.

Lors de la construction de la v8.0, je me suis arrangé pour obtenir un noyau bootable du premier coup.

GRUB Installation If you have installed LFS on the same HDD/SSD as your host system, it is NOT necessary to install GRUB for LFS. You can instead use the GRUB provided by the host system. Use “sudo update-grub” and it should pick up your new LFS system and show it as a new entry in the GRUB menu. For me, the only reason to install the LFS version of GRUB is if you have installed LFS on a separate drive from your host system, and you can use the BIOS/UEFI to select which drive you wish to boot from, or you want to move that drive to a new box. In either case, make sure you install GRUB on the LFS drive, and not on the host drive thus unintentionally overwriting the original (host) GRUB installation.

Installation de GRUB

Si vous avez installé LFS sur le même disque dur/SSD que votre système hôte, il N'est PAS nécessaire d'installer GRUB pour LFS. À la place, utilisez le GRUB fourni par le système hôte. Utilisez « sudo update-grub » ; il détectera votre nouveau système LFS et le présentera sur une nouvelle ligne dans le menu GRUB.

Pour moi, la seule raison d'installer la version LFS de GRUB est si vous avez installé LFS sur un disque séparé de votre système hôte et vous pouvez utiliser le BIOS/UEFI pour sélectionner à partir de quel disque vous souhaitez démarrer, ou si vous voulez déplacer ce disque dans un nouveau boîtier. Dans chacun de ces cas, assurez-vous d'installer GRUB sur le disque LFS et pas sur le disque hôte, ce qui, par inadvertance, écraserait l'installation GRUB d'origine (de l'hôte).

I have in the past used other boot managers where you can select not only the drive you want to boot from, but also the individual partition you want. In this case, you can install the LFS GRUB to the partition boot sector and not to the MBR for the whole drive. Rebooting the System Congratulations if you have got this far! Well done. Note that when you boot into your LFS system for the first time, and login as root, your prompt will show only as bash4.4#. To get a better prompt, you need to create at least a /etc/profile file. A sample file is shown in the BLFS book in Chapter 3 “The Bash Shell Startup Files”.

Par le passé, j'ai utilisé d'autres gestionnaires de démarrage où vous pouvez choisir non seulement le disque à partir duquel vous voulez démarrer, mais aussi la partition particulière de votre choix. Dans ce cas, vous pouvez installer Le GRUB de LFS dans le secteur de démarrage de la partition et pas sur le MBR du disque entier.

Redémarrer le système

Félicitations si vous êtes arrivés ici ! Beau travail.

Notez que la première fois que vous démarrez votre système LFS, et vous vous identifiez comme root, votre invite sera présentée seulement comme bash4.4#. Pour obtenir une meilleure invite, vous devez créer au moins un fichier /etc/profile. Un fichier exemple est présenté dans le livre BLFS au chapître 3 « The Bash Shell Startup Files » (Les fichiers de démarrage du shell bash).

7

BYOL Alternative Another way of building Linux is available on the Linux Academy website. This is called Build Your Own Linux (BYOL). I have not tried this yet, but I did do a quick overview. BYOL suggests using Fedora Core 24 as a host system and installing this in VirtualBox. The BYOL system is then created on a second block storage device, such as another HDD or a USB stick. It uses the same LFS wget-list of source packages and the build process is the same, except where changes are necessary because of the VirtualBox environment. The final result is a 64-bit system using sysVinit with a separate /boot partition that is compatible with both UEFI and BIOS hardware.

L'alternative BYOL

Une autre façon de construire Linux est disponible sur le site Web de Linux Academy (Académie Linux). C'est appelé Buld your Own Linux (BYOL - Construisez votre propre Linux). Je ne l'ai pas encore essayé, mais je l'ai parcouru rapidement. BYOL suggère d'utiliser Fedora Core 24 comme système hôte et de l'installer dans VirtualBox. Le système BYOL est ensuite créé sur un second dispositif de stockage, tel qu'un autre disque dur ou une clé USB. Il utilise les mêmes paquets sources wget-list que LFS et le processus de construction est le même, à part là où des changements sont nécessaires du fait de l'environnement de VirtualBox. Le résultat final est un système 64-bit utilisant sysVinit avec une partition /boot séparée qui est compatible avec les matériels UEFI comme BIOS.

References: Linux From Scratch: www.linuxfromscratch.org MintCast podcast: mintcast.org Linux Academy: www.linuxacademy.com BYOL: www.buildyourownlinux.com

Références :

Linux From Scratch : www.linuxfromscratch.org

Le poscast de MintCast : mintcast.org

Linux Academy : www.linuxacademy.com

BYOL : www.buildyourownlinux.com

Bio : Paul is a recently retired engineer who spent nearly all his working life with one vehicle manufacturer. Apart from cars and computers, his other main interest is aviation. Originally from London, he now lives in South Africa. He can be reached at paulromano@vodamail.co.za.

Bio : Paul est un ingénieur récemment retraité qui a passé presque toute sa vie active chez un constructeur automobile. À part les véhicules et les ordinateurs, son autre centre d'intérêt principal est l'aviation. Originaire de Londres, il vit maintenant en Afrique du Sud. Il peut être joint par paulromano@vodamail.co.za.

issue120/labo_linux2.txt · Dernière modification : 2017/05/15 14:32 de andre_domenech