vmlinuz und initrd nach dem Erstellen des Kernels nicht gefunden?

9

Warum habe ich nach dem Konfigurieren und Erstellen des Kernels mit make nicht vmlinuz-<version>-default.imgund initrd-<version>.img, sondern nur eine riesige vmlinuxBinärdatei (~ 150 MB)?

Amumu
quelle
4
Hast du vergessen zu rennen make bzImage? Haben Sie auch einen monolithischen Kernel erstellt? Führen Sie ein Debian-ähnliches Betriebssystem aus? Wenn dies der Fall ist und Sie nicht übergreifend kompilieren, gibt es einfachere Möglichkeiten, einen Kernel zu erstellen.
Alexios
Ich habe es in OpenSUSE kompiliert (ich habe jedoch die neueste Quelle von heruntergeladen kernel.org). Danach make menuconfigtippte ich makeund ließ es den Job machen.
Amumu
1
Sie müssen make bzImageden bzImage-Kernel generieren. Sagen Sie make help, um einige kurze Anweisungen zu sehen. Ausführliche Anweisungen finden Sie im Linux Kernel Howto. Wenn Sie jede make menuconfigFrage mit Y beantwortet haben (und gegebenenfalls nicht mit M ), haben Sie versucht, jeden Treiber in den eigentlichen Kernel aufzunehmen. Dies ist eine sehr, sehr schlechte Idee und der Kernel bootet nicht, weil er zu groß ist. Das initrdBild wird von anderen Werkzeugen erzeugt.
Alexios
Ich habe gerade die Konfiguration noch einmal überprüft. Es scheint, dass ich die Unterstützung für ladbare Kernelmodule nicht aktiviert habe. Ich dachte, es ist Standard. Ich werde versuchen, erneut zu kompilieren und werde benachrichtigen, wenn es fertig ist.
Amumu
Viele der obigen Kommentare scheinen mir gute Antworten zu sein.
James Youngman

Antworten:

9

Die komprimierten Bilder befinden sich unter arch/xxx/boot/, wo xxxsich der Bogen befindet. Zum Beispiel für x86und amd64habe ich ein komprimiertes Bild bei /usr/src/linux/arch/x86/boot/bzImage, zusammen mit /usr/src/linux/vmlinux.

Wenn Sie das Image immer noch nicht haben, überprüfen Sie, ob bzip2es installiert ist und funktioniert (aber ich denke, wenn dies das Problem wäre, würden Sie eine beschreibende Fehlermeldung erhalten, z. B. "bzip2 nicht gefunden").

Außerdem können Sie in der Kernelkonfiguration die Komprimierungsmethode auswählen, sodass der tatsächliche Dateiname und der Komprimierungsalgorithmus abweichen können, wenn Sie diese Kerneleinstellung geändert haben.

Wie bereits erwähnt, werden initrds nicht durch den Linux-Kompilierungsprozess generiert, sondern durch andere Tools. Beachten Sie, dass /Sie zum Starten keine initrd benötigen , es sei denn, Sie benötigen aus irgendeinem Grund externe Dateien (z. B. benötigen Sie Module oder udev zum Identifizieren oder Mounten ).

njsg
quelle