1、课程导学与开发环境准备:Buildroot简介、实时Linux概念、安装虚拟机与Ubuntu、配置Git与Repo
1.1 这门课到底讲什么?
大家好,我是你们的讲师。在嵌入式Linux这个行当摸爬滚打了十几年,我见过太多工程师在实时系统上栽跟头。说白了,普通Linux做桌面、做服务器没问题,但一碰到工业控制、机器人、音频处理这些对时间要求苛刻的场景,它就露怯了。
这门课的核心,就是带大家用Buildroot这个工具,从零构建一个「实时Linux系统」。你想想看,一个系统既能跑Linux丰富的生态,又能保证任务在微秒级响应——这才是嵌入式开发的终极浪漫。
我个人习惯把Buildroot比作「乐高积木」。它不像Yocto那么庞大复杂,也不像手动交叉编译那么原始。你只需要选好内核版本、文件系统、应用软件,它就能帮你打包成一个完整的系统镜像。嗯,我在项目里用它做过工业PLC的底层系统,也做过无人机飞控的实时内核,确实省心。
1.2 什么是实时Linux?
先别急着敲命令,咱们得先搞清楚一个概念:什么是「实时」?
普通Linux的调度器讲究「公平」——每个进程轮流用CPU。但实时系统讲究「确定性」——我说这个任务必须在1毫秒内完成,那就必须完成,天塌下来也得完成。
Linux内核本身不是实时的。但社区搞了个「PREEMPT_RT」补丁,把它变成了硬实时内核。说白了,就是让内核可以被高优先级任务随时打断。我在一个医疗设备项目里用过这个方案,传感器数据采集必须每100微秒触发一次,普通内核抖动太大,换了RT内核后,稳得像瑞士钟表。
实时Linux的两种主流方案:
- PREEMPT_RT补丁:给标准内核打补丁,实现硬实时。适合对实时性要求极高的场景。
- Xenomai/Cobalt:双内核方案,一个跑Linux,一个跑实时核。适合需要强隔离的场景。
这门课我们主要用PREEMPT_RT,因为它在Buildroot里集成得最好,社区支持也最活跃。
1.3 开发环境准备:虚拟机与Ubuntu
工欲善其事,必先利其器。咱们先搭好开发环境。
我建议用虚拟机来装Ubuntu。为什么?因为Buildroot编译时会下载大量源码包,万一搞坏了系统,虚拟机快照一恢复就完事。我在公司里就用VMware Workstation,家里用VirtualBox,都挺好。
1.3.1 安装虚拟机
这里我推荐VirtualBox,免费、跨平台、够用。你直接去官网下载对应操作系统的版本安装就行。安装过程没什么坑,一路下一步。
小技巧: 虚拟机内存至少分配4GB,硬盘建议40GB以上。Buildroot编译一次,光下载的源码包就能吃掉好几个G。
1.3.2 安装Ubuntu 22.04 LTS
我选Ubuntu 22.04 LTS,因为它稳定,软件源也全。你下载ISO镜像后,在虚拟机里挂载安装就行。
安装时记得选「最小安装」,别装那些桌面软件,省空间。分区的话,我建议这样:
| 分区 | 大小 | 挂载点 |
|---|---|---|
| /boot | 1GB | /boot |
| swap | 4GB | 交换空间 |
| / | 剩余全部 | / |
我曾经犯过一个错:/boot分区只给了200MB,结果内核版本一多,空间就不够用了。嗯,1GB是安全值。
1.4 配置Git与Repo
Buildroot的源码管理用的是Git,而Google的Repo工具能帮我们管理多个Git仓库。咱们先配好这两个工具。
1.4.1 安装Git
打开终端,执行:
sudo apt update
sudo apt install git git-lfs -y
装完后配置用户名和邮箱,这是Git提交代码时的身份标识:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
我个人习惯再加两个配置:
git config --global core.editor "vim"
git config --global color.ui true
第一个把默认编辑器改成Vim,第二个让Git输出带颜色,看着舒服。
1.4.2 安装Repo
Repo是Google为Android开发的一个工具,用来管理多个Git仓库。Buildroot的某些扩展包也会用到它。
安装很简单:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把~/bin加到PATH里:
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
注意: 如果你在墙内,下载repo可能会失败。可以改用国内镜像:curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
1.5 验证环境
环境搭好了,咱们验证一下:
git --version
repo --version
如果能看到版本号,说明环境没问题。接下来就可以开始我们的Buildroot实时Linux之旅了。
我记得第一次用Buildroot时,光配环境就折腾了一下午。现在有了虚拟机快照,你随时可以回滚到干净状态。嗯,这就是经验的价值。
本章小结:
- 实时Linux的核心是「确定性」,PREEMPT_RT是主流方案。
- Buildroot是构建嵌入式Linux系统的利器,比Yocto简单,比手动编译高效。
- 开发环境用VirtualBox + Ubuntu 22.04 LTS,内存4GB+,硬盘40GB+。
- Git和Repo是源码管理的基础,配好用户名和邮箱。
下一章,咱们就正式用Buildroot来编译第一个实时Linux内核。准备好了吗?