qemu-system-x86_64 -enable-kvm -S -s -kernel ./arch/x86_64/boot/bzImage -initrd ./rootfs.cpio.gz -nographic -append ‘nokaslr console=ttyS0‘
--nographic
start without gui-S
will not run until connected with a gdb client-gdb tcp::[port]
run a gdbserver with open port at [port] by tcpPS: -s
tells QEMU to start a GDB server on port 1234. -S
can be appended to pause the VM before starting to run.
gdb vmlinux
?gdb: target remote :1234
lx-symbols
break start_kernel
or hb start_kernel
continute
use nokaslr
or turn off KASLR while compile by set .config with CONFIG_RANDOMIZE_BASE = n
Booting from ROM...
Probing EDD (edd=off to disable)... ok
arly console in extract_kernel
input_data: 0x0000000002c773b4
input_len: 0x000000000090c470
output: 0x0000000001000000
output_len: 0x000000000173a968
kernel_total_size: 0x00000000025a7000
Decompressing Linux... Parsing ELF...
solution:
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=e3d03598e8ae7d195af5d3d049596dec336f569f
just add serval lines at arch/x86/Makefile 223
ifdef CONFIG_X86_64
LDFLAGS += $(call ld-option, -z max-page-size=0x200000)
endif ```
原文:https://www.cnblogs.com/sonnet/p/14691029.html