2、开发环境搭建:虚拟机安装与系统配置
说实话,做嵌入式Linux开发,第一道坎就是环境搭建。
我记得刚入行那会儿,直接在Windows上装了个双系统,结果切换来切换去,烦得不行。后来用了虚拟机,才发现——嗯,这才是正道。你想想看,开发过程中要频繁测试内核、编译驱动,万一搞崩了系统,虚拟机里直接回滚快照就行,省心太多了。
2.1 虚拟机选型:VirtualBox 还是 VMware?
我个人习惯用 VirtualBox,原因很简单:免费、轻量、够用。但如果你公司有预算,或者你需要更稳定的性能(比如跑大型内核编译),VMware Workstation 确实更稳。
我列个对比表,你一看就明白:
| 特性 | VirtualBox | VMware Workstation |
|---|---|---|
| 价格 | 免费(开源) | 付费(有免费版 Player) |
| 性能 | 中等 | 较好 |
| 快照功能 | 支持 | 支持 |
| 3D加速 | 一般 | 较好 |
| 社区支持 | 非常活跃 | 官方文档完善 |
我的建议是:如果你是初学者,直接用 VirtualBox 就行。等你后面做大型项目,再考虑 VMware。
2.2 Ubuntu 系统安装与配置
选哪个版本?我个人推荐 Ubuntu 22.04 LTS。为什么?LTS 版本有 5 年支持,稳定,而且社区资源多。你遇到问题,随便一搜就有答案。
安装步骤其实很简单,但我还是把关键点列出来:
- 下载 ISO:去 Ubuntu 官网下载 22.04 LTS 桌面版。
- 新建虚拟机:内存建议给 4GB 以上,硬盘 40GB 起步(动态分配)。
- 挂载 ISO:启动虚拟机,选择你下载的 ISO 文件。
- 安装系统:一路默认,但注意「安装类型」选「清除整个磁盘并安装 Ubuntu」——别怕,这只是虚拟磁盘。
- 设置用户名和密码:我习惯用
developer作为用户名,方便记忆。
装完之后,第一件事是什么?不是急着装工具,而是先做两件事:
- 安装增强功能(Guest Additions):在 VirtualBox 菜单栏点击「设备」→「安装增强功能」。这样你才能用共享剪贴板、拖拽文件、自适应窗口。
- 换源:把 apt 源换成国内的(比如阿里云、清华源)。不然你装个 gcc 都要等半天。
换源的方法很简单:
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
嗯,这一步做完,你的 Ubuntu 才算真正「能用」。
2.3 基础开发工具安装
做内核开发,有几个工具是必须装的。我按重要程度排个序:
| 工具 | 用途 | 安装命令 |
|---|---|---|
| gcc | C 语言编译器 | sudo apt install gcc |
| make | 构建工具 | sudo apt install make |
| git | 版本控制 | sudo apt install git |
| vim | 文本编辑器 | sudo apt install vim |
| build-essential | 编译必备包 | sudo apt install build-essential |
你可以一次性装完:
sudo apt update
sudo apt install -y gcc make git vim build-essential
装完之后,验证一下:
gcc --version
make --version
git --version
vim --version
看到版本号输出,就说明装好了。
2.4 额外推荐工具
除了上面这些「必修课」,我还推荐你装几个「选修课」:
- tree:查看目录结构,非常直观。
sudo apt install tree - htop:比 top 更好用的进程管理器。
sudo apt install htop - curl / wget:下载文件必备。
sudo apt install curl wget - net-tools:包含 ifconfig 等网络工具。
sudo apt install net-tools
我个人习惯还会装个 tmux,终端分屏神器。做内核开发时,经常要同时看日志、改代码、跑编译,一个 tmux 全搞定。
2.5 环境验证:写个 Hello Kernel
工具装完了,怎么知道环境没问题?写个最简单的内核模块试试。
创建一个文件 hello.c:
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void) {
printk(KERN_INFO "Hello, Kernel!\n");
return 0;
}
void cleanup_module(void) {
printk(KERN_INFO "Goodbye, Kernel!\n");
}
MODULE_LICENSE("GPL");
再写个 Makefile:
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
然后编译:
make
如果没报错,说明你的 gcc、make、内核头文件都正常。接着加载模块:
sudo insmod hello.ko
dmesg | tail
看到 Hello, Kernel! 了吗?嗯,环境搭建成功了。
No such file or directory,多半是没装内核头文件。执行 sudo apt install linux-headers-$(uname -r) 即可。我曾经在这个坑里摔了两次,后来学乖了,装完系统第一件事就是装头文件。
2.6 本章知识体系
下面这张图,帮你理清本章的核心逻辑:
这张图把本章内容串起来了:先选虚拟机,再装系统,最后装工具。每一步都有坑,但只要你按这个流程走,基本不会出大问题。
好了,环境搭好了,下一章我们开始真正接触内核源码。不过在那之前,我建议你先熟悉一下 Ubuntu 的基本操作,至少学会用终端、apt 包管理、vim 编辑文件。这些基本功,后面会反复用到。