it-swarm.com.de

Ist es möglich, den Linux-Kernel alleine zu installieren?

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 werden würde. Ich bin nicht gut mit Low-Level-Sachen und möchte wissen, wie man ein Betriebssystem in den Computer bringt. Ich stelle mir vor, es hat etwas mit dem MBR zu tun.

Oh, und mir ist aufgefallen, dass viele der Antworten auf eine bestimmte Verteilung von minimalem Linux hindeuten. Ich hätte wahrscheinlich sagen sollen, dass ich kein Minimal- oder Bare-Bones-Linux installieren möchte. Diese Frage ist rein theoretisch. Trotzdem schätze ich alle Antworten sehr und werde mich sofort darauf beziehen, wenn ich jemals ein wirklich personalisiertes Linux installieren möchte.

50
cesar

Sie können technisch nur einen Bootloader und den Kernel alleine installieren, aber sobald der Kernel startet, wird er sich darüber beschweren, dass "init" nicht gestartet werden kann, dann sitzt er einfach da 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 sich das befindet, sodass er den Kernel laden und ausführen kann.

54
Shawn J. Goff

Ich glaube nicht, dass Sie genau verstehen, was Sie fragen, aber vielleicht möchten Sie sich das Projekt Linux From Scratch ansehen.

20
Shadur

Wenn Sie 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 mit dem Namen vmlinuz-x.x.x-x-name im Verzeichnis boot (normalerweise eine separate kleine Partition am Anfang der Festplatte), wobei die x eine Versionsnummer sind. "name" ist nur ein ausgewählter Name für den Kernel, der zur Kompilierungszeit festgelegt werden kann. Sie können ihn verwenden, um zu identifizieren, für welchen Maschinentyp oder welche Architektur der Kernel ist oder aus welchem ​​anderen Grund.

Es wird zur Startzeit von einem Bootloader geladen, normalerweise GRUB, der vom Bootcode im MBR aufgerufen wird, der vom BIOS-ROM aufgerufen wird. Sobald es geladen ist, wird es nicht mehr "offen gehalten" oder speziell geschützt. Sie können diese Datei also durch einen anderen funktionierenden Kernel ersetzen. Aber GRUB hat 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 funktionierenden Kernel beizubehalten, nur für den Fall, dass etwas schief geht.

Ich glaube, fast alle Distributionen bilden einen "modularen" Kernel, in dem sich Gerätetreiber in separaten Dateien befinden. Daher benötigen die meisten Kernel ein Dateisystem mit Treibern, die beim Booten verfügbar sind, und dafür ist ein "initrd" (initial RAM disk) oder "initramfs". GRUB vorgesehen Laden Sie den Kernel an einer Stelle im Speicher und die initrd an einer anderen Stelle und springen Sie zum Kernel, um ihm mitzuteilen, wo sich die initrd befindet, und starten Sie Linux.

Treiber können auch in den Kernel "eingebaut" werden und werden daher automatisch geladen und sind verfügbar, wenn der Bootloader das Image vmlinuz lädt. Kernel, die auf verschiedenen Systemen (wie den meisten Distributionen) funktionieren sollen, minimieren normalerweise die Integration in den Kernel, da die verfügbare Hardware später im Startvorgang gescannt wird und nur Module geladen werden, die die vorhandene Hardware darstellen.

Es gibt Tools zum Ändern und Erstellen von Initrds. Debian hat nette Tools und ich stelle mir vor, dass andere Distributionen dies auch tun.

Wenn Sie also einen neueren Kernel von kernel.org herunterladen und kompilieren, um ein neues Kernel-Binärbild 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 heißt initrd.img-x.x.x.x-name ähnelt dem Kernel und kann wie der Kernel nach dem Booten ersetzt werden. Die beste Vorgehensweise würde darauf hinweisen, dass Sie eine bekannte funktionierende Initrd erst 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 Linux-Installation mit "Barebones" suchen, auf der nur wenige oder gar keine zusätzlichen Programme installiert sind, habe ich immer das Debian-Image netinst installiert. Sie haben so ziemlich nur die grundlegendsten Tools, die zum Ausführen einer Befehlszeilentextkonsole und nano als Texteditor erforderlich sind.

13
LawrenceC

Einzelne ausführbare rootfs

Das absolute Minimalsystem führt ein einzelnes /init Programm wie ich unter Single Application Linux | Super User erklärt habe

Minimal Linux Live

https://github.com/ivandavidov/minimal

Für ein interessanteres interaktives System ist dies ein (meist lehrreiches) kleines Skript, das:

  • lädt die Quelle für den Kernel und die Busybox herunter
  • kompiliert sie
  • generiert mit ihnen eine bootfähige 8Mb ISO

Die ISO lässt Sie dann in einer minimalen Shell mit Busybox.

Mit QEMU können Sie das System einfach starten.

Ich habe es so geändert, dass es aus dem Kernel-Quellverzeichnis ausgeführt werden kann: https://github.com/cirosantilli/runlinux

Verwendungszweck:

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

und Sie werden mit Ihrem neuen Minimalsystem in einem QEMU-Fenster 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.

Buildroot

https://buildroot.org/

Große Anzahl von Makefile-Skripten, die Folgendes verwalten:

  • GCC Cross Compilation Toolchain
  • kernel-Kompilierung
  • bootloader-Kompilierung
  • erzeugung von rootfs
  • hat Tonnen von Paket-Download/Build-Rezepten im Quellbaum, einschließlich komplexer Dinge wie GTK. Es gibt ein Abhängigkeitssystem.

Minimales Beispiel:

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.

Es gibt sogar Rezepte zum Erstellen von X11 von Grund auf neu: Wie installiere ich X11 auf meinem eigenen Linux Buildroot-System?

Professionelles Zeug.

Alpine Linux

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

Eingebettete Distribution mit einem Paketmanager, der vorkompilierte Binärdateien von einer Website anbietet.

Siehe auch

Es ist möglich, einen Linux-Kernel ohne die üblichen User-Space-Tools zu installieren. Dies geschieht üblicherweise in eingebetteten Systemen wie Routern. In der Regel wird der Kernel aus ROM oder Flash-Speicher) geladen und für das betreffende Gerät angepasst (normalerweise werden die erforderlichen Treiber in den Kernel kompiliert, anstatt als Module geladen zu werden).

Es muss mindestens ein User-Space-Programm vorhanden sein, um der 'init'-Prozess zu werden (nicht unbedingt init genannt, sondern vom Kernel als Prozess 1 und als automatisches übergeordnetes Element verwaister Prozesse gestartet) - es sei denn, der Der Kernel wurde geändert (und nicht nur angepasst), um dies nicht zu erfordern.

Es ist sicherlich nicht erforderlich, eine Shell zur Verfügung zu haben, um ein funktionierendes Linux-basiertes Gerät zu haben, obwohl dies die Entwicklung erheblich vereinfachen kann!

3
Toby Speight

Ich möchte zweitens Shadur's vorschlagen, dass Sie sich die Hände schmutzig machen sollten, wie Linux From Scratch.
Versuchen Sie auch etwas Ähnliches Pocket Linux .

Das Pocket Linux-Handbuch zeigt, wie ein kleines konsolenbasiertes GNU/Linux-System nur mit Quellcode und einigen Disketten erstellt wird. Es richtet sich an Linux-Benutzer, die ein tieferes Verständnis der Funktionsweise ihres Systems unter dem Deckmantel verteilungsspezifischer Funktionen und Tools erlangen möchten.

3
Philomath

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

2
user606723