Sau khi khởi động VirtualBox, máy tính trở nên chậm chạp và sau đó bị treo hoàn toàn do OOM. Thông thường, OOM nên bắt đầu giết các quá trình để giải phóng không gian, nhưng điều này đã không xảy ra (đây là lần thứ hai tôi trải nghiệm điều này).
Tôi đã có một số công việc quan trọng chưa được lưu trong trình soạn thảo văn bản, vì vậy tôi đã hy vọng tìm thấy nó trở lại trong RAM hệ thống sau khi giết tất cả các quy trình trong bảng điều khiển hiện tại bằng cách sử dụng SysRq+ K. Máy đang được đề cập là một máy tính xách tay có RAM 8 GiB chạy Linux x86_64 3.7.5 với ổ SSD là đĩa đích.
Nỗ lực đầu tiên của tôi là dd if=/dev/mem of=memory
, nhưng điều này đã thất bại sau khi đọc 1MiB dữ liệu. Tiếp theo, tôi đã thử dd if=/dev/fmem of=memory bs=1M
, nhưng điều này đã dừng lại sau khi đọc 3010461696 byte (chính xác là 2871 MiB). Sau khi nhìn vào /proc/mtrr
(hiển thị bên dưới), tôi quyết định thử thêm skip=4096
. Điều này cuối cùng đã chậm lại, đọc với tốc độ chỉ 3 MiB / giây, vì vậy tôi đã làm gián đoạn nó (thu được một tệp 5,8 GiB). (ít nhất 100 MiB cuối cùng của tệp chứa 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
Tôi không thể tìm thấy dữ liệu tôi đã mở trong một vài giờ trong trình soạn thảo văn bản, vì vậy tôi tin rằng tôi đã bỏ qua một số bộ nhớ trong khi thực hiện kết xuất. Vì vậy, với mục tiêu của tôi (phục hồi dữ liệu từ các chương trình không gian người dùng), phương pháp hiệu quả nhất để kết xuất bộ nhớ hệ thống vào một tệp là gì? Một số điểm phải được xem xét trong khi làm một bãi như vậy là gì?
CONFIG_DEVKMEM
bị vô hiệu hóa, tìm kiếm trong mã nguồn dường như cho phép truy cập không bị hạn chế, nhưng tôi vẫn không tin rằng đây là cách tốt nhất để làm điều đó (truy cập IO mem?)