3、操作系统与基础环境:Linux系统选择与裁剪
做边缘网关开发,选对操作系统是第一步。我见过不少团队,硬件选型很猛,结果在系统层面栽了跟头——要么太臃肿跑不动,要么缺驱动连不上外设。今天咱们就聊聊Linux系统的选择、裁剪,以及最基础的网络配置。
3.1 三大Linux发行版怎么选?
工业边缘网关的资源通常很有限——可能就256MB内存、512MB闪存。选系统不能像桌面机那样随便装个Ubuntu Desktop完事。我个人习惯从这三个里挑:
| 发行版 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Ubuntu Server | 原型验证、快速开发 | 社区活跃、包多、文档全 | 体积大(~1GB)、启动慢 |
| Debian | 稳定生产环境 | 极其稳定、资源占用低 | 包版本偏旧、配置稍繁琐 |
| Yocto | 量产定制、资源极度受限 | 极致裁剪、完全可控 | 学习曲线陡、构建时间长 |
我的建议:如果你刚入门,先用Ubuntu Server跑通原型。等产品要量产了,再切到Yocto做定制。我有个项目,一开始用Debian,结果发现某个工业协议栈需要的内核模块版本太老——折腾了两天才搞定。后来学乖了,直接用Ubuntu Server LTS,省心。
3.2 系统裁剪与优化——给网关“瘦身”
你想想看,一个边缘网关可能就跑几个核心服务:数据采集、协议转换、远程通信。装一堆用不上的包,不仅浪费资源,还增加攻击面。所以裁剪是必须的。
3.2.1 最小化安装
安装Ubuntu Server时,只选必要的组件:
- 标准系统工具(SSH、网络工具)
- OpenSSH server(远程管理必备)
- 不要装桌面、打印服务、蓝牙等
3.2.2 移除无用服务
装好后,检查并禁用不需要的服务:
# 查看所有运行的服务
systemctl list-units --type=service --state=running
# 禁用不必要的服务(例如)
sudo systemctl disable bluetooth.service
sudo systemctl disable cups.service
sudo systemctl disable avahi-daemon.service
我曾经在一个项目里,发现网关每隔几分钟就卡一下。查了半天,原来是avahi(零配置网络服务)在后台做广播。关掉后,CPU占用从30%降到了5%。嗯,这种坑踩过一次就记住了。
3.2.3 内核裁剪(进阶)
如果你用Yocto,可以定制内核。去掉不用的驱动和功能:
# 在Yocto的linux-yocto.bbappend中
KERNEL_FEATURES_remove = "features/netfilter/netfilter.scc"
KERNEL_FEATURES_remove = "features/bluetooth/bluetooth.scc"
3.3 SSH远程连接——你的“远程手”
边缘网关通常部署在机柜里、工厂车间、甚至户外。没有SSH,你只能抱着显示器去现场。所以SSH配置是基本功。
3.3.1 安装与启动
sudo apt update
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
3.3.2 安全加固
默认配置太危险。我建议至少做这几步:
- 禁止root登录:
PermitRootLogin no - 改端口:别用22,改成比如2222(减少扫描攻击)
- 使用密钥登录:禁用密码认证
# /etc/ssh/sshd_config 关键配置
Port 2222
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ssh-keygen -t ed25519
3.4 基础网络配置——静态IP与DNS
网关的IP地址不能变。你想想看,如果网关每次重启都换个IP,上位机怎么连它?所以必须配静态IP。
3.4.1 使用Netplan(Ubuntu 18.04+)
Ubuntu现在用Netplan管理网络。配置文件在/etc/netplan/下:
# /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
3.4.2 使用/etc/network/interfaces(Debian/旧版Ubuntu)
# /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 114.114.114.114
3.4.3 验证配置
# 查看IP
ip addr show eth0
# 测试网关
ping -c 4 192.168.1.1
# 测试DNS
nslookup baidu.com
🔑 核心要点:
- 生产环境用Debian或Yocto,开发用Ubuntu Server
- 系统裁剪能省30%-50%的资源占用
- SSH必须加固——密钥登录+改端口
- 静态IP是网关的“身份证”,必须配
好了,这一章的内容就这些。操作系统选型是地基,地基打好了,后面的开发才稳当。下一章咱们会深入聊聊边缘网关的硬件接口与驱动配置——到时候见。