427 views
# kernel gdb # Install Tools ``` bash sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt update sudo apt install gcc-arm-embedded sudo apt install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential gcc-aarch64-linux-gnu ``` > 原教學使用 gdb-arm-none-eabi ,安裝名改為 gcc-arm-embedded([安裝](https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa)) # Build ``` bash git clone https://github.com/figozhang/runninglinuxkernel_4.0.git cd runninglinuxkernel_4.0 export ARCH=arm # arm or arm64 export CROSS_COMPILE=arm-linux-gnueabi- # 原教學為 arm-none-eabi-,依環境設定 make vexpress_defconfig # arm公司的開發板 make menuconfig # 確認為上面設定的開發版 -> system type -> show ARM Ltd. Versatile Express family make bzImage -j 8 make dtbs ``` > 現行的 github 上的 project 編譯會有問題,可以使用 docker image 內的編譯 > > docker pull benshushu/runninglinuxkernel:rlk_basic_ubuntu # Prepare file system 使用 runninglinuxkernel4.0 內準備的 file system: _install_arm32 / _install_arm64 / _install_x86 ## 準備 console ``` bash cd _install_arm32/dev sudo mknod console c 5 1 ``` # Run ``` bash qemu-system-arm -nographic -M vexpress-a9 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb ``` > 新增 -S -s 的 option 可以接 gdb,注意接上後,console 會類似卡住在等 gdb 控制 ## 使用互動介面的 gdb 接管 qemu 執行 kernel ``` bash arm-none-eabi-gdb --tui vmlinux target remote localhost:1234 ``` # Appendix [奔跑吧 linux kernel](https://hub.docker.com/r/benshushu/runninglinuxkernel)