明白了嵌入式Linux启动时网络参数配置的流程,就会对网络这一部分了然于胸,以后出现网络不通的情况,就有了解决问题的思路。
1、网络参数配置的入口:
/etc/init.d/rcS,如下两行
# 配置换回lo地址 /sbin/ifconfig lo 127.0.0.1 # 配置以太网eth0地址 /etc/init.d/ifconfig-eth0
2、进入ifconfig-eth0文件:
#!/bin/sh echo -n Try to bring eth0 interface up......>/dev/ttySAC0 # 检查/etc/目录下是否存在eth0-setting文件,存在的话执行if语句 if [ -f /etc/eth0-setting ] ; then # 读取eth0-setting文件,从而获取IP、Mask、Gateway、DNS、MAC等变量的值 source /etc/eth0-setting # 判断文件/etc/mtab中是否存在从NFS启动的设置 if grep -q " / nfs " /etc/mtab ; then echo -n NFS root ... > /dev/ttySAC0 else # 不是从NFS驱动,配置ip、mask等网络参数 ifconfig eth0 down ifconfig eth0 hw ether $MAC ifconfig eth0 $IP netmask $Mask up route add default gw $Gateway fi # 获取DNS的值并写到文件/etc/resolv.conf中 echo nameserver $DNS > /etc/resolv.conf else # /etc/目录下不存在eth0-setting文件,那么手动配置网络参数 if grep -q " / nfs " /etc/mtab ; then echo -n NFS root ... > /dev/ttySAC0 else /sbin/ifconfig eth0 192.168.1.230 netmask 255.255.255.0 up fi fi echo Done > /dev/ttySAC0
通过以上shell代码,至少获知一下信息:
1、如何设置是从NFS启动还是正常启动
2、在哪个文件里更改IP等网络参数
3、DNS的由来及配置。以后再出现ping通IP却ping不通域名时,就知道在哪里修改参数
以上提到的/etc/eth0-setting文件,进行了一些变量的设置:
IP=192.168.1.230
Mask=255.255.255.0
Gateway=192.168.1.1
DNS=192.168.1.1
MAC=08:90:90:90:90:90
3、自动获取IP:
以上,针对的是配置固定IP等网络参数,那么如何实现自动分配IP等?
#!/bin/sh echo -n Try to bring eth0 interface up......>/dev/ttySAC0 if grep -q "^/dev/root / nfs " /etc/mtab ; then echo -n NFS root ... > /dev/ttySAC0 else udhcpc -i eth0 fi echo Done > /dev/ttySAC0
启动信息如下图示:
时间: 2024-11-14 23:03:16