Est-il possible d'installer le noyau Linux seul?


45

Je suis juste curieux de savoir s'il est possible d'installer le noyau Linux seul ou si vous avez besoin d'utiliser l'une des versions. Si c'était possible, comment le ferais-tu? Je n'ai pas besoin d'un tutoriel détaillé. Je veux juste savoir comment cela se ferait sur le plan conceptuel. Je ne suis pas doué pour les logiciels de bas niveau et je veux savoir comment obtenir un système d'exploitation dans l'ordinateur. J'imagine que cela a quelque chose à voir avec le MBR.

Oh et j'ai remarqué que beaucoup de réponses suggèrent une certaine distribution de Linux minimal. J'aurais probablement dû dire que je ne cherche pas à installer un système Linux minimal ou simple. Cette question est purement théorique. Malgré tout, j’apprécie vraiment toutes les réponses et y ferai immédiatement référence, si jamais je voulais installer un Linux vraiment personnalisé.


3
Qu'entendez-vous par "seul" et "saveurs"? Linux n'est pas un système d'exploitation, c'est un noyau. A quoi servirait un noyau sans système d'exploitation? Essayez-vous plutôt de comprendre la séquence du chargeur de démarrage?
Caleb

3
Si vous voulez comprendre comment un noyau / système d'exploitation s'introduit dans l'ordinateur, voici l'endroit où commencer. Assurez - vous de ne pas poser des questions « newbie » là - bas, ils vous mordent, demandez - leur sur SO à la place.
Philomath

3
Par seul, je veux dire juste le noyau, moins l’interface utilisateur et les programmes inclus comme OpenOffice. Par «saveurs», j'entends les différentes distributions de Linux, comme Ubuntu, Redhat, Debian et Mandriva. Je n'ai presque aucune idée de ce dont je parle. J'imaginais que le noyau Linux possédait des fonctionnalités basiques telles que DOS. Je pense que mes idées sur les noyaux et les systèmes d’exploitation peuvent s’embrouiller.
Cesar

4
Oui, vous les êtes VRAIMENT emmêlés :) Bash est juste un programme utilisateur qui s’exécute en tant que processus géré par le noyau. Un noyau en soi ne vous donne rien sauf une plate-forme sur laquelle vous pouvez exécuter d'autres tâches. La suggestion de LFS (Linux From Scratch) dans la réponse de Shadur va droit au but. Vous apprendrez beaucoup de choses sur ce que sont toutes les différentes pièces et sur ce qui fait de la distribution une distro et où le noyau se termine et où l'utilisateur commence par créer un système de travail.
Caleb

2
En fait, le DOS kerneln’avait aucune bashcapacité de base non plus. L'interface utilisateur standard a été fournie par le programme shell COMMAND.COM. La chose la plus proche que vous puissiez faire avec un noyau nu pour faire quelque chose d’utile serait de démarrer en utilisant le paramètre du noyau init=/bin/bash(en supposant qu’un minimum de Linux est sur le disque). Comme on vous l’a répondu, si vous n’avez que le chargeur de démarrage et le noyau, il s’arrêtera très rapidement s’il ne le trouve pas init.
StarNamer

Réponses:


51

Vous pouvez techniquement installer uniquement un chargeur de démarrage et le noyau, mais dès que le noyau démarrera, il se plaindra de ne pas pouvoir démarrer "init", il restera alors immobile et vous ne pourrez rien faire avec.

BTW, c'est une partie du chargeur de démarrage qui se trouve dans le MBR. Le noyau se situe quelque part sur la zone normale d'un disque. Le chargeur de démarrage est configuré pour savoir où cela se trouve, il peut donc charger le noyau et l'exécuter.


Comment le mettriez-vous dans le MBR?
Cesar

Chaque chargeur de démarrage est livré avec un outil pour s’installer lui-même dans le MBR. Il existe également des outils plus conviviaux tels que Boot-Repair ( help.ubuntu.com/community/Boot-Repair ).
Shawn J. Goff

Eh bien, vous pouvez créer un fichier initramfs et l'intégrer à l'image du noyau, puis vous obtiendrez un système entièrement fonctionnel à partir d'un fichier image du noyau :-)
Patrick

