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)?
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 ).
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.kernel.org
). Danachmake menuconfig
tippte ichmake
und ließ es den Job machen.make bzImage
den bzImage-Kernel generieren. Sagen Siemake help
, um einige kurze Anweisungen zu sehen. Ausführliche Anweisungen finden Sie im Linux Kernel Howto. Wenn Sie jedemake menuconfig
Frage 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. Dasinitrd
Bild wird von anderen Werkzeugen erzeugt.Antworten:
Die komprimierten Bilder befinden sich unter
arch/xxx/boot/
, woxxx
sich der Bogen befindet. Zum Beispiel fürx86
undamd64
habe 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
bzip2
es 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 ).quelle
Laut Dokumentation:
http://tldp.org/LDP/lame/LAME/linux-admin-made-easy/kernel-custom.html
Wenn Sie das tun:
mache bzImage
und dann:
cp bzImage vmlinuz
um die vmlinuz-Datei zu erstellen. Dh sie sind die gleiche Datei :-).
quelle