Ich bin nur neugierig, ob es möglich ist, den Linux-Kernel alleine zu installieren, oder ob Sie eine der Varianten verwenden müssen. Wenn es möglich wäre, wie würden Sie es tun? Ich brauche kein detailliertes Tutorial. Ich möchte nur wissen, wie es konzeptionell gemacht wird. Ich bin nicht gut mit Low-Level-Sachen und möchte wissen, wie Sie ein Betriebssystem in den Computer bekommen. Ich stelle mir vor, es hat etwas mit dem MBR zu tun.
Oh und mir ist aufgefallen, dass viele der Antworten auf eine bestimmte Distribution von minimalem Linux hindeuten. Ich hätte wahrscheinlich sagen sollen, dass ich nicht auf der Suche bin, ein minimales oder nacktes Linux zu installieren. Diese Frage ist rein theoretisch. Trotzdem schätze ich alle Antworten sehr und werde sofort darauf zurückgreifen, falls ich jemals ein wirklich personalisiertes Linux installieren möchte.
quelle
kernel
auch keine Grundfähigkeitenbash
. Die Standardbenutzeroberfläche wurde vom Shell-Programm bereitgestelltCOMMAND.COM
. Am ehesten können Sie einen Kernel mit dem Kernel-Parameter booteninit=/bin/bash
(vorausgesetzt, ein minimales Linux befindet sich auf der Festplatte). Wie gesagt, wenn Sie nur den Bootloader und den Kernel haben, stoppt dieser sehr schnell, wenn er nicht gefunden wirdinit
.Antworten:
Sie können technisch nur einen Bootloader und den Kernel alleine installieren, aber sobald der Kernel bootet, wird er sich darüber beschweren, dass "init" nicht gestartet werden kann, dann wird er einfach dort sitzen und Sie können nichts damit anfangen.
Übrigens ist es ein Teil des Bootloaders, der sich im MBR befindet. Der Kernel befindet sich irgendwo im regulären Bereich einer Festplatte. Der Bootloader ist so konfiguriert, dass er weiß, wo er sich befindet, sodass er den Kernel laden und ausführen kann.
quelle
Ich glaube nicht, dass Sie genau verstehen, was Sie fragen, aber vielleicht möchten Sie sich das Linux From Scratch- Projekt ansehen .
quelle
aptitude search '?essential'
an, die unter Debian oder Ubuntu mit dem Tag "essential" ( ) versehen sind, und verstehen Sie, was jeder tut (es gibt etwas mehr als das Nötigste).Wenn Sie sich fragen, ob Sie einen Kernel einfach "über" ein vorhandenes System installieren oder aktualisieren können, ohne eine Reihe anderer Programme zu installieren?
Der Linux-Kernel ist eine Binärdatei, die normalerweise
vmlinuz-x.x.x-x-name
imboot
Verzeichnis (das normalerweise eine separate kleine Partition am Anfang der Festplatte ist) genannt wird, wobei die x eine Versionsnummer sind. "name" ist nur ein gewählter Name für den Kernel, der zur Kompilierungszeit festgelegt werden kann. Sie können ihn verwenden, um den Typ der Maschine oder Architektur, für die der Kernel ist, oder einen anderen Grund zu bestimmen.Es wird zur Startzeit von einem Bootloader geladen, der normalerweise
GRUB
über den Bootcode im MBR aufgerufen wird, der vom BIOS-ROM aufgerufen wird. Sobald es geladen ist, wird es nicht "offen gehalten" oder speziell geschützt. Sie können diese Datei also durch einen anderen funktionierenden Kernel ersetzen. HatGRUB
aber eine coole Funktion, mit der Sie mehrere Kernel zum Booten auswählen können. Es ist also ziemlich klug, Ihren zusätzlichen Kernel zu dieser Liste hinzuzufügen, aber den ursprünglich bekannten Kernel für den Fall, dass etwas schief geht, beizubehalten.Ich glaube, fast alle Distributionen machen einen "modularen" Kernel, in dem sich die Gerätetreiber in separaten Dateien befinden. Daher benötigen die meisten Kernel ein Dateisystem mit Treibern, die beim Booten zur Verfügung stehen, und dafür ist ein "initrd" (anfänglicher RAM-Datenträger) oder "initramfs" gedacht.
GRUB
Lädt den Kernel an einem Speicherort und die initrd an einem anderen Speicherort und springt zum Kernel, der angibt, wo sich die initrd befindet, und startet Linux.Treiber können auch in den Kernel "eingebaut" werden und werden daher automatisch geladen und sind verfügbar, wenn der Bootloader das
vmlinuz
Image lädt . Kernel, die auf verschiedenen Systemen (wie z. B. den meisten Distributionen) funktionieren sollen, minimieren in der Regel die in den Kernel eingebauten Komponenten, da die verfügbare Hardware später im Startprozess gescannt wird und nur Module geladen werden, die die vorhandene Hardware repräsentieren.Es gibt Tools zum Ändern und Erstellen von initrds. Debian hat nette Werkzeuge und ich kann mir vorstellen, dass dies auch bei anderen Distributionen der Fall ist.
Wenn Sie also einen neueren Kernel von kernel.org herunterladen und ihn kompilieren, um ein neues Kernel-Binär-Image zu erstellen, müssen Sie eine initrd mit Treibern erstellen oder aktualisieren, die mit diesem Kernel funktionieren. Die alte initrd funktioniert nicht, da die Treiber mit der Version des laufenden Kernels übereinstimmen müssen.
Die initrd-Datei hat einen
initrd.img-x.x.x.x-name
ähnlichen Namen wie der Kernel und kann nach dem Booten wie der Kernel ersetzt werden. Best Practice besagt, dass Sie eine bekannte funktionierende initrd erst dann löschen, wenn Sie wissen, dass Sie Ihren neuen Kernel + initrd erfolgreich booten können.Ich hoffe, das bietet einen gewissen Kontext.
Wenn Sie nach einer "Barebones" -Linux-Installation suchen, auf der nur wenige oder gar keine zusätzlichen Programme installiert sind, hat meine Lieblingsauswahl immer das Debian-
netinst
Image installiert . Ziemlich viel Sie haben nur die grundlegendsten Werkzeuge, die benötigt werden, um eine Befehlszeilentextkonsole undnano
als Texteditor auszuführen .quelle
Einzelne ausführbare Rootfs
Das absolute Minimum-System führt ein einzelnes
/init
Programm aus, wie ich unter Linux für einzelne Anwendungen | erläutert habe Super UserMinimales Linux Live
https://github.com/ivandavidov/minimal
Für ein interessanteres interaktives System ist dies ein (meist lehrreiches) kleines Skript, das:
Die ISO lässt Sie dann in einer Minimal-Shell mit Busybox zurück.
Mit QEMU können Sie problemlos in das System booten.
Ich habe es so geändert, dass es über das Kernel-Quellverzeichnis ausgeführt werden kann: https://github.com/cirosantilli/runlinux
Verwendungszweck:
und Sie werden in einem QEMU-Fenster mit Ihrem neuen Minimalsystem zurückgelassen. Genial.
Da es klein ist, ist dies eine gute Option, um die Quelle zu lesen und zu verstehen, was los ist.
Getestet unter Ubuntu 16.04.
Baumwurzel
https://buildroot.org/
Große Auswahl an Makefile-Skripten, die Folgendes verwalten:
Minimales Beispiel:
Es gibt sogar Rezepte, um X11 von Grund auf neu zu erstellen: Wie installiere ich X11 auf meinem eigenen Linux Buildroot-System?
Professionelles Zeug.
Alpines Linux
https://github.com/gliderlabs/docker-alpine
Embedded Distribution mit einem Paketmanager, der vorkompilierte Binärdateien von einer Website anbietet.
Siehe auch
quelle
Ich möchte dem Vorschlag von Shadur folgen, dass Sie Ihre Hände auf die Art von Linux From Scratch schmutzig machen sollten.
Versuchen Sie es auch mit Pocket Linux .
quelle
Es ist möglich, einen Linux-Kernel ohne die üblichen User-Space-Tools zu installieren. Dies geschieht üblicherweise in eingebetteten Systemen wie Routern. Normalerweise wird der Kernel aus dem ROM- oder Flash-Speicher geladen und für das betreffende Gerät angepasst (normalerweise werden die erforderlichen Treiber im Kernel kompiliert und nicht als Module geladen).
Es muss mindestens ein User-Space-Programm vorhanden sein, um der 'init'-Prozess zu werden (nicht notwendigerweise aufgerufen
init
, sondern vom Kernel als Prozess 1 gestartet, und das automatische übergeordnete Element von verwaisten Prozessen) - es sei denn, der Kernel wurde geändert (stattdessen) als einfach angepasst), um dies nicht zu verlangen.Es ist sicherlich nicht erforderlich, eine Shell zur Verfügung zu haben, um ein funktionsfähiges Linux-basiertes Gerät zu haben, obwohl dies die Entwicklung erheblich erleichtern kann!
quelle
Viele Distributionen bieten "Core" -Installationen an. Das ist, was du willst. Siehe ubuntu-minimal, debian net-install, archlinux (Standard ist nur core).
Die anderen Antworten sind nützlich, wenn Sie lernen möchten, aber das ist möglicherweise nicht der Fall = p
quelle