2. 嵌入式Linux系统搭建:烧录系统镜像、系统初始化配置、SSH远程连接、VNC远程桌面、换源与基础软件安装

系统搭建是嵌入式开发的第一步,也是后续所有工作的基础。说实话,我见过不少项目在后期出问题,追根溯源都是系统初始化没做好。这一章,咱们就把这块硬骨头啃下来。

本章核心目标:让一块“裸板”变成一台可以通过网络远程访问、具备基础开发环境的嵌入式Linux主机。

2.1 烧录系统镜像——给硬件注入灵魂

拿到一块新的开发板,比如我常用的RK3588或树莓派,第一件事就是给它烧录系统。这就像给电脑装操作系统,但嵌入式设备通常没有BIOS,得用专用工具把镜像写到SD卡或eMMC里。

2.1.1 准备工作

  • 硬件:开发板、TF卡(建议32GB以上,Class 10)、读卡器、USB转TTL串口模块(备用)。
  • 软件:系统镜像文件(.img或.img.xz)、烧录工具(balenaEtcher、Win32DiskImager或dd命令)。

我的习惯:我一般用balenaEtcher,跨平台、界面直观,还能自动校验写入数据。曾经有一次用dd命令写镜像,手抖写错了设备号,直接把我的工作硬盘给覆盖了……从那以后,我写镜像前都会再三确认目标设备。

2.1.2 烧录步骤(以balenaEtcher为例)

  1. 插入TF卡到读卡器,连接电脑。
  2. 打开balenaEtcher,点击“Flash from file”,选择下载好的系统镜像。
  3. 点击“Select target”,选择你的TF卡(注意别选错!)。
  4. 点击“Flash!”,等待进度条走完。
  5. 烧录完成后,工具会自动校验,确保数据完整。
# 如果你喜欢命令行,也可以用dd(Linux/Mac):
sudo dd if=your_image.img of=/dev/sdX bs=4M status=progress
sync

注意:dd命令中的of=参数一定要写对!/dev/sda通常是系统盘,/dev/sdb或/dev/sdc才是你的TF卡。用lsblk或fdisk -l先确认一下。

2.2 系统初始化配置——让系统跑起来

镜像烧好了,插卡上电。第一次启动,系统会自动扩展分区、生成SSH密钥。这个过程大概需要1-2分钟,别急。

2.2.1 首次启动与登录

通过串口或HDMI连接显示器,你会看到系统启动日志。登录信息通常在官方文档里,比如树莓派的默认账号是pi/raspberry,很多ARM开发板是root/root或root/123456。

避坑指南:我曾经遇到过一块板子,默认密码怎么都登不上去。后来发现是镜像版本太老,默认密码被改了。解决办法是重新下载最新版镜像,或者通过串口进入uboot修改启动参数,挂载根文件系统后手动改密码。

2.2.2 基础配置清单

配置项 说明 常用命令/工具
修改root密码 设置一个强密码,别用默认的 passwd
设置主机名 方便网络识别 hostnamectl set-hostname edge-ai-01
配置时区 默认是UTC,改成Asia/Shanghai timedatectl set-timezone Asia/Shanghai
启用网络 有线或WiFi连接 nmtui 或编辑 /etc/network/interfaces
查看IP地址 记下来,后面远程连接要用 ip addr 或 ifconfig

2.3 SSH远程连接——告别串口线

系统初始化好了,接下来我们要实现远程控制。SSH是嵌入式开发中最常用的远程连接方式,没有之一。

2.3.1 启用SSH服务

大多数官方镜像默认关闭SSH,需要手动开启。在树莓派上,你可以在TF卡的boot分区创建一个名为ssh的空文件(无后缀名)。其他板子通常需要执行:

sudo systemctl enable ssh
sudo systemctl start ssh

2.3.2 从电脑连接开发板

打开终端(Windows用户用PowerShell或Putty),输入:

ssh root@192.168.1.100  # 换成你板子的实际IP

第一次连接会提示确认主机指纹,输入yes,然后输入密码。搞定!

进阶技巧:配置SSH密钥登录,省去每次输密码的麻烦。我习惯在本地生成一对密钥,把公钥传到板子上:

ssh-keygen -t rsa -b 4096
ssh-copy-id root@192.168.1.100

2.4 VNC远程桌面——图形化操作

有些时候,命令行搞不定,比如调试摄像头预览、配置桌面环境。这时候就需要VNC了。

2.4.1 安装VNC服务器

我推荐用TightVNC或TigerVNC,轻量且稳定。在板子上执行:

sudo apt update
sudo apt install tightvncserver

2.4.2 启动VNC服务

vncserver :1 -geometry 1280x720 -depth 24

这会启动一个分辨率为1280x720的虚拟桌面,编号为:1。你可以在电脑上用VNC Viewer连接:192.168.1.100:5901(5900 + 显示编号)。

注意:VNC默认不加密,不要在公网上直接暴露。如果需要在公网访问,建议通过SSH隧道转发:

ssh -L 5901:localhost:5901 root@192.168.1.100

然后在本地连接 localhost:5901,这样所有流量都经过SSH加密。

2.5 换源与基础软件安装——打造开发环境

默认的软件源在国外,下载速度慢得让人抓狂。换源是必须的。

2.5.1 更换APT源

以Ubuntu/Debian系统为例,编辑 /etc/apt/sources.list:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  # 备份
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update

我用的是中科大源,你也可以用清华、阿里云的源,速度都不错。

2.5.2 安装基础软件包

以下是我每次搭建新环境必装的软件:

软件包 用途 安装命令
build-essential 编译工具链(gcc, g++, make) sudo apt install build-essential
git 版本控制 sudo apt install git
vim / nano 文本编辑器 sudo apt install vim
htop 系统资源监控 sudo apt install htop
net-tools 网络工具(ifconfig等) sudo apt install net-tools
python3-pip Python包管理 sudo apt install python3-pip
cmake 跨平台构建工具 sudo apt install cmake

我的经验:装完这些基础包后,我还会顺手装一个tree命令,查看目录结构非常直观。另外,screen或tmux也推荐装上,SSH断开后任务不会中断,这个在远程编译大项目时特别有用。

2.6 本章知识体系

下面这张图总结了嵌入式Linux系统搭建的完整流程,你可以把它当作一个检查清单:

嵌入式Linux系统搭建流程 ① 烧录系统镜像 ② 系统初始化配置 ③ SSH远程连接 ④ VNC远程桌面 ⑤ 换源与基础软件安装 完成这5步,你的开发板就具备了远程开发、图形化操作和基础编译环境