有关Linux ipv6模块加载失败的问题

有关Linux ipv6模块加载失败的问题

  同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载。
    

  主要检查内容:
   ipv6地址是否存在
    
ifconfig |grep inet6
     没有默认inet6地址
    
   ipv6模块是否存在
    
# modinfo -n ipv6
    /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.ko
    # modinfo -n ipv6_lib
    /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko
        
   系统是否加载IPv6相关模块
    
lsmod |grep ipv6
    # lsmod |grep ipv6
    ipv6_lib              341467  0
    只有ipv6_lib模块,没有主模块ipv6
    
    
从上面信息得知,ipv6模块是存在的,只是加载出现了问题,由此想到可能是配置导致的。


    首先检查模块的依赖关系是否正确:
    
# cat /lib/modules/`uname -r`/modules.dep |grep -w ipv6.ko:
    /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.ko: /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko
    没有问题
    
    其次检查modprobe配置,是否屏蔽了ipv6模块加载:
    
# cat /etc/modprobe.conf |grep -i ipv6
    alias sit0 ipv6
    
    最后检查了/etc/modprobe.d/目录下文件,发现一个50-ipv6.conf文件,内容如下:
    
# cat /etc/modprobe.d/50-ipv6.conf
    install ipv6 /bin/true
    
    
这句话是什么含义呢?通过modprobe.conf(5)文档,有如下内容:
    install modulename command...
      This  is the most powerful primitive: it tells modprobe to run your command instead of inserting the module in the kernel as normal.
      The command can be any shell command: this allows you to do any kind of complex processing you might wish.
      For example, if the module "fred" works better with the module "barney" already  installed (but  it  doesn‘t  depend  on  it, so modprobe won‘t automatically load it), you could say "install fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred", which would do what you wanted.
      Note the --ignore-install, which stops the second modprobe from running the same install command again. See also remove below.

You can also use install to make up modules which don‘t otherwise exist.
      For example: "install probe-ethernet /sbin/modprobe e100 || /sbin/modprobe  eepro100",  which
      will first try to load the e100 driver, and if it fails, then the eepro100 driver when you do "modprobe probe-ethernet".

If  you  use  the  string  "$CMDLINE_OPTS" in the command, it will be replaced by any options specified on the modprobe command line. This can be useful because users expect "modprobe fred opt=1" to pass the "opt=1" arg to the module, even if there‘s an install command in  the  configuration  file.  So  our  above  example  becomes "install fred /sbin/modprobe barney; /sbin/modprobe --ignore-install fred $CMDLINE_OPTS"

    
比较长,关键的第一句我们来解释一下:
    
This  is the most powerful primitive: it tells modprobe to run your command
    instead of inserting the module in the kernel as normal.
    这句话的意思是它让modprobe命令执行命令行里的command命令,而不是一般情况下去加载指定的内核模块。
    
    
该怎么理解这句话呢?我们通过两个命令的执行来说明:
    # modprobe -v -n ipv6
    insmod /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko
    install /bin/true

-n --dry-run --show 表明不做真正的插入模块的操作
    -v: 打印有关程序所做事情的信息
    所以上述输出表明modprobe只做了加载ipv6_lib.ko模块和install /bin/true的动作,
    而没有做加载ipv6.ko模块
    
    
    # modprobe --show-depends ipv6
    
insmod /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6_lib.ko
    install /bin/true

--show-depends 只列出模块依赖关系,以insmod开头;
    install命令也不做实际的加载操作,只列出要做的加载动作
    从以上信息可以看出,也不会做ipv6.ko模块加载。
    
        
   
去掉/bin/true之后,重新执行modprobe ipv6命令后检查模块加载情况:
    # modprobe -v ipv6
    # lsmod |grep ipv6
    ipv6                   12758  1
    ipv6_lib              341467  71 ipv6
    
    # ifconfig |grep inet6
      inet6 addr: fe80::9af5:37ff:fe00:9527/64 Scope:Link
      inet6 addr: fe80::9af5:37ff:fee3:3ac4/64 Scope:Link
      inet6 addr: ::1/128 Scope:Host
      
    综上,可以认为是50-ipv6.conf文件的配置导致了ipv6加载不完整。
      
    在网上搜到一篇禁用ipv6的博文,也有相关说明,读者可以参考一下。

  PS:

您的支持是对博主最大的鼓励??,感谢您的认真阅读。
   本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/smith9527/p/10197566.html

