【问题标题】:Where is dahdi_cfg called from on system boot?系统启动时从哪里调用 dahdi_cfg?
【发布时间】:2020-03-23 21:24:43
【问题描述】:

我通过这样的模块助手在 Debian stable (Buster) 上安装 DAHDI:

apt-get install dahdi dahdi-source module-assistant
module-assistant auto-install dahdi

我还创建了/etc/dahdi/system.conf/etc/dahdi/assigned-spans.conf

我不知道在系统启动期间谁调用了dahdi_cfg。我可以确认它确实被某些东西调用,因为如果我删除 dahdi_cfg 并重新启动,echodahdi_echocan_oslec 模块将在 lsmod 中丢失(回声消除在 @987654329 中指定@)。

我找到了/usr/share/dahdi/span_config.d/10-dahdi-cfg,但我不知道什么会运行它。

那么,在系统启动期间,dahdi_cfg 是从哪里调用的?

更新

我发现如果缺少system.conf,无论如何都会加载回声消除模块。强制性条件是:

  • 存在dahdi_cfg
  • /etc/dahdi/assigned-spans.conf

更新2

还有一个观察:如果/etc/dahdi/assigned-spans.conf 被删除,options dahdi auto_assign_spans=1 被添加到 /etc/modprobe.d/dahdi.conf,回声消除模块不会被加载(system.conf 仍然被删除)。所以看来auto_assign_spans=1 不起作用。


有人可以回答我的答案中的新问题吗?

【问题讨论】:

    标签: dahdi


    【解决方案1】:

    首先,我们来处理auto_assign_spans=1

    删除auto_assign_spans=1。结果:/proc/dahdi/ 为空。 使用auto_assign_spans=1。结果:/proc/dahdi/ 不为空。

    所以,这是检查auto_assign_spans=1效果的方法。

    这是一个例子:

    Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 
    
           1 WCTDM/0/0 RED 
           2 WCTDM/0/1 
           3 WCTDM/0/2 
           4 WCTDM/0/3 
    

    现在运行dahdi_genconf system 并再次检查/proc/dahdi/1

    Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 
    
       1 WCTDM/0/0 FXSKS RED 
       2 WCTDM/0/1 FXOKS 
       3 WCTDM/0/2 FXOKS 
       4 WCTDM/0/3 FXOKS 
    

    我们已经看到 dahdi_genconf 与跨度混淆。 这是一个错误吗?

    然后运行dahdi_cfg 并再次检查/proc/dahdi/1

    Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 
    
       1 WCTDM/0/0 FXSKS RED (EC: OSLEC - INACTIVE) 
       2 WCTDM/0/1 FXOKS (EC: OSLEC - INACTIVE) 
       3 WCTDM/0/2 FXOKS (EC: OSLEC - INACTIVE) 
       4 WCTDM/0/3 FXOKS (EC: OSLEC - INACTIVE) 
    

    现在我们看到一切都已正确配置。


    接下来,dahdi_handle_device 被 udev 调用。它什么都不做(因为使用了auto_assign_spans=1)。

    然后 dahdi_span_config 被 udev 调用。出于同样的原因,它什么也不做。

    这是有趣的部分:如果使用auto_assign_spans=1,则不会调用dahdi_cfg这是一个错误吗?

    ------------------

    相反,如果不使用auto_assign_spans=1,则dahdi_cfg会被dahdi_span_config调用。

    这有点令人困惑。如果使用auto_assign_spans=1,为什么禁止运行dahdi_cfg?如果我们只有一张卡,这是完全可以接受的。 auto_assign_spans=1 甚至记录在 dahdi-tools README 中作为这种场景的用例:

    通常(在模块中使用 auto_assign_spans=1 dahdi,这是默认设置),当设备被发现并加载时, 它向 DAHDI 核心注册,它的 span 自动变为 可用的。但是,如果您有不止一台设备,您可能会 有兴趣为他们设置明确的跨度和频道编号。

    手动将dahdi_cfg 添加到dahdi_span_config 是否安全?

    顺便说一句,system.conf 甚至不需要创建 - 如果它不存在,它会动态生成,但同样,只有在不使用 auto_assign_spans=1 时才会生成。 如果这个缺陷以某种方式得到纠正,唯一需要配置 DAHDI 的就是

    echo options dahdi auto_assign_spans=1 >/etc/modprobe.d/dahdi.conf
    

    【讨论】:

      【解决方案2】:

      /lib/udev/rules.d/60-dahdi.rules 使用以下补丁:

      +SUBSYSTEM=="dahdi_spans", RUN+="/usr/sbin/dahdi_cfg"
       LABEL="dahdi_add_end"
      

      【讨论】:

        猜你喜欢
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-13
        • 2019-04-06
        • 2011-09-24
        • 2014-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多