LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: abcbuzhiming

请教高人解释一下gentoo手册中配置网卡的这几步到底是为什么?

[复制链接]
发表于 2007-8-21 22:19:43 | 显示全部楼层
网卡能用和网卡参数能用是两回事.网卡能用是内核和模块的事,网卡参数是rc和init的事.
一句话:你设定了网卡参数,有两个地方可以调用
1.rc-upade add net.eth1 default 命令,随机启用.
不使用rc-upade add net.eth1 default命令,网卡可用,因为大多数情况下网卡模块随系统启动,但参数不起用,ifconfig 会找到网卡,但找不到网卡的ip地址.
2./etc/init.d/net.eth0 start 命令调用.
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:26:05 | 显示全部楼层
看看以下命令的输出:
rc-update show
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:28:29 | 显示全部楼层
Post by abcbuzhiming


我之所以如此问是我发现了一些奇怪的问题,那就是我的机器按照上面这一套做下来后,如果把网卡加入了开机启动,那么,哪怕你以后运行了
rc-update del net.eth1 default
把它从默认启动里删除,它仍然能开机启动,

你说的“把网卡加入了开机启动”是什么意思?
怎么加入开机启动的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 22:33:05 | 显示全部楼层
Post by 抽烟斗的狗
网卡能用和网卡参数能用是两回事.网卡能用是内核和模块的事,网卡参数是rc和init的事.
一句话:你设定了网卡参数,有两个地方可以调用
1.rc-upade add net.eth1 default 命令,随机启用.
不使用rc-upade add net.eth1 default命令,网卡可用,因为大多数情况下网卡模块随系统启动,但参数不起用,ifconfig 会找到网卡,但找不到网卡的ip地址.
2./etc/init.d/net.eth0 start 命令调用.


其实现在的根源在于:/etc/init.d/这个目录下记录的类似快捷方式一样的东西到底是什么,据说是启动脚本,这些文件我都打开看过,遗憾的是看不明白。

1.网卡模块随系统启动应该是他的硬件层面被驱动了,但是软件层面就未必了,我的理解是如果软件层面没有启动,ifconfig里就看到不到这个eth1,另外就是:网卡的IP地址等参数都记录在/etc/conf.d/net这个文件里,我的估计是如果这个文件已经记录了eth1的相关IP等参数,那么在硬件层面驱动的时候会自动加载,ifconfig就能看到eth1这个软界面,只有这样才解释的通,因为从启动记录里可以看到,很明显eth1不是在default组里启动的,rc-upade add net.eth1 default仅仅是把net.eth1启动加入到runlevel里,和把QQ快捷方式加到windows的开机程序启动没有区别,我前面也说了,如果以前rc-upade add net.eth1 default过了,即使后来运行了rc-upade del net.eth1 default,把net.eth1赶出runlevel的default组,重新启动后net.eth1仍然启动了,ifconfig仍然能看见网卡IP,很明显网卡被启动了……当然这需要懂行的人解释

2.现在最关键的问题是搞清楚一件事就是/etc/init.d/net.eth0 start这个命令到底启动了些什么,或者说/etc/init.d/net.eth0 stop到底停止了什么。
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:35:58 | 显示全部楼层
ln -s net.lo net.eth1    —— 这一步一般不需要,网卡驱动配好后一般自动出现/etc/init.d/net.eth0
还有,你是在哪里执行的上述命令?/etc/init.d还是/etc/runlevels/{boot,default}?
/etc/init.d中存放一些脚本,可以用于开机时执行,但这些脚本要链接到/etc/runlevels下开机时才会真正执行,
rc-update所做的就是这件事,添加/删除/etc/runlevels下的链接而已

redhat有/etc/rc.d/rc.{0,1,2,3,4,5,6}这几个目录,这是经典的启动目录排列方式,
gentoo用了自己的一套,只剩下/etc/runlevels/{boot,default,nonetwork,single}
好像新版ubuntu也用了它自己的一套启动方式
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:42:49 | 显示全部楼层
也许跟这里有关
/etc/conf.d/rc

# RC_NET_STRICT_CHECKING allows some flexibility with the 'net' service.
# The following values are allowed:
#  none  - The 'net' service is always considered up.
#  no    - This basically means that at least one net.* service besides net.lo
#          must be up.  This can be used by notebook users that have a wifi and
#          a static nic, and only wants one up at any given time to have the
#          'net' service seen as up.
#  lo    - This is the same as the 'no' option, but net.lo is also counted.
#          This should be useful to people that do not care about any specific
#          interface being up at boot.
#  yes   - For this ALL network interfaces MUST be up for the 'net' service to
#          be considered up.

RC_NET_STRICT_CHECKING="no"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-21 22:43:47 | 显示全部楼层
Post by tell
看看以下命令的输出:
rc-update show


明天我看看

Post by tell
你说的“把网卡加入了开机启动”是什么意思?
怎么加入开机启动的?


