开发环境总体规划:主机系统选择

说实话,做车载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仓库……网络不好真的很痛苦。

我的做法是:

  1. 有线网络优先:稳定、速度快,编译时不会断连
  2. 配置DNS:用8.8.8.8或114.114.114.114,别用运营商默认的
  3. 设置代理:如果你在墙内,建议配个稳定的代理工具

这里给个网络配置示例:

# 编辑网络配置文件
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做主机系统,根据需求选虚拟机或双系统,磁盘分区留够余量,网络配置稳一点——这几步走对了,后面开发就顺了。

下一章咱们聊聊工具链的安装和配置,到时候见。