获得e820表
启动日志中包含了e820的相关信息,这段信息在setup_memory_map()中e820_print_map()打印。
dimes | grep e820
就可以得到
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d7ff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009d800-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000ba5b1fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000ba5b2000-0x00000000ba5b8fff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000ba5b9000-0x00000000bad8dfff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000bad8e000-0x00000000bafb5fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000bafb6000-0x00000000ca8a1fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000ca8a2000-0x00000000ca939fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ca93a000-0x00000000ca977fff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000ca978000-0x00000000caa3efff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x00000000caa3f000-0x00000000caffefff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000cafff000-0x00000000caffffff] usable
[ 0.000000] BIOS-e820: [mem 0x00000000cb800000-0x00000000cf9fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000f8000000-0x00000000fbffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed03fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000022f5fffff] usable
可以注意,只有标示为usable的内存才是可以用的。
获得memblock信息
memblock的信息默认是不会打印的,当然有时候也会有一些擦边的。如果需要看到完整的memb