@ ShawnJ.Goff Pourquoi le noyau se plaindrait-il de ne pas pouvoir démarrer init, si nous fournissons les initramfs?
Pratik Singhal

4
@ ps06756 Si vous avez les initramfs, ce n'est pas le noyau "seul" comme le demande la question. Si initramfs a un init, le noyau ne se plaindra pas.
Shawn J. Goff

18

Je ne pense pas que vous compreniez exactement ce que vous demandez, mais vous voudrez peut-être jeter un coup d'œil au projet Linux From Scratch .


LFS serait une bonne idée pour savoir comment construire un système minimum. Ou vous pouvez regarder MINIX (et lire le livre ). Ou, pour une introduction différente (moins de travail, mais moins d’information), examinez les paquets étiquetés «essential» ( aptitude search '?essential') sur Debian ou Ubuntu et comprenez ce que chacun fait (il ya un peu plus que le strict minimum).
Gilles 'SO- arrête d'être méchant'

12

Si vous demandez si vous pouvez simplement installer ou mettre à niveau un noyau "sur" un système existant sans installer un tas d'autres programmes?

Le noyau Linux est un fichier binaire généralement nommé vmlinuz-x.x.x-x-namedans le bootrépertoire (qui est généralement une petite partition séparée au début du disque dur) où les x sont un numéro de version. "nom" est juste un nom choisi pour le noyau qui peut être défini lors de la compilation, vous pouvez l'utiliser pour identifier le type de machine ou d'architecture pour laquelle le noyau est utilisé, ou pour toute autre raison.

Il est chargé à l'heure de démarrage par un chargeur de démarrage, GRUBqui est généralement appelé par le code de démarrage du MBR appelé par la ROM du BIOS. Une fois chargé, il n'est ni "tenu ouvert" ni protégé spécialement. Vous pouvez donc remplacer ce fichier par un autre noyau actif. Mais, GRUBa une fonctionnalité intéressante qui vous permet de sélectionner plusieurs noyaux à partir desquels démarrer. Il est donc très judicieux d’ajouter votre noyau supplémentaire à cette liste, tout en conservant le noyau en fonctionnement connu au cas où tout irait mal.

Je pense que presque toutes les distributions font un noyau "modulaire" dans lequel les pilotes de périphérique sont dans des fichiers séparés. La plupart des noyaux ont donc besoin d’un système de fichiers contenant les pilotes disponibles au démarrage, c’est à quoi sert un "initrd" (disque RAM initial) ou "initramfs". GRUBchargera le noyau à un emplacement en mémoire et l'initrd à un autre emplacement, puis sautera au noyau pour lui dire où se trouve l'initrd, en commençant par Linux.

Les pilotes peuvent également être "intégrés" au noyau et sont donc automatiquement chargés et disponibles lorsque le chargeur de démarrage charge l' vmlinuzimage. Les noyaux censés fonctionner sur divers systèmes (tels que ceux de la plupart des distributions) minimisent généralement ce qui est construit dans le noyau, car le matériel disponible sera analysé ultérieurement dans le processus de démarrage et seuls les modules représentant le matériel actuel seront chargés.

Il existe des outils pour modifier et créer des initrds. Debian a de bons outils et j'imagine que d'autres distributions en ont aussi.

Ainsi, si vous téléchargez un noyau plus récent à partir de kernel.org et le compilez pour créer une nouvelle image binaire du noyau, vous devez créer ou mettre à jour un initrd avec des pilotes fonctionnant avec ce noyau. L'ancien initrd ne fonctionnera pas car les pilotes doivent correspondre à la version du noyau en cours d'exécution.

Le fichier initrd a le initrd.img-x.x.x.x-namemême nom que le noyau et peut être remplacé après le démarrage de la même manière que le noyau. Une bonne pratique vous indiquerait de ne pas supprimer un initrd fonctionnel tant que vous ne savez pas que vous pouvez démarrer avec votre nouveau noyau + initrd avec succès.

J'espère que cela fournit un contexte.

