1. 调试环境
使用Docker构建Linux Kernel的运行及调试环境
1.1 构建环境
#!/bin/bash
cd /workspace/linux-5.12.14
make O=../obj/linux/ -j$(nproc)#!/bin/bash
echo 'add-auto-load-safe-path /workspace/linux-5.12.14/scripts/gdb/vmlinux-gdb.py' > /root/.gdbinit # 让 gdb 能够顺利加载内核的调试脚本,如果在下一节编译 Linux Kernel 时下载的是另一版本的 Linux Kernel 代码,请修改这里的版本号
cd /workspace/obj/linux/
gdb vmlinux -ex "target remote :1234" # 启动 gdb 远程调试内核FROM debian:10.8-slim
RUN apt-get update
RUN apt install -y apt-transport-https ca-certificates \
&& echo 'deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free \n\
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free \n\
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free \n\
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free\n'\
> /etc/apt/sources.list \
&& apt update && apt-get install -y \
bc \
bison \
build-essential \
cpio \
flex \
libelf-dev \
libncurses-dev \
libssl-dev \
vim-tiny \
qemu-kvm \
gdb
ADD ./start-gdb.sh /usr/local/bin
ADD ./build-kernel.sh /usr/local/bin
RUN chmod a+x /usr/local/bin/*.sh
WORKDIR /workspace
1.2 编译 Linux Kernel
1.2.1 下载代码
1.2.2 编译Kernel


1.3 使用 Busybox 构建 initramfs
1.3.1 编译busybox

1.3.2 构造 initramfs
1.4 运行 Linux Kernel

1.5 调试 Linux Kernel
1.5.1 GDB



1.5.2 printk

Last updated