-
处理SpringBoot、MyBatisPlus和代码生成器整合中的内核对接口命名不一致问题的示例
资源介绍
10.7 处理内核对接口命名的不一致性
eth0、eth1 这类设备的名称是由内核指定的,内核是按照创建这些接口的顺序来命名的。
在开机的时候,被检测到的适配器通常都是按照一样的顺序被检测到的,所以每次都被 指
定为同一个名称。但是,对于热拔插的适配器情况就不是这样了。在不同情况下,它们可能
以任意的顺序被检测到,于是内核就给它们指定不同的名称。
因为这个关系,在一个网卡适配器是热拔插设备的系统中,使用 /etc/network/interfaces
给 eth0、eth1 这类接口定义逻辑接口和依靠缺省的映射关系都是不可能完全正常工作的。
要取代这个做法,你必须给逻辑接口设置一个唯一的名称,并使用下列两个方法中的一个 来
限制哪些逻辑接口会被指定给哪些是适配器。
一个方法是使用 nameif(在 net-tools 软件包中)工具或另外一个更灵活的 ifrename(在
ifrename 软件包中)工具,使内核按照适配器的属性来指定接口名称。使用这个命名方案
的话,物理接口的名称可以被用来推测出接口下面的适配器的名称。
另外一种方法是使用 ifup 映射机制。这种情况下就会根据将要被激活的物理接口所在的适
配器的某些属性来选择逻辑接口。
假设,你有两个网络适配器,分别在网络 net1 和 net2 中使用。
/usr/share/doc/ifupdown/examples/ 目录下面包含了一个映射脚本,能够根据适配器的媒
体访问控制地址(MAC 地址)来选择逻辑接口。首先安装脚本到适合的目录。
# install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \
/usr/local/sbin/
然后在 /etc/network/interfaces 中加入如下一段内容:
mapping eth0
script /usr/local/sbin/get-mac-address.sh
map 02:23:45:3C:45:3C net1
map 00:A3:03:63:26:93 net2
更多,更复杂的例子参阅 多阶段(Multi-stage)映射, 第 10.9 节。
不管采用那种方法,通常都是用 MAC 地址来识别适配器的。
10.8 启动(triggering)网络设置
我们已经知道了接口是如何设置和重新设置的。这些动作需要在适当的时候完成。
传统上,网络是在开机的时候由 /etc/rcS.d/S40networking 这个脚本设置的,而且极少重
新设置。其他需要网络的服务随后启动。在关机或者重启的时候,initscripts 按照相反的
循序执行。
然而现在,GNU 和 Linux 正朝着支持动态硬件更换和突发事件的方向发展。首先是为可替
换的 PCMCIA 卡提供支持。目前在添加 hotplug 机制后,很多外设都能在电脑运行的时候
进行替换。这也包括了网络硬件。注意!当你拔插可热拔插设备的时候,涉及到此硬件的服
务需要在插入之后启动或删除之 前关闭。这就意味着这类服务需要从 System V init 系统
www.linuxidc.com
www.linuxidc.com
- 上一篇: 正版IDU-2850UG-8G驱动
- 下一篇: win7内码输入法 一键安装