[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: initrd newbie



On Fri, 30 Apr 2004 17:04:59 +0200
Heino Tiedemann <rotkap@rotkap.de> wrote:

> Hallo,
> 
> ich habe woody, und habe den kernel bf2.4 gegen 2.4.18-1-686
> eingetauscht (Der bringt initrd mit).
> 
> Habe ich mir irgendwelche Nachteile eingehandelt?

Vorweg: ich kenne beide Kernel nicht - alles größer 2.2.x habe ich mir
selbst kompiliert. Aber hier einige Worte zu initrd:

Initrd ist ein mini-Dateisystem (meist ge'gzip't), was afaik vom
Bootloader in den Speicher geladen und entpackt wird. Dem Kernel dient
dieses als temporäres Root-fs, das richtige Root-Dateisystem wird später
per pivot-root eingesetzt. Dies ist nützlich, wenn noch spezielle Module
geladen (die nicht fest im Kernel einkompiliert sind) oder Befehle
ausgeführt werden müssen, um auf das eigentliche Root-Filesystem zugreifen
zu können. Letzteres ist z.B. nötig, wenn das Root-Dateisystem nur über
LVM zugänglich ist.

Für Distributoren ist dies für die Installation recht nützlich: Man kann
eine Boot-diskette anbieten die mit initrd bootet, damit dann weitere
Disketten einlesen lassen und so das eigentliche Root-fs zusammensetzen.
Dieses enthält dann Module und Programme um alle möglichen Speichermedien
für die Installation zugänglich zu machen (Scsi, Ide, raid, netz,
verschiedenste Dateisysteme, etc.). Nach der Installation kann dann ein
(evtl. anderes) initrd-image für das Booten des Systems verwendet werden,
was nur noch die Module für den Zugriff auf das Root-Dateisystem benötigt.
Somit kommt der Distributor mit einem kleinen Kernel aus, bei dem
sämtliche Zusatzfunktionalität über Module angeboten wird.

Wo die Unterschiede zwischen bf2.4 und 2.4.18-1-686 liegen kann ich dir
nicht sagen - warum hast du letzteren denn installiert, nur wegen dem
"-686"? Bf2.4 ist doch auch ein 2.4.18er, oder? So weit ich weiß benutzen
alle Debian Kernel initrd und die Module sollten auch die gleichen sein
(mal abgesehen davon was bei neueren Kernelversionen so dazu kommt). 

-> siehe /etc/lilo.conf: ist "initrd=..." global eingestellt oder nur bei
dem neueren Kernel.-> diff /boot/config-bf2.4 /boot/config-2.4.18-1-686
(sofern beide parallel installiert sind)

Wenn man einen Kernel für einen bestimmten Rechner baut, wird man meist
alle Treiber die man braucht fest in den Kernel kompilieren, sofern man
sie nicht explizit als Module benötigt (z.B. um Absturz-anfällige Hardware
durch neuladen der Module zu resetten), oder sie nur selten benutzt und
sie dann temporär läd um Speicher zu sparen. Letzteres dürfte bei
Ram-Größen ab 1/4TB irrelevant werden. Initrd fällt somit auch meist
flach, es sei denn man möchte Features wie root-on-lvm. Aber schaden wird
es bestimmt nicht.


Huch, die Erklärung ist jetzt doch etwas länger geworden. Ich hoffe ich
habe nicht zuviel erzählt was du schon wusstest.

Christian



Reply to: