Tatsächliche Größe des Linux-Kernel?

Hallo Linux-Wissende,

habe gerade mal einen Kernel compiliert. Man erhält dabei
eine Datei „bzImage“, die dann kopiert/umbenannt/eingebunden
etc. wird. Die Datei ist ca. 1,6MB groß.

Da sie bzImage heißt, vermute ich, daß sie komprimiert ist.
Stimmt das?

Das würde bedeuten, daß Linux den Kernel komprimiert lädt,
und ihn dann erst im Speicher entpackt, bevor er gestartet
werden kann.

Das bedeutet aber auch, daß er in Wirklichkeit um einiges
größer ist, als die Datei, und entsprechend RAM belegt.

Wie groß ist der Kernel nun wirklich? Oder ist das mit bzImage
eher irreführend?

Vielen Dank für eine Antwort im voraus!

Schöne Grüße,
Didi

Hallo,

habe gerade mal einen Kernel compiliert. Man erhält dabei
eine Datei „bzImage“, die dann kopiert/umbenannt/eingebunden
etc. wird. Die Datei ist ca. 1,6MB groß.

Da sie bzImage heißt, vermute ich, daß sie komprimiert ist.
Stimmt das?

Richtig.

Das würde bedeuten, daß Linux den Kernel komprimiert lädt,
und ihn dann erst im Speicher entpackt, bevor er gestartet
werden kann.

Linux kann sich nicht selbst laden, sondern wird vom Bootloader geladen.

Das bedeutet aber auch, daß er in Wirklichkeit um einiges
größer ist, als die Datei, und entsprechend RAM belegt.

Wie groß ist der Kernel nun wirklich? Oder ist das mit bzImage
eher irreführend?

Ich weiss es auch nicht genau, aber die Zahl an sich ist nicht besonders interessant, weil ja auch noch Module nachgeladen werden, und der Kernel noch zusaetzlichen Arbeitsspeicher benoetigt.

Gruesse,
Moritz

Wie groß ist der Kernel nun wirklich? Oder ist das mit bzImage
eher irreführend?

Was spricht dagegen, diese Datei einfach mal zu entpacken und nachzuschauen? Wobei bunzip(2) dummerweise ungeeignet ist, da das bz nichts mit dem bzip-Algorithmus zu tun hat, sondern für ‚Big zImage‘ steht. Wenn der Kernel mit ‚make bzImage‘ gepackt wird, so mit dem zlib-Algorithmus, den du mittels gunzip dekomprimiert bekommst. Dafür müsstest du den gepackten Kernel, die piggy.o aber erst aus dem Image herauslösen. Hier sollte die Kernel-Doku, möglicherweise auch ein Blick ins makefile weiterhelfen.

HTH
Schorsch

Hallo Dietmar,

habe gerade mal einen Kernel compiliert. Man erhält dabei
eine Datei „bzImage“, die dann kopiert/umbenannt/eingebunden
etc. wird. Die Datei ist ca. 1,6MB groß.

Wie groß ist der Kernel nun wirklich?

Wenn Du in einer Konsole den Befehl

dmesg | grep -i kernel

absetzt, erhälst Du auch eine Zeile, in der steht, wieviel für den Kernel-Code reserviert werden. Bei mir (Debian Etch) sieht das z.B. so aus:

Memory: 1023516k/1048384k available (1928k kernel code, 24480k reserved, 867k data, 176k init)

Da hast Du dann schon mal eine Hausnummer für die Kernelgröße, wobei, wie schon gesagt wurde, die Module bei Bedarf ja wohl auch noch dazugeladen werden.

Viele Grüße
Marvin

PS. Wenn Du stattdessen mit

dmesg | less

gemütlich durch die Meldungen blätterst, erfährst Du noch mehr interessante Dinge über dein System. Ich hoffe, die Befehle gibt es in Suse auch alle…

Danke!
Vielen Dank für die Tipps!
Schöne Grüße,
Didi