2016-03-25 20 views
0

Ich arbeite, um den Ruhezustand (Suspend to Disk) auf ARM zu implementieren und habe dies erfolgreich mit swsusp ARM patch by Sebastian Capella getan. Jetzt kann ich den Kernel mit dem Befehl echo disk > /sys/power/state in den Ruhezustand versetzen (suspendieren, um die Partition in SD Karte auszuwechseln) und das System wird seinen Zustand mit dem nächsten Einschalten wieder aufnehmen. Aber wenn ich erneut auf Reset drücke, folgt der Kernel einer normalen Bootsequenz.Hibernate Linux auf ARM

Meine Frage ist, wie kann ich den Swap-Bereich und das Ruhezustand-Bild in diesem Bereich dauerhaft machen, so dass es bei jedem Reset von diesem permanenten Bild erwachen wird? Ich habe den Wert von swapiness=0 angegeben, so dass ich erwarte, dass es keine Seiten mehr austauschen wird, solange das System am Leben ist. Wie Kernel entscheiden, ob für einen normalen Boot-oder Ruhezustand (resume=/dev/swap_partition) Ruhezustand gehen?

ich viel im Internet gesucht, aber eine klare Vorstellung darüber, wie Linux-Kernel aus dem Ruhezustand erwacht und was es mit Swap tun wird nach der Wiederaufnahme once.Thank Sie sich die Zeit Mein Kernel

Version ist nicht bekommen

3,14

Antwort

0

Hier ist ein Code Spur von Linux Hibernation APIs aufruft:

http://www.srcmap.org/sd_share/4/839d1dea/Linux_kernel_Hibernation_Resume.html

die meisten der Code-Spur für PowerPC ist. Aber es könnte Ihnen eine Vorstellung vom Kernel-Restore-from-Hibernation-Flow geben.

Für ARM, vielleicht müssen Sie:

  • Auf dem Ruhezustand, markiert nur die permanente Auslagerungsdatei als die Auslagerungsdatei.
  • Im Fortsetzen verhindert, dass das System die Auslagerungsdatei als Ruhezustandsdatei "löscht".
  • Seien Sie sehr vorsichtig mit Kernel-Image-Upgrade, der Inhalt der Auslagerungsdatei ist eng mit dem Kernel-Image gekoppelt. Jede kleinere chg/rekompilieren im Kernel wird die Auslagerungsdatei ungültig markieren und eine Neustart-Aktion auslösen. Fügen Sie dazu eine Menge printk() Protokolle hinzu.
Verwandte Themen