Ist es möglich, den von einer initrd verwendeten Speicher zurückzugewinnen?

900
Steve

Ich entwickle einen Startvorgang für ein eingebettetes Gerät. Derzeit verwende ich eine initrd (unkomprimiert, es sind 4 MB), um meine echte Root-Partition einrichten zu können, bevor mit dem Booten fortgefahren wird (ich muss eine Partition basierend auf einigen Informationen auswählen und eine andere mit unionfs überlagern).

Ich mache mir jedoch Sorgen, dass der Speicher, der für das initrd-Dateisystem verwendet wurde, dauerhaft für diese Verwendung reserviert ist, auch wenn dies nur für weniger als ein paar Sekunden Bootzeit erforderlich ist. Das Gerät verfügt nur über 256 MB RAM, von denen 4 MB erheblich erscheinen.

  • Gibt es eine Möglichkeit, diese Erinnerung zurückzugewinnen?
  • Wenn ich initramfs anstelle von initrd verwenden würde, würde mir das dann irgendetwas kaufen?
  • Gibt es eine andere Möglichkeit?
1

1 Antwort auf die Frage

1
Sami Laine

Speicher, der von initrd / initramfs verwendet wird, wird freigegeben, nachdem er mit d. wenn echte root fs gemountet ist. Normalerweise sollten Sie sich darum Sorgen machen. Ihre Frage zeigt, dass Sie initrd / initramfs nicht als Laufzeit-Root-fs verwenden, sodass der dafür verwendete Speicher automatisch freigegeben wird.

Weitere Informationen finden Sie im initrd-Teil der Kernel-Dokumentation unter "Ändern des Root-Geräts".

Ich sehe nichts in diesem Dokument, das besagt, dass ich mich nicht darum kümmern müsste, aber es sieht so aus, als sollte ich das initrd aushängen und dann selbst den RAM freigeben. Wenn ich jedoch versuche, das initrd zu demontieren, bekomme ich "Gerät oder Ressource beschäftigt". Akzeptiert, weil das Dokument die Antwort enthält :) Steve vor 9 Jahren 0
Keine Ursache! Es stellte sich heraus, dass devtmpfs immer noch unter dem Verzeichnis initrd eingehängt wurde. Steve vor 9 Jahren 0