正如ilkkachu在unix.stackexchange.com上回答的那樣,我試圖訪問PCI/ACPI或某些此類硬件所使用的內存區域。因此我只需要訪問「安全」內存區域。
到目前爲止,我可以放心地訪問(usable)
領域上/var/log/kern.log
如圖所示:
[ 0.000000] BIOS-e820: [mem 0x0000000020200000-0x000000003fffffff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000040000000-0x00000000401fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000040200000-0x00000000c97e8fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000c97e9000-0x00000000c9e81fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000c9e82000-0x00000000ca101fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000ca102000-0x00000000ca106fff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x00000000ca107000-0x00000000ca149fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000ca14a000-0x00000000cabb4fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000cabb5000-0x00000000caff1fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000caff2000-0x00000000caffffff] usable
這些區域也可以作爲 「系統內存」 的/proc/iomem
中找到:
$ grep "System RAM" /proc/iomem
00001000-0009d7ff : System RAM
00100000-1fffffff : System RAM
20200000-3fffffff : System RAM
40200000-c97e8fff : System RAM
因此,我能夠通過dd
這些安全的存儲區域執行多個命令,例如(對於20200000-3fffffff
):
dd if=/dev/mem of=Filename bs=230467520 count=1 skip=1 ibs=1075838980
(請注意,ibs
比內存區域的起始位置高几位,並且bs
比它的大小要小一些,因爲正好獲得所有「安全」區域,導致系統再次崩潰。)
UPDATE:
更新:我可以肯定地設置爲 「系統內存」, 「RAM緩存」 和 「保留」 dd
內存區域。
[在unix.stackexchange.com上檢查此網址](http://unix.stackexchange.com/a/119776/25786)。我認爲'fmem'部分將成爲 – ppeterka
@ppeterka立即嘗試。謝謝 –
並行運行'tail -f/var/log/kern.log'和'tail -f/var/log/messages'來查看崩潰之前內核是否輸出消息。然後,在重新啓動後查看這些文件。另外,[更改內核的調試級別](https://wiki.ubuntu.com/Kernel/KernelDebuggingTricks),以便更容易地查看問題所在。考慮在http://unix.stackexchange.com/或http://askubuntu.com/上提問。 –