开发环境总体规划:主机系统选择
说实话,做车载Linux开发这么多年,我踩过最大的坑就是开发环境没规划好。记得刚入行那会儿,随便找了台Windows笔记本就开始干,结果编译一个内核要等半小时,调试时驱动死活加载不上……后来才发现,问题出在根上——主机系统没选对。
今天咱们就来聊聊,怎么把开发环境的底子打好。
Ubuntu 22.04:为什么是它?
我个人习惯用Ubuntu LTS版本做开发。目前最稳的是22.04,也就是Jammy Jellyfish。为什么选它?
- 长期支持:到2027年才结束支持,省心
- 软件包够新:GCC 11、Python 3.10、CMake 3.22,这些版本对车载项目来说刚刚好
- 社区活跃:遇到问题,StackOverflow上一搜一大把答案
你可能会问:Ubuntu 20.04行不行?嗯,也行,但有些新工具链需要手动升级,麻烦。24.04呢?太新了,有些嵌入式工具还没适配好。所以22.04是目前最平衡的选择。
我的建议:如果你手头有闲置的台式机,直接装Ubuntu 22.04。没有的话,用虚拟机也行,后面会细说。
虚拟机 vs 双系统:怎么选?
这个问题我经常被问到。说白了,没有绝对的好坏,看你的使用场景。
| 方案 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| 双系统 | 性能无损、硬件直通 | 切换麻烦、占用整个硬盘 | 重度开发、需要大量编译 |
| 虚拟机 | 方便切换、快照备份 | 性能损失10%-20% | 初学者、轻量开发 |
我在项目中遇到过这样的情况:用虚拟机做Yocto编译,一次构建要4小时,换成双系统后缩短到3小时。但如果你只是写写驱动、调试应用,虚拟机完全够用。
避坑指南:我曾经在虚拟机里分配了2核4GB内存就跑Yocto,结果编译到一半直接OOM。后来学乖了,至少给4核8GB。
磁盘分区与空间规划
嗯,这里要重点说说。很多新手上来就把整个硬盘分一个区,结果后面想扩展都难。
我个人习惯这样分:
- /boot:1GB,放内核和引导文件
- /:50GB,系统根目录
- /home:剩余空间,放代码和项目文件
- swap:16GB,内存的一半大小
为什么单独分/home?你想想看,万一系统崩了要重装,只要/home分区不动,你的代码、配置、项目文件都还在。这个习惯帮我省了不少事。
注意:如果你做Yocto或Android AOSP编译,建议预留至少200GB空间。一个完整的Yocto构建,光下载的源码和缓存就能吃掉80GB。
网络环境配置
开发环境搭好了,网络不通?那等于白搭。车载Linux开发经常需要从GitHub拉代码、下载工具链、同步AOSP仓库……网络不好真的很痛苦。
我的做法是:
- 有线网络优先:稳定、速度快,编译时不会断连
- 配置DNS:用8.8.8.8或114.114.114.114,别用运营商默认的
- 设置代理:如果你在墙内,建议配个稳定的代理工具
这里给个网络配置示例:
# 编辑网络配置文件
sudo nano /etc/netplan/01-netcfg.yaml
# 内容如下
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
# 应用配置
sudo netplan apply
我曾经因为DNS配置不对,折腾了一整天拉不下来AOSP源码。后来发现是运营商DNS把某些域名解析到了错误的IP上。换成8.8.8.8后,问题立刻解决。
小技巧:如果你经常需要从GitHub拉代码,可以配置SSH密钥,省去每次输入密码的麻烦。生成密钥用 ssh-keygen -t ed25519,然后把公钥加到GitHub上。
总结一下
开发环境规划这事儿,说白了就是打好地基。地基不稳,后面盖的楼再漂亮也白搭。Ubuntu 22.04做主机系统,根据需求选虚拟机或双系统,磁盘分区留够余量,网络配置稳一点——这几步走对了,后面开发就顺了。
下一章咱们聊聊工具链的安装和配置,到时候见。