第一章:rootfs网络基础

什么是rootfs?

rootfs,全称是root filesystem,中文叫根文件系统。说白了,它就是嵌入式Linux系统启动后挂载的第一个文件系统。你想想看,Linux内核启动完成后,总得有个地方去加载init进程、读取配置文件、运行应用程序吧?这个「地方」就是rootfs。

我刚开始接触嵌入式Linux时,总觉得rootfs不就是一堆文件夹和文件吗?后来踩过坑才明白——rootfs是整个系统的基石。没有它,内核就是个光杆司令,啥也干不了。

rootfs里通常包含这些关键内容:

  • /bin、/sbin:基础命令和系统管理工具
  • /etc:配置文件,网络配置就在这里面
  • /lib:动态链接库,应用程序依赖它们
  • /dev:设备节点,硬件和软件的桥梁
  • /proc、/sys:虚拟文件系统,内核信息的窗口
我的经验:在项目里,我习惯把rootfs做成只读的,然后把需要修改的目录(比如/etc、/var)挂载成可读写分区。这样能防止意外修改导致系统变砖。

网络在嵌入式系统中的角色

嵌入式系统不像你的台式机,它通常没有显示器、键盘。那你怎么跟它交互?怎么让它上报数据?怎么远程更新固件?答案就是网络。

我参与过一个智能网关项目,设备部署在偏远地区。没有网络,工程师就得开车几百公里去现场升级固件。有了网络,一条命令就能搞定。你说网络重不重要?

嵌入式系统中,网络承担着这些核心任务:

  • 远程管理:SSH、Telnet、Web界面
  • 数据上报:传感器数据、日志信息
  • 固件升级:OTA远程更新
  • 设备间通信:MQTT、CoAP等协议
  • 时间同步:NTP协议
注意:我曾经遇到一个案例,设备网络配置写死在代码里,结果现场IP段变了,所有设备都得返厂重刷。所以网络配置一定要灵活,最好支持运行时修改。

网络配置的核心概念

要配置网络,你得先搞懂几个基础概念。别嫌简单,我见过不少工程师在这上面翻车。

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有特殊用途)。

避坑指南:我曾经把子网掩码配成255.255.0.0,结果设备能ping通隔壁网段的机器,但网关却找不到它。排查了半天才发现是子网掩码搞错了。记住:子网掩码决定了你的「活动范围」。

网关

网关是连接不同网段的设备。你的设备要访问互联网,就得把数据包发给网关,由网关转发出去。

网关通常是一个路由器的IP地址。在家庭网络里,它一般是192.168.1.1或192.168.0.1。

配置网关时要注意:

  • 网关IP必须和你的设备在同一个网段
  • 网关必须能正常工作,否则你出不去
  • 有时候需要配置多条路由,指定不同网段走不同网关
注意:我遇到过一种情况,设备能ping通网关,但就是上不了外网。后来发现是网关设备上的NAT没配好。所以排查网络问题时,要一层层检查:先看本地,再看网关,最后看外网。

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
我的建议:嵌入式设备最好配两个DNS服务器,一个主用,一个备用。主DNS挂了,自动切换到备用,避免网络中断。

知识体系总览

下面这张图帮你理清本章的知识结构:

rootfs网络配置知识体系 rootfs 网络在嵌入式系统中的角色 IP地址 子网掩码 网关 DNS 设备在网络中的唯一标识 如:192.168.1.100 划分网络号和主机号 如:255.255.255.0 连接不同网段的设备 如:192.168.1.1 域名解析为IP地址 如:114.114.114.114 四者缺一不可,共同构成网络配置基础

小结

这一章我们聊了rootfs是什么,网络在嵌入式系统里扮演什么角色,还有四个核心概念:IP地址、子网掩码、网关、DNS。

嗯,这些概念看起来简单,但实际配置时很容易出错。我建议你动手试试:拿一块开发板,手动配置这些参数,然后ping一下网关和外部IP,感受一下网络是怎么通的。

下一章我们会深入rootfs的网络配置文件,看看这些参数到底写在哪里、怎么写。到时候我会分享一些实际项目中的配置模板,保证实用。

可可精品资料库