Skip to content

首先是按照官方文档 manifests配置

  1. 在Ubuntu LTS下安装SDK构建所需要的软件包 我是在wsl2-debain环境下同样可以
shell
# 安装SDK构建所需要的软件包
sudo apt install git ssh make gcc libssl-dev liblz4-tool u-boot-tools curl \
expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip device-tree-compiler python-pip libncurses5-dev python3-pyelftools \
dpkg-dev

# 验证安装 
repo --version
  1. 安装repo
shell
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# 如果上面的地址无法访问,可以用下面的:
# curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo    
echo PATH=~/bin:$PATH >> ~/.bashrc
source ~/.bashrc
  1. 保证python版本3
shell
#查看当前系统安装的Python版本有哪些
ls /usr/bin/python*
#将python链接到python3
sudo ln -sf /usr/bin/python3 /usr/bin/python
#重新查看默认Python版本
python -V
  1. 拉取通用SDK RK3576只能使用同用SDK
shell
repo --trace init --depth=1 -u https://github.com/LubanCat/manifests.git -b linux -m lubancat_linux_generic.xml

github拉取很慢,可以使用网盘下载

shell
# 安装tar压缩工具,一般来说系统默认安装了
sudo apt install tar

# 在用户家目录创建LubanCat_SDK目录
mkdir ~/LubanCat_SDK

# 将下载的SDK源码移动到LubanCat_SDK目录下,xxx为日期
mv LubanCat_Linux_Generic_SDK_xxx.tgz ~/LubanCat_SDK

# 进入LubanCat_SDK目录
cd ~/LubanCat_SDK

# 解压SDK压缩包
tar -xzvf LubanCat_Linux_Generic_SDK_xxx.tgz
  1. 更新同步代码
shell
# 检出.repo目录下的git仓库
.repo/repo/repo sync -l

# 将所有的源码仓库同步到最新版本
.repo/repo/repo sync -c

# 进入kernel-6.10目录下
cd kernel-6.1

# 检出到当前提交所在的分支
git checkout lbc-develop-6.1

# 拉取git仓库
git pull
  1. 构建
shell
# 构建为deb包
./build.sh kerneldeb

如果没有构架成功就去检查芯片版本、构建配置有没有选错 构建成功后会提示如下:

生成4个deb文件: linux-headers-6.1.99-rk3576_6.1.99-rk3576-4_arm64.deblinux-image-6.1.99-rk3576_6.1.99-rk3576-4_arm64.deblinux-image-6.1.99-rk3576-dbg_6.1.99-rk3576-4_arm64.deblinux-libc-dev_6.1.99-rk3576-4_arm64.deb Gemini 2.5 Pro给出的解释如下:

  1. linux-image-6.1.99-rk3576_6.1.99-rk3576-4_arm64.deb

    • 这是核心的 Linux 内核映像包。
    • 内容: 包含实际的、可引导的 Linux 内核文件(通常是 /boot/vmlinuz-6.1.99-rk3576)、系统符号映射表 (/boot/System.map-6.1.99-rk3576)、内核配置文件 (/boot/config-6.1.99-rk3576) 以及内核模块(驱动程序等,位于 /lib/modules/6.1.99-rk3576/)。
    • 用途: 安装这个包就是安装该特定版本的 Linux 内核本身。这是让系统能够使用这个内核版本启动所必需的包。你之前安装的就是这个。
  2. linux-headers-6.1.99-rk3576_6.1.99-rk3576-4_arm64.deb

    • 这是 Linux 内核头文件包。
    • 内容: 包含与 6.1.99-rk3576 内核版本相匹配的 C 语言头文件 (.h 文件) 和编译内核模块所需的构建工具链文件(如 Makefiles)。这些文件通常安装在 /usr/src/linux-headers-6.1.99-rk3576/ 目录下。
    • 用途: 主要用于编译外部内核模块。如果你需要安装或编译不包含在主内核树中的驱动程序(例如,某些特定的 WiFi 驱动、虚拟化软件的内核模块如 VirtualBox guest additions,或者你自己开发的驱动),你就需要安装与当前运行内核版本匹配的头文件包。普通用户如果只是使用系统,通常不需要安装这个包。
  3. linux-image-6.1.99-rk3576-dbg_6.1.99-rk3576-4_arm64.deb

    • 这是 Linux 内核映像的调试符号包 (Debug Symbols)。
    • 内容: 包含带有完整调试信息的内核映像文件。这意味着内核编译时没有去除(strip)符号表,使得开发者可以使用调试器(如 gdb, kgdb, crash)来分析内核崩溃(panic)转储(dump)、设置断点、查看变量值等。这个包通常非常大。
    • 用途: 仅用于内核开发和深度调试。普通用户绝对不需要安装这个包。安装它会占用大量磁盘空间。
  4. linux-libc-dev_6.1.99-rk3576-4_arm64.deb

    • 这是 Linux 用户空间 API 头文件包 (Linux Userland API Headers)。
    • 内容: 包含从 Linux 内核源代码中提取出来、供用户空间程序使用的头文件。这些头文件定义了内核提供的系统调用接口、数据结构(如用于 ioctl 的结构)、常量等。它们是编译标准 C 库(如 glibc)和几乎所有需要与内核直接交互(通过系统调用)的用户空间程序所必需的。这些文件通常安装在 /usr/include/linux/ 和 /usr/include/asm/ 等目录下。
    • 用途: 用于编译用户空间的应用程序。这是进行任何 C/C++ 开发的基础包之一,通常作为 build-essential 或 libc6-dev 包的依赖被安装。虽然版本号与内核相关(因为它定义了该内核版本提供的 API),但它服务于用户空间开发,而不是内核模块开发。

总结:

  • linux-image: 必需的,是内核本身。
  • linux-headers: 编译内核模块时需要。
  • linux-image-dbg: 内核调试时需要,普通用户不需要。
  • linux-libc-dev: 编译用户空间程序时需要,是基础开发包。
  1. 安装 上传给鲁班猫3用apt安装即可,/boot分区空间若不够,可以先用apt remove 卸载旧的内核
shell
sudo apt update

# 更新全部要更新的软件包
sudo apt upgrade

#查看内核版本
uname -a

sudo apt install linux-image-6.1.xxx-rk3576
sudo apt install linux-headers-6.1.xxx-rk3576

安装后可用uname -a查看内核编译时间

参考:官方文档.8.Linux内核的编译 manifests