内核源码获取与版本选择:从kernel.org下载、Git仓库管理、LTS版本选择策略
做嵌入式Linux,第一步就是搞定内核源码。这事儿看着简单,但我在项目里见过太多人在这上面栽跟头。今天咱们就聊聊怎么选版本、怎么下载、怎么管理。
从kernel.org下载:最正统的方式
kernel.org是Linux内核的官方发布站点。我个人习惯直接去那下载,原因很简单——干净、权威、没中间商赚差价。
打开网站,你会看到一堆版本号。别慌,咱们挑着看:
- 主线版本(Mainline):Linus Torvalds亲自维护的,最新最热,但稳定性嘛...你懂的
- 稳定版本(Stable):在主线基础上修修补补,适合大多数场景
- 长期支持版本(LTS):这个重点说,后面单独讲
- 实时版本(RT):做工业控制、机器人用的,普通项目用不上
我的习惯:下载时选tar.xz格式,压缩率高,传输快。解压命令:
tar -xf linux-6.1.y.tar.xz
Git仓库管理:版本控制的正确姿势
用Git管理内核源码,说白了就是给自己留条后路。我在做某个物联网网关项目时,就因为没做Git管理,改了一堆配置后想回退,结果...嗯,重下了三遍源码。
克隆主线仓库:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git checkout v6.1
为什么要用Git?三个理由:
- 版本切换方便:
git checkout v5.15一秒切版本 - 打补丁简单:
git am patch_file.patch搞定 - 自己改的东西能追溯:哪天改崩了,
git diff一看就知道动了哪
注意:完整克隆内核仓库大概3-4GB,网络不好的话,建议用
--depth 1 只拉最新版本。比如:git clone --depth 1 --branch v6.1 git://...
LTS版本选择策略:别追新,求稳
做产品选内核版本,我有一条铁律:能用LTS就别用主线。为什么?
你想想看,一个产品从开发到量产,少说半年,多则两三年。主线版本每两三个月就出一个大版本,你追得上吗?
目前推荐的LTS版本:
| 版本 | 发布年份 | 维护截止 | 推荐场景 |
|---|---|---|---|
| 6.1.x | 2022 | 2026+ | 新项目首选,支持新硬件 |
| 5.15.x | 2021 | 2026+ | 成熟稳定,资料最多 |
| 5.10.x | 2020 | 2026+ | 老项目维护,兼容性好 |
| 5.4.x | 2019 | 2025 | 极老项目,建议迁移 |
选版本时,我一般这么考虑:
- 新项目:用6.1或5.15,驱动支持好,社区活跃
- 老项目升级:看原来用的什么,尽量选同大版本的最新小版本
- 芯片厂商要求:有些SoC厂商会指定内核版本,比如全志喜欢用5.4,那就别硬上6.1
核心观点:LTS版本就像老黄牛,干活稳当不出错。主线版本像赛马,跑得快但容易摔。做产品,选老黄牛。
版本选择的避坑指南
我曾经在一个项目里选了当时最新的6.0主线版本,结果发现某个网卡驱动有bug,折腾了两周才找到补丁。后来学乖了,一律用LTS。
还有一次,客户要求用5.10,但我们的BSP只支持5.4。你以为换个版本就能编译过?太天真了。设备树、驱动API、配置选项全都不一样。所以,版本选择要跟BSP走,别自己拍脑袋。
最后说一句:内核源码获取不是技术活,是经验活。选对了版本,后面裁剪、编译、调试都顺风顺水。选错了...嗯,你会在Git里来回切换,浪费大量时间。
可可精品资料库