时间: 2024-10-10 06:53:11

有关Linux ipv6模块加载失败的问题的相关文章

KVM模块加载失败造成Openstack VM报错Error

今天我接到客户的联系电话,说是 Openstack Icehouse 创建的VM,其中一个VM无法连接上了.我查看Openstack Horizon界面,看VM状态,发现是ERROR.和同事初步判断是KVM模块没有加载产生的Openstack VM报错.排障过程如下: 1.sudo modprobe kvm_intel 开启服务器kvm模块支持. 2.lsmod |grep kvm 查看KVM模块加载状态. 3.ls /dev/kvm 查询KVM的硬件设备. 4.重启Openstack Iceh

DRBD模块加载失败

modprobe drbd [[email protected] ~]# modprobe drbdmodprobe: FATAL: Module drbd not found. 解决办法:一般是系统默认的内核并不支持此模块,所以要更新内核 查看内核版本:[[email protected] ~]# uname -r3.10.0-862.14.4.el7.x86_64 可以用 yum install kernel* 方式来更新. 如果想要时间可以只更新对应几个包: kernel-devel ke

Ubuntu 14.04 下启动 VirtualBox里面的win7 出现vboxdrv模块加载失败的情况

电脑型号:thinkpad x240 操作系统:ubuntu 14.04 内核版本:3.13.0-45-generic 升级vitrualbox后打开vitrualbox里面装的windows出现如下错误 搜索关键字: 1.vboxdrv: unknown symbol mcount (err 0) 2.VirtualBox Kerner driver not installed 3./etc/init.d/vboxdrv setup 我的问题是gcc 版本问题 gcc -v //查看gcc版本

使用FireBreath生成的.dll库出现“*.dll模块加载失败”

好不容易可以再FireBreath里面使用sip库eXosip. 在本地使用没有问题,但是在别的机子上面安装.dll库的时候就出现了问题: 我猜想,可能是和我加入的库有关系,之前没有加入其它的库的时候,是成功的. 于是,我把eXosip的里面2个动态库放进来,奇迹出现了 Windows下面对静态库和动态库的使用还不是很清楚...

regsvr32提示模块加载失败 请确保二进制

微软官方的一部分解释 https://support.microsoft.com/en-us/kb/249873 关于32位和64位的说明 http://csi-windows.com/blog/all/73-windows-64-bit/378-fixing-qregsvr32-the-module-failed-to-load-the-specified-module-could-not-be-foundq 缺少依赖 http://stackoverflow.com/questions/27

模块“XXX.dll”加载失败

具体问题:模块“XXX.dll”加载失败 请确保该二进制存储在指定的路径中,或者调试它以检查该二进制或相关的.DLL文件是否有问题  找不到指定的模块. 1.在安装C++软件的时候,有时候安装失败提示“请确保二进制储存在指定的路径中,或者调试他以检查该二进制或相关的DLL文件”,这个应该是自己的电脑没有安装VC运行库,可以去微软下载安装. 2.还有以下方法. 解决win7运行批处理出错不能注册dll等问题 引用: http://blog.csdn.net/nxeexn/article/detai

实现简单的 JS 模块加载器

实现简单的 JS 模块加载器 按需加载是前端性能优化的一个重要手段,按需加载的本质是从远程服务器加载一段JS代码(这里主要讨论JS,CSS或者其他资源大同小异),该JS代码就是一个模块的定义,如果您之前有去思考过按需加载的原理,那你可能已经知道按需加载需要依赖一个模块加载器.它可以加载所有的静态资源文件,比如: JS 脚本 CSS? 脚本 图片 资源 如果你了解 webpack,那您可以发现在 webpack 内部,它实现了一个模块加载器.模块加载器本身需要遵循一个规范,当然您可以自定义规范,大

Vs2013在Linux开发中的应用(22):模块加载

快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 当gdb检测到模块的加载时会输出: =library-loaded,id="/lib/ld-linux.so.2",target-name="/lib/ld-linux.so.2",host-name="/lib/ld-linux.so.2",symbols-loaded="0",thread-group="i1&q

图片加载失败模块的设计

当我们有图片资源加载失败的时候,我们可以利用另外一张图片替换加载失败的位置 此时可以使用到图片的error 事件来加载另外一张图片 具体代码如下 <img src='1.jpg'> window.addEventListener('error',function(){ }) 原文地址:https://www.cnblogs.com/qqfontofweb/p/11415462.html