Après avoir démarré VirtualBox, l'ordinateur est devenu lent et s'est ensuite complètement bloqué en raison du MOO. Habituellement, le MOO devrait commencer à tuer des processus afin de libérer de l'espace, mais cela ne s'est pas produit (c'était la deuxième fois que j'expérimentais cela).
J'avais un travail important non enregistré dans un éditeur de texte, alors j'espérais le retrouver dans la RAM du système après avoir tué tous les processus de la console actuelle en utilisant SysRq+ K. La machine en question est un ordinateur portable avec 8 Go de RAM exécutant Linux x86_64 3.7.5 avec un SSD comme disque cible.
Ma première tentative a été dd if=/dev/mem of=memory
, mais cela a échoué après avoir lu 1 Mo de données. Ensuite, j'ai essayé dd if=/dev/fmem of=memory bs=1M
, mais cela s'est arrêté après avoir lu 3010461696 octets (exactement 2871 Mio). Après avoir regardé /proc/mtrr
(illustré ci-dessous), j'ai décidé d'essayer d'ajouter skip=4096
. Cela a finalement ralenti, lisant à une vitesse de seulement 3 Mio / sec, donc je l'ai interrompu (donnant un fichier de 5,8 Gio). (au moins les 100 derniers Mo du fichier contiennent FF
s)
reg01: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: write-back
reg05: base=0x23c000000 ( 9152MB), size= 64MB, count=1: uncachable
reg06: base=0x0b4000000 ( 2880MB), size= 64MB, count=1: uncachable
reg07: base=0x0b8000000 ( 2944MB), size= 128MB, count=1: uncachable
Je n'ai pas pu trouver les données que j'avais ouvertes pendant quelques heures dans l'éditeur de texte, donc je crois que j'ai sauté de la mémoire lors d'un vidage. Donc, étant donné mon objectif (récupération des données des programmes de l'espace utilisateur), quelle est la méthode la plus efficace pour vider la mémoire système dans un fichier? Quels sont les points à prendre en compte lors d'un tel vidage?
CONFIG_DEVKMEM
est désactivé, en regardant dans le code source, il semble autoriser un accès illimité, mais je ne suis toujours pas convaincu que c'est la meilleure façon de le faire (accès mem IO?)