你看gentoo官方中文安装手册里讲“配置你的网络”那章就知道了,rc-upade add net.eth1 default,就是把net.eth1这个文件给添加到/etc/runlevels/default下,随系统启动而启动,而现在问题的焦点在于如果做过rc-upade add net.eth1 default这一步,那么将来即使rc-upade del net.eth1 default,net.eth1不存在/etc/runlevels/default下时,net.eth1仍然能在开机时启动,这一点尤其古怪
  1. 配置你的网络

  2. 在准备说“嘿,我们已经配置过网络”之前,你应该记得在开始安装Gentoo之初所设置的网络配置是仅仅为了安装而设置的。现在你所要设置的是Gentoo系统的永久网络配置。

  3. 注意: 更多关于网络配置的详细信息,包括网卡绑定、网桥、802.1Q VLANs和无线网络在内的高级配置会在Gentoo网络配置这一部分介绍.


  4. /etc/conf.d/net当中收集了所有的网络信息。尽管这个文件采用直接易懂的语法,如果你还是因为觉得不够直观而完全不知道如何手动进行网络配置的话,请不用担心,我们将一一解释。在/etc/conf.d/net.example中有一个详细注释过的例子,它涵盖了许多种类不同的配置。

  5. 系统默认使用DHCP。如果使用DHCP的话,你需要安装一个DHCP客户端。这个将在稍后的安装必要的系统工具部分介绍。但是不要忘记安装一个DHCP客户端。

  6. 如果你需要配置你的网络连接,不管是因为你是需要指定DHCP选项还是你根本不想采用DHCP,请使用你喜欢的编辑器(在这个例子中用的是nano)打开/etc/conf.d/net:

  7. 代码 7: 打开/etc/conf.d/net准备编辑

  8. # nano -w /etc/conf.d/net


  9. 你会看到以下的文件:

  10. 代码 8: 默认的/etc/conf.d/net

  11. # This blank configuration will automatically use DHCP for any net.*
  12. # scripts in /etc/init.d.  To create a more complete configuration,
  13. # please review /etc/conf.d/net.example and save your configuration
  14. # in /etc/conf.d/net (this file :]!).


  15. 为了输入你自己的IP地址,子网掩码和网关,你需要设置config_eth0和routes_eth0:

  16. 代码 9: 手动为eth0设置IP信息

  17. config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
  18. routes_eth0=( "default via 192.168.0.1" )


  19. 如果你使用DHCP并且想设定DHCP选项,请定义一下config_eth0和dhcp_eth0:

  20. 代码 10: 让eth0自动获得IP地址

  21. config_eth0=( "dhcp" )
  22. dhcp_eth0="nodns nontp nonis"


  23. 请阅读/etc/conf.d/net.example以得到所有选项的列表。

  24. 如果你有多个网络接口,那么重复之前对于config_eth1、config_eth2等的操作步骤。

  25. 现在可以保存配置并且退出,继续下面的安装和配置。

  26. 在启动时自动启用网络

  27. 为了在启动时自动激活网络接口,你必须添加这些到default运行级别。

  28. [color=red]代码 11: 添加net.eth0到默认的运行级别

  29. # rc-update add net.eth0 default


  30. 如果你有多个网络接口,你需要为他们创建合适的net.eth1、net.eth2等启动脚本。你可以用ln来做这个。

  31. 代码 12: 创建额外的启动脚本

  32. # cd /etc/init.d
  33. # ln -s net.lo net.eth1
  34. # rc-update add net.eth1 default
  35. [/color]
复制代码


就上面这段红色部分

其实现在想想,还有一个奇怪的地方,理论上,linux里的eth*仅仅是一个联网界面他可以不存在,也可以不启动,比如如果我在eth0上ppp拨号,我认为系统应该只显示ppp0,而不应该显示eth0(如果eth0没有被配置IP等设定并启动的话),然而现实是ppp0建立时必须先启动eth0,也就是说这个eth0本身既是一个虚拟的联网界面,同时也代表网卡的硬件界面,这个定义就很模糊了,当年我想了有一个星期才想明白:网卡硬件代号——联网界面代号之间的区别,现在又糊涂了……
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:49:03 | 显示全部楼层
我是怀疑你
rc-update add net.eth1 boot

那么
rc-upade del net.eth1 default
自然没用,
所以,贴下
rc-update show

还有你rc-upade写错了,我从你那段拷下来发现*_*
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:50:14 | 显示全部楼层
Post by abcbuzhiming
貌似我并没有启动udev,
不过有一点你倒是说对了,就是如果删除了etc/init.d/net.eth*,那么eth*就真的无法自动启动了……

我觉得最重要的是搞清楚gentoo的这种启动机制到底怎么工作的,否则有一天被黑客利用了怎么办?

你研究一下/etc/udev/rules.d吧。

还有就是看一下你启动runlerels中的脚本中depend() 段是否包括need net,这样net也会随着这个脚本启动的。
回复 支持 反对

使用道具 举报

发表于 2007-8-21 22:50:22 | 显示全部楼层
go to bed
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表