Skip to main content Home Creators alibaba anolisa kernel-dev
kernel-dev Linux 内核研发自动化技能(RPM 包管理系统),提供内核编译(SRPM/Upstream 双方法)、内核 module 开发环境搭建、依赖安装、示例代码生成等功能。Linux 官方内核及上游最新内核,兼容 x86_64 和 aarch64 双架构。使用场景:内核定制开发、驱动模块研发、内核漏洞修复验证。适用于 RPM 包管理的 Linux 系统(如 Alibaba Cloud Linux)。
Jump to install Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/alibaba/anolisa --skill kernel-devThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... name kernel-dev version 1.0.0 description Linux 内核研发自动化技能(RPM 包管理系统),提供内核编译(SRPM/Upstream 双方法)、内核 module 开发环境搭建、依赖安装、示例代码生成等功能。Linux 官方内核及上游最新内核,兼容 x86_64 和 aarch64 双架构。使用场景:内核定制开发、驱动模块研发、内核漏洞修复验证。适用于 RPM 包管理的 Linux 系统(如 Alibaba Cloud Linux)。 layer core lifecycle production
Kernel Development - Linux 内核研发自动化
核心定位
五大功能:
依赖检测与安装 - 自动检测并安装内核开发所需的软件包
工具链安装 - 安装编译器(gcc)、make、git 等开发工具
内核 devel 包安装 - 下载并安装当前系统内核的 devel 包
内核编译 - 支持两种编译方法:
SRPM 方法 :Alinux4 官方内核,输出 RPM 包,适合生产环境
Upstream 方法 :kernel.org 最新内核,编译快速,适合新特性测试
Module 编译测试 - 测试编译示例内核 module
支持架构:
x86_64 — Intel/AMD 64 位服务器
aarch64 — ARM 64 位服务器(如倚天 710)
重要约束:
🔒 需要 root 权限执行内核相关操作
📦 仅Linux操作系统
⚠️ 内核编译会消耗大量系统资源(建议至少 4GB 内存)
⏱️ 编译时间:SRPM 方法 1-3 小时,Upstream 方法 30-60 分钟
快速开始
一键搭建开发环境
ARCH=$(uname -m)
KERNEL_VER=$(uname -r)
echo "架构: $ARCH | 内核: $KERNEL_VER "
grep -i 'alinux\|alnx' /etc/os-release || echo "[警告] 非 Alinux4 系统"
sudo yum install -y \
gcc gcc-c++ make binutils \
flex bison \
libelf-devel openssl-devel ncurses-devel \
pahole perl python3 python3-devel \
git ccache dwarves wget curl kmod \
rpm-build rpmdevtools
sudo yum install -y kernel-devel-$KERNEL_VER kernel-headers-$KERNEL_VER
ls -l /lib/modules/$KERNEL_VER /build
gcc --version
sudo ./scripts/build-kernel.sh upstream latest 8 defconfig
sudo ./scripts/build-kernel.sh srpm 6.6.102-5.2.alnx4.x86_64
创建第一个内核模块 MODULE_NAME="hello_module"
mkdir -p $MODULE_NAME && cd $MODULE_NAME
cat > ${MODULE_NAME} .c << 'EOF'
MODULE_LICENSE("GPL" );
MODULE_AUTHOR("Alinux4 Kernel Dev" );
MODULE_DESCRIPTION("Hello World kernel module for alnx4" );
MODULE_VERSION("0.1" );
static int __init hello_init(void)
{
printk(KERN_INFO "hello_module: Module loaded (alnx4)\n" );
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "hello_module: Module unloaded\n" );
}
module_init(hello_init);
module_exit(hello_exit);
EOF
cat > Makefile << 'EOF'
obj-m += hello_module.o
KERNEL_DIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd )
all:
make -C $(KERNEL_DIR) M=$(PWD) modules
clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
install:
sudo insmod hello_module.ko
unload:
sudo rmmod hello_module
.PHONY: all clean install unload
EOF
make
sudo make install
dmesg | tail
sudo make unload
Step-by-Step 环境搭建
Step 1: 检测系统架构与信息
ARCH=$(uname -m)
KERNEL_VER=$(uname -r)
echo "系统架构: $ARCH "
echo "内核版本: $KERNEL_VER "
cat /etc/os-release
grep -i 'alinux\|alnx' /etc/os-release
case "$ARCH " in
x86_64) echo "[✓] x86_64 架构,支持" ;;
aarch64) echo "[✓] aarch64 架构,支持" ;;
*) echo "[✗] 不支持的架构: $ARCH " ; exit 1 ;;
esac
Step 2: 安装内核开发依赖 以下依赖包为 x86_64 和 aarch64 通用,yum 会自动匹配当前架构下载对应包:
sudo yum install -y \
gcc gcc-c++ make binutils \
flex bison \
libelf-devel openssl-devel ncurses-devel \
pahole perl python3 python3-devel \
git ccache dwarves wget curl kmod
软件包 用途 必需 架构 gcc, gcc-c++ GNU 编译器 ✓ 通用 make 构建工具 ✓ 通用 binutils 二进制工具 ✓ 通用 flex, bison 词法/语法分析器 ✓ 通用 libelf-devel ELF 文件处理 ✓ 通用 openssl-devel SSL/TLS 库 ✓ 通用 ncurses-devel 终端 UI 库 ✓ 通用 pahole DWARF 调试工具 ✓ 通用 kmod 内核模块工具 ✓ 通用 git 版本控制 ○ 通用 ccache 编译加速 ○ 通用
注意 :yum 仓库的 baseurl 中架构路径不同:
x86_64: https://mirrors.aliyun.com/alinux/4/updates/x86_64/os/
aarch64: https://mirrors.aliyun.com/alinux/4/updates/aarch64/os/
echo "当前架构: $(uname -m) "
for pkg in gcc make flex bison libelf-devel openssl-devel ncurses-devel pahole perl python3 kmod; do
if rpm -q $pkg &>/dev/null; then
echo "[✓] $pkg 已安装"
else
echo "[✗] $pkg 未安装"
fi
done
Step 3: 安装内核 devel 包
KERNEL_VER=$(uname -r)
ARCH=$(uname -m)
echo "当前内核:$KERNEL_VER (架构:$ARCH )"
sudo yum install -y kernel-devel-$KERNEL_VER kernel-headers-$KERNEL_VER
ls -l /lib/modules/$KERNEL_VER /build
# x86_64:
/lib/modules/6.6.102-5.2.alnx4.x86_64/build -> ../../usr/src/kernels/...
# aarch64:
/lib/modules/6.6.102-5.2.alnx4.aarch64/build -> ../../usr/src/kernels/...
Step 4: 验证编译环境
gcc --version
make --version
kmod --version
ls /usr/include/linux/*.h | head -5
mkdir -p /tmp/kernel_test && cd /tmp/kernel_test
cat > test_module.c << 'EOF'
MODULE_LICENSE("GPL" );
static int __init test_init(void) { return 0; }
static void __exit test_exit(void) {}
module_init(test_init);
module_exit(test_exit);
EOF
cat > Makefile << 'EOF'
obj-m += test_module.o
KERNEL_DIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd )
all:
make -C $(KERNEL_DIR) M=$(PWD) modules
clean:
make -C $(KERNEL_DIR) M=$(PWD) clean
EOF
make && ls -lh test_module.ko
内核 Module 开发
创建自定义 Module 以下脚本可创建一个完整的内核模块项目,包含源码和 Makefile:
#!/bin/bash
MODULE_NAME="${1:?请提供模块名称} "
if [ -d "$MODULE_NAME " ]; then
echo "[✗] 目录已存在:$MODULE_NAME "
exit 1
fi
mkdir -p "$MODULE_NAME " && cd "$MODULE_NAME "
cat > ${MODULE_NAME} .c << CEOF
/* ${MODULE_NAME} - Kernel Module for Alinux4 */
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Alinux4 Kernel Dev");
MODULE_DESCRIPTION("${MODULE_NAME}: A simple kernel module for alnx4");
MODULE_VERSION("0.1");
static int __init ${MODULE_NAME}_init(void)
{
printk(KERN_INFO "${MODULE_NAME}: Module loaded (alnx4)\n");
printk(KERN_INFO "${MODULE_NAME}: Hello, Alinux4 Kernel!\n");
return 0;
}
static void __exit ${MODULE_NAME}_exit(void)
{
printk(KERN_INFO "${MODULE_NAME}: Module unloaded\n");
}
module_init(${MODULE_NAME}_init);
module_exit(${MODULE_NAME}_exit);
CEOF
cat > Makefile << MEOF
obj-m += ${MODULE_NAME}.o
KERNEL_DIR := /lib/modules/\$(shell uname -r)/build
PWD := \$(shell pwd)
all:
make -C \$(KERNEL_DIR) M=\$(PWD) modules
clean:
make -C \$(KERNEL_DIR) M=\$(PWD) clean
install:
sudo insmod ${MODULE_NAME}.ko
unload:
sudo rmmod ${MODULE_NAME}
status:
dmesg | tail -20 | grep ${MODULE_NAME}
.PHONY: all clean install unload status
MEOF
echo "[✓] Module 文件已创建:"
echo " - ${MODULE_NAME} /${MODULE_NAME} .c"
echo " - ${MODULE_NAME} /Makefile"
echo ""
echo "快速开始:"
echo " cd ${MODULE_NAME} && make && sudo make install"
编译和测试 Module cd my_module
make
ls -lh *.ko
modinfo my_module.ko
sudo insmod my_module.ko
lsmod | grep my_module
dmesg | tail -10
sudo rmmod my_module
dmesg | tail -10
故障排查
自动化诊断工具
./scripts/check-env.sh
sudo ./scripts/install-deps.sh
sudo ./scripts/setup.sh
常见问题
rpm -qa | grep kernel-devel
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
ls -l /lib/modules/$(uname -r)/build
gcc --version
sudo yum reinstall gcc gcc-c++
make -j2
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
uname -r
modinfo my_module.ko | grep vermagic
make clean && make
sudo mokutil --disable-validation
sudo yum install kmod
kmod --version
Q7: 编译警告 "compiler differs from the one used to build the kernel"
这是正常警告,表示当前 GCC 版本与编译内核时的 GCC 版本略有不同。
只要主版本相同(如都是 GCC 12.3),通常可以安全忽略。
cat /proc/version
gcc --version
Q8: BTF generation skipped
诊断命令
rpm -qa | grep -E 'gcc|make|flex|bison|kmod'
ls /usr/include/linux/*.h | wc -l
ls -l /lib/modules/$(uname -r)/build/Makefile
modinfo my_module.ko
dmesg | tail -50
cat /etc/system-release
uname -r
验收标准
环境搭建验收 步骤 检查命令 成功标志 1️⃣ 依赖安装 gcc --versionGCC >= 10.0 2️⃣ 工具链 make --versionMake >= 4.0 3️⃣ kmod 工具 kmod --versionkmod 已安装 4️⃣ 内核头文件 ls /usr/include/linux头文件存在 5️⃣ Kbuild ls /lib/modules/$(uname -r)/buildbuild 链接存在 6️⃣ 编译测试 make (测试模块).ko 文件生成 7️⃣ 加载测试 sudo insmod test.ko无报错,dmesg 有输出
Module 开发验收
bash create_module.sh test_mod
cd test_mod && make
ls -lh test_mod.ko
sudo insmod test_mod.ko
dmesg | tail
sudo rmmod test_mod
最佳实践
1. 使用 ccache 加速编译
sudo yum install ccache
export CCACHE_DIR=$HOME /.ccache
export CC="ccache gcc"
export CXX="ccache g++"
ccache --stats
首次编译:~45 分钟
二次编译:~8 分钟(提升 5.6 倍)
2. 保存内核配置
cp /boot/config-$(uname -r) ~/kernel-configs/my-config
cp ~/kernel-configs/my-config /usr/src/kernels/linux-*/.config
make olddefconfig
3. 增量编译
make -j8 && make modules -j8
make M=drivers/net clean && make M=drivers/net
4. 版本控制 cd my_module
git init
git add .
git commit -m "Initial kernel module"
Examples
编译新内核 — 双方法编译指南 (SRPM/Upstream),包含配置优化、编译加速、安装流程
编译示例内核 Module — Hello World 内核模块的创建、编译、加载、卸载
示例模块集合 — 包含 hello_module、param_module、proc_module、char_device
Scripts 脚本 描述 scripts/build-kernel.sh内核编译自动化 (支持 SRPM/Upstream 双方法)scripts/check-env.sh检查环境依赖 scripts/install-deps.sh自动安装依赖 scripts/setup.sh一键搭建开发环境 scripts/verify-env.sh全面验证环境(含测试编译) scripts/test-module.sh自动化测试内核模块
./scripts/build-kernel.sh upstream latest 8 defconfig
./scripts/build-kernel.sh srpm $(uname -r)
./scripts/build-kernel.sh status
./scripts/build-kernel.sh install upstream
Documentation
References
适用版本 : Alinux4 (alnx4)
支持架构 : x86_64, aarch64
支持内核 :
More from this repository
Use this skill when the user asks about ANOLISA, Alibaba Cloud Linux 4 Agentic Edition, cosh, Copilot Shell, AgentSecCore, AgentSight, Tokenless, ws-ckpt, OS Skills, or any component of ANOLISA. This includes questions about usage, configuration, commands, free quota, billing, pricing, authentication, or how to use specific features like switching to bash, token optimization, checkpoint rollback, security features, or deploying OpenClaw/Claude Code.
Related occupations SOC
Based on SOC occupation classification