第1章:开发环境搭建

做嵌入式Linux开发,第一步就是搭环境。这事儿说难不难,说简单吧,我见过不少新手在这上面栽跟头。今天咱们就把虚拟机、Ubuntu、网络、SSH、Vim这一套全搞定。

1.1 虚拟机安装

为什么用虚拟机?说白了,就是不想折腾双系统。我在项目中经常需要同时维护多个Linux版本,虚拟机一开一关,比重启电脑方便太多了。

我个人习惯用VMware Workstation,当然VirtualBox也行,免费嘛。不过说句实在话,VMware在USB设备兼容性上确实好一些。我曾经在调试一个USB摄像头驱动时,VirtualBox死活认不到设备,换成VMware就解决了。

安装步骤其实很简单:

  • 去官网下载VMware Workstation Pro(有30天试用)
  • 或者用VMware Workstation Player(免费版,功能够用)
  • 双击安装,一路Next就行
  • 记得勾选「增强型虚拟化」选项
小提示:安装前先进BIOS确认虚拟化技术(VT-x/AMD-V)已经开启。我遇到过好几次,虚拟机装好了发现跑不起来,最后发现是BIOS里没开虚拟化。

1.2 Ubuntu系统安装

Ubuntu版本怎么选?我建议用LTS版本,比如20.04或22.04。为什么?因为LTS版本有5年支持,你项目做一半系统不支持了,那多尴尬。

创建虚拟机时,我一般这么配置:

配置项 推荐值 说明
内存 4GB以上 低于2GB编译会卡死
处理器 2核以上 编译时多核优势明显
磁盘 60GB以上 建议动态分配
网络 桥接模式 方便后续SSH连接

安装过程没什么特别的,就是选语言、分区、设置用户名密码。不过有一点要注意——分区方案。我建议这样分:

  • /boot:500MB,放内核和引导文件
  • /:30GB,系统根目录
  • /home:剩余空间,你的代码都放这
  • swap:4GB,内存不够时顶一下
注意:千万别把整个磁盘都分给根目录。我曾经有个同事,把所有空间都给了/,结果/home不够用,最后只能重装系统。嗯,血的教训。

1.3 配置网络环境

Ubuntu装好了,第一件事就是联网。你想想看,没有网络,apt都用不了,那还玩什么?

网络配置其实就两种场景:

场景一:桥接模式

虚拟机直接使用物理网络,就像一台独立电脑。我开发时基本都用这个模式,方便从宿主机SSH过去。

场景二:NAT模式

虚拟机通过宿主机上网,适合公司网络环境受限的情况。

配置方法很简单,在VMware里改一下网络适配器设置就行。不过有时候改了之后Ubuntu里还是没网,这时候需要手动配一下:

# 查看网卡名称
ip a

# 编辑网络配置文件(Ubuntu 20.04用netplan)
sudo vim /etc/netplan/01-network-manager-all.yaml

# 配置示例
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true
      dhcp6: false

# 应用配置
sudo netplan apply

配置完用ping 8.8.8.8测试一下。能通就说明网络没问题了。

核心要点:网络配置是开发环境的基础。我建议一开始就配好静态IP,这样后面SSH连接时IP不会变来变去,省心。

1.4 安装SSH服务

为什么要装SSH?因为没人愿意一直待在虚拟机里敲命令。我习惯用MobaXterm或者Windows Terminal连过去,体验比虚拟机控制台好太多了。

安装SSH服务就两行命令:

# 更新软件源
sudo apt update

# 安装SSH服务
sudo apt install openssh-server -y

# 查看服务状态
sudo systemctl status ssh

装完之后,在宿主机上试一下能不能连上:

ssh 用户名@虚拟机IP

如果连不上,多半是防火墙的问题。我遇到过好几次,明明SSH服务跑着,就是连不上,最后发现是ufw防火墙没放行22端口:

# 查看防火墙状态
sudo ufw status

# 放行SSH端口
sudo ufw allow 22

# 或者直接关掉防火墙(开发环境无所谓)
sudo ufw disable
小技巧:配置SSH密钥登录,省去每次输密码的麻烦。生成密钥对,把公钥传到虚拟机里,以后连接就不用密码了。我在项目中管理几十台设备时,这个技巧帮我省了不少时间。

1.5 安装Vim编辑器

Vim是Linux下的标配编辑器。说实话,刚接触时我也觉得它反人类,但用习惯了就回不去了。为什么?因为你在任何Linux设备上都能用Vim,不需要图形界面,远程SSH时也能用。

Ubuntu默认装了vim-tiny,功能不全。我建议装完整版:

# 安装完整版Vim
sudo apt install vim -y

# 验证版本
vim --version

装完之后,我一般会做几个基础配置。在~/.vimrc里加上这些:

" 显示行号
set number

" 语法高亮
syntax on

" 自动缩进
set autoindent

" Tab键宽度
set tabstop=4
set shiftwidth=4

" 搜索时忽略大小写
set ignorecase

" 显示匹配的括号
set showmatch

这些配置看着简单,但能让你用Vim时舒服不少。我曾经在客户现场调试设备,只有命令行界面,全靠Vim改配置文件。要是没有行号和语法高亮,那真是两眼一抹黑。

记住:Vim的学习曲线确实陡,但值得投入。你不需要记住所有命令,先掌握i(插入)、:wq(保存退出)、dd(删除行)、yy(复制行)这几个就够了,其他的慢慢来。

本章小结

好了,到这一步,你的开发环境就搭好了。虚拟机里跑着Ubuntu,网络通了,SSH能连了,Vim也能用了。接下来就可以正式开始嵌入式Linux开发了。

说实话,环境搭建这一步虽然基础,但真的很重要。我见过太多人因为环境没配好,后面编译内核、调试驱动时各种报错,最后发现是虚拟机配置不对。所以,别着急,把这一步做扎实了。

下一章,咱们开始讲交叉编译工具链的安装和配置。到时候你会明白,为什么嵌入式开发需要交叉编译,以及怎么搭建一个完整的开发环境。