Si vous recherchez une installation Linux "à nu" qui ne comporte que peu ou pas de programmes supplémentaires, mon choix préféré a toujours été d'installer l' netinstimage Debian . En gros, vous ne disposez que des outils les plus élémentaires pour exécuter une console de texte en ligne de commande et nanoun éditeur de texte.


5

Rootfs simples exécutables

Le système minimum absolu exécute un seul /initprogramme, comme je l'ai expliqué dans Single Application Linux | Super utilisateur

Minimal Linux Live

https://github.com/ivandavidov/minimal

Pour un système interactif plus intéressant, il s'agit d'un petit script (principalement éducatif) qui:

  • télécharge le source pour le noyau et busybox
  • les compile
  • génère une image ISO de 8 Mo démarrable avec eux

L'ISO vous laisse ensuite dans un shell minimal avec busybox.

Avec QEMU, vous pouvez facilement démarrer dans le système.

Je l'ai modifié pour permettre de l'exécuter à partir du répertoire source du noyau: https://github.com/cirosantilli/runlinux

Usage:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

et vous serez laissé dans une fenêtre QEMU avec votre nouveau système minimal. Impressionnant.

Comme il est petit, c’est une bonne option pour lire la source et comprendre ce qui se passe.

Testé sur Ubuntu 16.04.

Construire

https://buildroot.org/

Grand ensemble de scripts Makefile qui gèrent:

  • GCC cross compilation toolchain
  • compilation du noyau
  • compilation du chargeur de démarrage
  • génération de rootfs
  • a des tonnes de recettes de téléchargement / construction de paquets dans l’arborescence source, y compris des choses complexes comme GTK. Il existe un système de dépendance.

Exemple minimal:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use `BR2_JLEVEL=2` instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

Il a même des recettes pour construire X11 à partir de zéro: Comment installer X11 sur mon propre système Linux Buildroot?

Des trucs professionnels.

Alpine Linux

https://github.com/gliderlabs/docker-alpine

Distribution intégrée avec un gestionnaire de paquets offrant des fichiers binaires précompilés à partir d'un site Web.

Voir également


3

Je voudrais appuyer la suggestion de Shadur selon laquelle vous devriez salir vos mains de la même manière que Linux From Scratch.
Aussi, quelque chose de similaire, essayez Pocket Linux .

Le guide Pocket Linux explique comment créer un petit système GNU / Linux basé sur une console en utilisant uniquement le code source et quelques disquettes. Il est destiné aux utilisateurs de Linux qui souhaitent mieux comprendre le fonctionnement de leur système sous le capot des fonctionnalités et outils spécifiques à la distribution.


2
Notez bien que personne dans leur esprit ne recommande / ni / LFS ni PocketLinux pour aucune tâche de production importante - ils sont bons pour apprendre le fonctionnement des choses, mais la raison pour laquelle la plupart des distributions viennent avec un ensemble complet d’outils et de frontaux pour la plupart des choses.
Shadur

3

Il est possible d'installer un noyau Linux sans les outils d'espace utilisateur habituels. Cela se fait généralement dans des systèmes embarqués tels que les routeurs. En règle générale, le noyau est chargé à partir de la mémoire ROM ou Flash et a été personnalisé pour le périphérique en question (généralement avec les pilotes requis compilés dans le noyau plutôt que chargés en tant que modules).

Au moins un programme de l'espace utilisateur doit exister pour devenir le processus 'init' (pas nécessairement appelé init, mais démarré par le noyau en tant que processus 1 et le parent automatique de tous les processus orphelins) - à moins que le noyau n'ait été modifié (plutôt simplement sur mesure) pour ne pas en avoir besoin.

Il n’est certainement pas nécessaire de disposer d’un shell pour pouvoir utiliser un périphérique basé sur Linux, bien que cela facilite grandement le développement!


2

Beaucoup de distributions fournissent des installations "de base". Voici ce que tu veux. Voir ubuntu-minimal, debian net-install, archlinux (par défaut, c’est le cœur).

Les autres réponses sont utiles si vous voulez apprendre, mais ce n'est peut-être pas le cas = p

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.