Mar
11
2010
Hibernation

Εργάζομαι αρκετά συχνά στο laptop (κυρίως λόγο δουλειάς) κι ένα από τα πράγματα που επιθυμώ να δουλεύει τέλεια είναι το: hibernation για να μπορώ να αποθηκεύω την κατάσταση του υπολογιστή και της εργασίας μου ώστε να συνεχίζω από εκεί που σταμάτησα την επόμενη φορά που θα το ανοίξω.

Αλλά τι είναι το hibernation και τι κάνει;

Το λειτουργικό σύστημα και οι εφαρμογές μας όταν τρέχουν χρειάζονται να διαβάζουν/γράφουν και να επεξεργάζονται δεδομένα. Τα δεδομένα αυτά, τα αποθηκεύονται προσωρινά στην μνήμη RAM του υπολογιστή μας. Η μνήμη RAM είναι εξαιρετικά γρήγορη σε διαβάσματα/γραψίματα αλλά έχει δύο σημαντικούς περιορισμούς. Ο πρώτος είναι το μέγεθος σε Mb (ή πλέον Gb) και το δεύτερο πιο σημαντικό είναι ότι δεν μπορεί να αποθηκεύσει τα δεδομένα. Εάν δεν υπάρχει ρεύμα είναι κενή (άδεια) σε αντίθεση με τον σκληρό δίσκο που ακόμα κι εάν είναι σβηστός ο υπολογιστής τα δεδομένα δεν χάνονται.

Στο linux ως επέκταση της μνήμης RAM χρησιμοποιούμε την κατάτμηση swap. Ο παλιός κανόνας, μας πρότεινε να είναι διπλάσιο σε μέγεθος της μνήμης, αλλά πλέον δεν είναι ούτε καν απαραίτητο να έχουμε κατάτμηση swap σε μία διανομή linux (εάν κι αρκετές το επιβάλουν κατά την εγκατάσταση).

Για να μπορούμε να αποθηκεύσουμε λοιπόν την κατάσταση του υπολογιστή μας και να μπορούμε να την χρησιμοποιήσουμε την επόμενη φορά που θα τον ανοίξουμε, χρειάζεται να αποθηκεύσουμε την πλήρη εικόνα των δεδομένων από την μνήμη RAM μας κι όλα τις απαραίτητες πληροφορίες από τις συσκευές μας κάπου. Κι από αυτό το σημείο ο πυρήνας μας την επόμενη φορά να διαβάσει όλες τις πληροφορίες που χρειάζεται ώστε να μας επαναφέρει την προηγούμενη κατάσταση (πριν κλείσει).

Αυτό το ΚΑΠΟΥ συνήθως είναι δύο πράγματα: ένα αρχείο ή η κατάτμηση swap.
Υπάρχουν φυσικά κι άλλοι τρόποι όπως και διαδικασίες ώστε οι πληροφορίες αυτές να κρυπτογραφούνται. Ένα μειονέκτημα του swap partition είναι ότι επειδή είναι δίσκος όταν είναι κλειστός ο υπολογιστής έχει δεδομένα, γεγονός που θεωρείτε ως μειονέκτημα από πλευράς ασφάλειας.

Η διαδικασία είναι πλέον εξαιρετικά απλή και στο archlinux που χρησιμοποιώ δουλεύει σχεδόν 100% σωστά!

Χρειάζεται να εγκαταστήσουμε το πρόγραμμα pm-utils και να κάνουμε δύο τροποποιήσεις.

Η είναι στο εξής αρχείο: /etc/mkinitcpio.conf
και να προσθέσουμε στα HOOKS το resume

Δείτε πως είναι το δικό μου:


HOOKS="base udev autodetect pata scsi sata resume filesystems"

Μόλις το κάνουμε αυτό πρέπει να πληκτρολογήσουμε την εξής εντολή:

mkinitcpio -p kernel26

ώστε η εικόνα του πυρήνα μας να ενημερωθεί με το νέο HOOK

Η αλλαγή που πρέπει να κάνουμε είναι στο εξής αρχείο: /boot/grub/menu.lst
ώστε να ενημερώσουμε τον πυρήνα μας, την επόμενη φορά που θα boot-άρει να διαβάσει από την κατάτμηση swap όλες τις απαραίτητες πληροφορίες ώστε να επαναφέρει τον υπολογιστή μας στην προηγούμενη κατάσταση πριν κλείσει.

Εάν για παράδειγμα η κατάτμηση swap είναι η : /dev/sda2
τότε πρέπει να προσθέσουμε το εξής: resume=/dev/sda2

Δείτε πως είναι το δικό μου:


kernel /boot/vmlinuz26 root=/dev/sda1 resume=/dev/sda2 ro

Αυτό ήταν όλο!

Τώρα από την γραμμή εντολών μπορούμε να πληκτρολογήσουμε την εξής εντολή:
pm-hibernate και να κλείσει ο υπολογιστής μας, αποθηκεύοντας τα πάντα στην κατάτμηση swap.

Δοκιμάστε το και πείτε μου τις εντυπώσεις σας.