第一章:rootfs网络基础
什么是rootfs?
rootfs,全称是root filesystem,中文叫根文件系统。说白了,它就是嵌入式Linux系统启动后挂载的第一个文件系统。你想想看,Linux内核启动完成后,总得有个地方去加载init进程、读取配置文件、运行应用程序吧?这个「地方」就是rootfs。
我刚开始接触嵌入式Linux时,总觉得rootfs不就是一堆文件夹和文件吗?后来踩过坑才明白——rootfs是整个系统的基石。没有它,内核就是个光杆司令,啥也干不了。
rootfs里通常包含这些关键内容:
- /bin、/sbin:基础命令和系统管理工具
- /etc:配置文件,网络配置就在这里面
- /lib:动态链接库,应用程序依赖它们
- /dev:设备节点,硬件和软件的桥梁
- /proc、/sys:虚拟文件系统,内核信息的窗口
网络在嵌入式系统中的角色
嵌入式系统不像你的台式机,它通常没有显示器、键盘。那你怎么跟它交互?怎么让它上报数据?怎么远程更新固件?答案就是网络。
我参与过一个智能网关项目,设备部署在偏远地区。没有网络,工程师就得开车几百公里去现场升级固件。有了网络,一条命令就能搞定。你说网络重不重要?
嵌入式系统中,网络承担着这些核心任务:
- 远程管理:SSH、Telnet、Web界面
- 数据上报:传感器数据、日志信息
- 固件升级:OTA远程更新
- 设备间通信:MQTT、CoAP等协议
- 时间同步:NTP协议
网络配置的核心概念
要配置网络,你得先搞懂几个基础概念。别嫌简单,我见过不少工程师在这上面翻车。
IP地址
IP地址就像你家的门牌号。网络上的设备要找到彼此,就得靠这个地址。IPv4地址是32位的,通常写成四个十进制数,比如192.168.1.100。
IP地址分两部分:网络号和主机号。网络号标识你在哪个网段,主机号标识你是这个网段里的哪台设备。
关键点:同一个网段内的设备才能直接通信。跨网段通信需要网关帮忙转发。
子网掩码
子网掩码用来划分IP地址的网络号和主机号。它也是32位的,写成255.255.255.0这种形式。
举个例子:
- IP地址:192.168.1.100
- 子网掩码:255.255.255.0
- 网络号:192.168.1.0
- 主机号:100
子网掩码255.255.255.0表示前24位是网络号,后8位是主机号。这个网段里最多有254台设备(0和255有特殊用途)。
网关
网关是连接不同网段的设备。你的设备要访问互联网,就得把数据包发给网关,由网关转发出去。
网关通常是一个路由器的IP地址。在家庭网络里,它一般是192.168.1.1或192.168.0.1。
配置网关时要注意:
- 网关IP必须和你的设备在同一个网段
- 网关必须能正常工作,否则你出不去
- 有时候需要配置多条路由,指定不同网段走不同网关
DNS
DNS把域名翻译成IP地址。你访问www.baidu.com,DNS服务器会告诉你它的IP是220.181.38.148。
嵌入式系统里DNS配置经常被忽略。我见过一个项目,设备能ping通IP地址,但用域名访问就是不行。查了半天,发现DNS服务器地址配错了。
常用的DNS服务器:
| 服务商 | 主DNS | 备DNS |
|---|---|---|
| 114DNS | 114.114.114.114 | 114.114.115.115 |
| 阿里DNS | 223.5.5.5 | 223.6.6.6 |
| Google DNS | 8.8.8.8 | 8.8.4.4 |
知识体系总览
下面这张图帮你理清本章的知识结构:
小结
这一章我们聊了rootfs是什么,网络在嵌入式系统里扮演什么角色,还有四个核心概念:IP地址、子网掩码、网关、DNS。
嗯,这些概念看起来简单,但实际配置时很容易出错。我建议你动手试试:拿一块开发板,手动配置这些参数,然后ping一下网关和外部IP,感受一下网络是怎么通的。
下一章我们会深入rootfs的网络配置文件,看看这些参数到底写在哪里、怎么写。到时候我会分享一些实际项目中的配置模板,保证实用。