kernel调试环境搭建

download

buildroot

1
2
wget https://buildroot.org/downloads/buildroot-2023.02.tar.xz
tar xf buildroot-2023.02.tar.xz && cd buildroot-2023.02

qemu

1
2
3
wget https://download.qemu.org/qemu-8.1.1.tar.xz
tar xvJf qemu-8.1.1.tar.xz
cd qemu-8.1.1

qemu的一些小tips

1
2
3
sudo apt-get install ninja-build libpixman-1-dev libglib2.0-dev
“qemu-system” ./configure --target-list=${QEMU_TARGET_LIST}-softmmu
“qemu-user” ./configure --target-list=${QEMU_TARGET_LIST}-linux-user

架构

因为用的是qemu,buildroot有预先准备了这些配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
make list-defconfigs
qemu_aarch64_ebbr_defconfig - Build for qemu_aarch64_ebbr
qemu_aarch64_sbsa_defconfig - Build for qemu_aarch64_sbsa
qemu_aarch64_virt_defconfig - Build for qemu_aarch64_virt
qemu_arm_ebbr_defconfig - Build for qemu_arm_ebbr
qemu_arm_versatile_defconfig - Build for qemu_arm_versatile
qemu_arm_vexpress_defconfig - Build for qemu_arm_vexpress
qemu_arm_vexpress_tz_defconfig - Build for qemu_arm_vexpress_tz
qemu_m68k_mcf5208_defconfig - Build for qemu_m68k_mcf5208
qemu_m68k_q800_defconfig - Build for qemu_m68k_q800
qemu_microblazebe_mmu_defconfig - Build for qemu_microblazebe_mmu
qemu_microblazeel_mmu_defconfig - Build for qemu_microblazeel_mmu
qemu_mips32r2el_malta_defconfig - Build for qemu_mips32r2el_malta
qemu_mips32r2_malta_defconfig - Build for qemu_mips32r2_malta
qemu_mips32r6el_malta_defconfig - Build for qemu_mips32r6el_malta
qemu_mips32r6_malta_defconfig - Build for qemu_mips32r6_malta
qemu_mips64el_malta_defconfig - Build for qemu_mips64el_malta
qemu_mips64_malta_defconfig - Build for qemu_mips64_malta
qemu_mips64r6el_malta_defconfig - Build for qemu_mips64r6el_malta
qemu_mips64r6_malta_defconfig - Build for qemu_mips64r6_malta
qemu_nios2_10m50_defconfig - Build for qemu_nios2_10m50
qemu_or1k_defconfig - Build for qemu_or1k
qemu_ppc64_e5500_defconfig - Build for qemu_ppc64_e5500
qemu_ppc64le_powernv8_defconfig - Build for qemu_ppc64le_powernv8
qemu_ppc64le_pseries_defconfig - Build for qemu_ppc64le_pseries
qemu_ppc64_pseries_defconfig - Build for qemu_ppc64_pseries
qemu_ppc_bamboo_defconfig - Build for qemu_ppc_bamboo
qemu_ppc_e500mc_defconfig - Build for qemu_ppc_e500mc
qemu_ppc_g3beige_defconfig - Build for qemu_ppc_g3beige
qemu_ppc_mac99_defconfig - Build for qemu_ppc_mac99
qemu_ppc_mpc8544ds_defconfig - Build for qemu_ppc_mpc8544ds
qemu_riscv32_virt_defconfig - Build for qemu_riscv32_virt
qemu_riscv64_nommu_virt_defconfig - Build for qemu_riscv64_nommu_virt
qemu_riscv64_virt_defconfig - Build for qemu_riscv64_virt
qemu_s390x_defconfig - Build for qemu_s390x
qemu_sh4eb_r2d_defconfig - Build for qemu_sh4eb_r2d
qemu_sh4_r2d_defconfig - Build for qemu_sh4_r2d
qemu_sparc64_sun4u_defconfig - Build for qemu_sparc64_sun4u
qemu_sparc_ss10_defconfig - Build for qemu_sparc_ss10
qemu_x86_64_defconfig - Build for qemu_x86_64
qemu_x86_defconfig - Build for qemu_x86
qemu_xtensa_lx60_defconfig - Build for qemu_xtensa_lx60
qemu_xtensa_lx60_nommu_defconfig - Build for qemu_xtensa_lx60_nommu

编译前准备

开debug

1
2
3
4
5
$ make menuconfig
Build options --->
[*] build packages with debugging symbols
gcc debug level (debug level 3) --->
[ ] strip target binaries

关KALSR(make的时间可能较长慢慢等就是了)

1
2
3
4
$ make linux-menuconfig
Processor type and features --->
[*] Build a relocatable kernel
[ ] Randomize the address of the kernel image (KASLR)

重打包

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# thk n132
# ./repk.sh ./rootfs
cd $1 &&\
find . | cpio -o --format=newc > ../rootfs.cpio &&\
cd .. &&\
mv ./rootfs.cpio ./initramfs.cpio &&\
rm -rf ./initramfs.cpio.gz &&\
gzip ./initramfs.cpio &&\
echo "[+] Filesystem - Done"