如何获取EKS集群所用Amazon AMI的内核调试符号?
获取EKS集群Amazon AMI内核调试符号的方法
方法一:启用Amazon Linux 2调试符号仓库安装(推荐)
Amazon Linux 2官方提供了内核调试符号的仓库,只是默认未启用,可按以下步骤操作:
- 创建调试符号仓库配置文件:
sudo tee /etc/yum.repos.d/amzn2-core-debuginfo.repo <<EOF [amzn2-core-debuginfo] name=Amazon Linux 2 Core debuginfo packages mirrorlist=https://amazonlinux.us-east-1.amazonaws.com/2/core/debuginfo/latest/\$basearch/mirror.list gpgcheck=1 gpgkey=https://amazonlinux.us-east-1.amazonaws.com/2/core/RPM-GPG-KEY-amazon-linux-2 enabled=1 EOF - 安装对应内核版本的调试符号包:
替换sudo yum install kernel-debuginfo-$(uname -r)$(uname -r)为你需要的具体内核版本(比如5.10.210-201.852.amzn2.aarch64),确保版本完全匹配。
方法二:基于amazon-eks-ami仓库编译带调试符号的内核
如果针对定制化的EKS内核无法通过仓库获取,可使用官方仓库编译:
- 克隆仓库并切换到对应版本分支/标签:
git clone https://github.com/awslabs/amazon-eks-ami.git cd amazon-eks-ami # 切换到与目标内核版本匹配的commit或标签,可通过仓库的CHANGELOG查找对应版本 git checkout <对应版本标签/哈希> - 进入内核源码目录,启用调试符号配置:
- 执行
make menuconfig进入图形化配置界面 - 找到
Kernel hacking > Compile-time checks and compiler options,勾选Compile the kernel with debug info(对应CONFIG_DEBUG_INFO=y) - 保存配置并退出
- 执行
- 编译内核及调试符号:
编译完成后,调试符号会包含在生成的make -j$(nproc) make modules_install make installvmlinux文件中,模块调试符号则位于/lib/modules/<内核版本>/kernel/下的.ko文件内。
验证调试符号
安装或编译完成后,可通过以下命令验证:
gdb /usr/lib/debug/lib/modules/$(uname -r)/vmlinux
若能正常加载符号,说明调试符号已成功获取。
内容的提问来源于stack exchange,提问作者user23864381
相关产品推荐
相关产品推荐

