嵌入式Linux启动时网络参数配置

明白了嵌入式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

启动信息如下图示:

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。