从modprobe.conf的man手册中描述的是:
This allows you to give alternate names for a module
这种机制常常会使人想的一种使用方式: 把复杂的, 长的, 不人性化的module名alia到简单的, 短的, 容易记的module名.但是modprobe.conf中会出现相反的:
alias sound-service-0-1 snd-seq-oss
alias char-major-108 ppp_generic
alias pnp:dPNPb02f analog
其实, 上面的例子中, 我不觉得alia名比module名好记多少
但在实现应用中, 这个alias就有相当重要的作用.
/usr/src/linux/socket.c 文件中的一段代码:
#ifdef CONFIG_MODULES
/* Attempt to load a protocol module if the find failed.
*
* 12/09/1996 Marcin: But! this makes REALLY only sense, if the user
* requested real, full-featured networking support upon configuration.
* Otherwise module support will break!
*/
if (net_families[family] == NULL)
request_module("net-pf-%d", family);
#endif
"net-pf-%d"就是网络协议的alia名. 一个module判断需求的另一个module, 是根据kernel space中是否某一变量:
jessinio@niolaptop /usr/src/linux $ cat /proc/kallsyms |grep net_families
c09270e0 d net_families
* 至少这个变量是否被module的初始化函数去声明. 暂不理会.
可以从上面的使用方式去理解module的alia的作用: 为module定义一个不变的名字
怎么解理呢?
/usr/src/linux/socket.c的代码中, 使用了"net-pf-%d"字符串, 如果ipv4的module名因为需求变化了. 这就会影响到socket.c的使用! 当alia的存在可以很方便解决这种问题
其实就与NSS机制(配置文件为nsswitch.conf)是一样道理的.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.