Erstellen wir durch die Kompilierung eines Linux-Kernels ein völlig eigenständiges Betriebssystem, das nicht von Linux-Distributionen abhängig ist?
Nein. Linux an sich ist kein Betriebssystem. Es ist nur ein Kernel. Um die Interaktion mit dem Computer zu erleichtern, ist ein Benutzerland mit einer Sammlung von Systembibliotheken und Basissoftware erforderlich. Was wir üblicherweise unter "Linux" verstehen, wird von einem separaten Projekt namens "GNU-Projekt" bereitgestellt. Technisch sollten wir (und einige tun es) "GNU / Linux" nennen.
Nun, wenn ich die initrd-Datei mit dem Befehl initramfs erstellen möchte, warum werden dann Informationen über meine Linux-Destrubution hinzugefügt (ich verwende Ubuntu 10.4)?
Da Ihr initrd eine Sammlung von Programmen enthält, die Ihr System ursprünglich beim Booten eingerichtet haben, laden Sie die erforderlichen Treiber und Daemons, suchen Sie die erforderlichen Partitionen und legen Sie sie auf Ihren Festplatten usw. bereit. Sie ist nicht nur an Ihre eigenen Anforderungen angepasst Verteilung, aber auf Ihre spezielle Installation, Konfiguration und Ihren Computer. Es ist im Allgemeinen nicht mit Initrd eines anderen Benutzers austauschbar. Deshalb muss es von Ihrem System generiert werden.
Wie sollte ich kompilierte Linux-Module kompilieren und hinzufügen und wo sollte ich sie ablegen?
Wenn Sie Ihren eigenen Kernel make menuconfig
kompilieren, tun Sie dies vermutlich vor dem Kompilieren im Kernel-Quellverzeichnis. So können Sie auswählen, welche Features kompiliert werden und ob sie in die Kernel-Binärdatei integriert oder als Module verfügbar gemacht werden.
Dies ist ein Überblick über das, was ich getan habe:
Es gibt eine Reihe von Gründen, warum dies nicht so funktioniert, wie Sie es wünschen.
die Kernel-Quelle (3.4.1) abrufen und mit dem Befehl "make all" kompilieren (ich verwende meine aktuelle linux .config)
Wenn Sie Ubuntu 10.04 ausführen, ist der 3.x-Zweig des Linux-Kernels um einiges älter, ganz zu schweigen von 3.4. Es wird höchstwahrscheinlich nicht richtig funktionieren, zumindest nicht ohne enorm viel zusätzliche Arbeit. Die Konfigurationsdateien haben sich ebenfalls ein wenig geändert, und ich bin ehrlich gesagt überrascht, dass sie keine Fehler nach links und rechts über Dinge in Ihrer (vermutlich für Linux 2.6) konfigurierten Konfigurationsdatei ausgibt, die nicht mit der Vorgehensweise in 3.4 übereinstimmen. Außerdem möchten Sie wahrscheinlich das Kernel-Quellpaket von Ubuntu und nicht die einfache Vanilla-Kernel-Quelle von kernel.org herunterladen, da Ubuntu den Kernel so installiert, dass er die benötigten Funktionen enthält und mit allen anderen Komponenten des Systems gut abspielt. Schließlich fehlen Ihnen einige Schritte, auf die ich später eingehen werde.
Das kompilierte bzImage in das Verzeichnis / boot meines Memory Sticks kopieren
Ich bin mir nicht sicher, was Sie damit vorhaben, aber wenn Sie eine vollständige bootfähige Linux-Installation auf Ihrem Memory Stick haben, steckt noch etwas mehr dahinter: Sie haben überhaupt keine Userland-Sachen auf diesem Speicher zum Beispiel stick. Wenn Sie dies richtig einrichten, führen Sie die Ubuntu-Installation auf Ihrer Festplatte mit dem Kernel auf Ihrem Memory Stick aus. Ich glaube, dass dies funktionieren sollte, aber warum sollte man den Kernel nicht einfach auf der Festplatte installieren? Sie können es neben Ihrem vorhandenen installieren, sodass Sie frei zwischen ihnen wechseln können.
Einsteigen in (initramfs) Terminal nach einer Fehlermeldung, dass die Datei "/lib/modules/3.4.1/modules.dep" nicht gefunden werden konnte !!!
Dies geht auf die versäumten Schritte zurück, die ich zuvor erwähnt habe. Sie benötigen make modules_install
Ihren neuen Kernel, um seine Module zu platzieren /lib/modules
.
JEDOCH...
Nichts davon ist wirklich von Belang, denn im Idealfall sollten Sie einen Kernel überhaupt nicht auf "traditionelle" Weise kompilieren, es sei denn, Sie haben ein besonderes Bedürfnis. Wenn Sie tatsächlich Ihren eigenen Kernel kompilieren müssen, haben die meisten Distributionen heutzutage eine Möglichkeit, die benutzerdefinierte Kernel-Version zu verwenden (sofern vorhanden), den Build-Prozess zu automatisieren, den Kernel als Paket zu installieren, sodass Sie ihn sauber installieren und entfernen können und konfigurieren Sie Ihren Bootloader so, dass Sie zwischen den neuen oder den alten Kerneln wählen können. In Ubuntu sollten Sie diese Anweisungen befolgen: Kernel / Compile - Ubuntu Wiki
Das heißt nicht, dass Sie einen Kernel nicht auf "altmodische" Weise nur für Tritte / zu Bildungszwecken kompilieren können - ich habe meinen ersten Kernel so kompiliert, aber das war, bevor es bessere Möglichkeiten gab, dies zu tun. Wenn es für Sie wichtig ist, dass Ihr System nicht defekt ist, verwenden Sie die empfohlene Methode für Ihre Distribution, ihre Quelle und die Paketverwaltung.