第1章:开发环境搭建
做嵌入式Linux开发,第一步就是搭环境。这事儿说难不难,说简单吧,我见过不少新手在这上面栽跟头。今天咱们就把虚拟机、Ubuntu、网络、SSH、Vim这一套全搞定。
1.1 虚拟机安装
为什么用虚拟机?说白了,就是不想折腾双系统。我在项目中经常需要同时维护多个Linux版本,虚拟机一开一关,比重启电脑方便太多了。
我个人习惯用VMware Workstation,当然VirtualBox也行,免费嘛。不过说句实在话,VMware在USB设备兼容性上确实好一些。我曾经在调试一个USB摄像头驱动时,VirtualBox死活认不到设备,换成VMware就解决了。
安装步骤其实很简单:
- 去官网下载VMware Workstation Pro(有30天试用)
- 或者用VMware Workstation Player(免费版,功能够用)
- 双击安装,一路Next就行
- 记得勾选「增强型虚拟化」选项
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测试一下。能通就说明网络没问题了。
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
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改配置文件。要是没有行号和语法高亮,那真是两眼一抹黑。
i(插入)、:wq(保存退出)、dd(删除行)、yy(复制行)这几个就够了,其他的慢慢来。
本章小结
好了,到这一步,你的开发环境就搭好了。虚拟机里跑着Ubuntu,网络通了,SSH能连了,Vim也能用了。接下来就可以正式开始嵌入式Linux开发了。
说实话,环境搭建这一步虽然基础,但真的很重要。我见过太多人因为环境没配好,后面编译内核、调试驱动时各种报错,最后发现是虚拟机配置不对。所以,别着急,把这一步做扎实了。
下一章,咱们开始讲交叉编译工具链的安装和配置。到时候你会明白,为什么嵌入式开发需要交叉编译,以及怎么搭建一个完整的开发环境。