【问题标题】:Kernel Module Upgrade with minmal downtime and no reboot内核模块升级,停机时间最短且无需重启
【发布时间】:2014-12-02 17:26:02
【问题描述】:

我有一个动态加载的字符驱动模块,说主要编号 X,它读取串行端口流量,然后应用程序使用带有主要 X 的 /dev/ 节点条目处理串行端口流量。

我想更新驱动模块,以便新模块应该获取相同的主编号 X,并使用与主 X 相同的 /dev 节点条目开始处理相同的串行端口。

在新模块加载成功并开始接管旧模块处理工作之前,不允许使用rmmod卸载旧驱动模块。

不应该重新启动,升级到新模块将使旧驱动程序模块的停机时间最短。

应该遵循什么方法?

【问题讨论】:

    标签: linux linux-kernel kernel character linux-device-driver


    【解决方案1】:

    我会查看设备驱动程序框架并使用元总线、设备和驱动程序架构来注册您的驱动程序,从而在串行驱动程序之上创建一个虚拟驱动程序。

    您的应用程序向虚拟驱动程序注册。

    您为虚拟驱动程序实现一个逻辑以接受新的真实驱动程序的注册。

    【讨论】:

      【解决方案2】:

      基本上,使用 modprobe 卸载他的 mod,在 /lib/modules/YourKernel/ 中添加/更新 mod,使用 modprobe 重新加载 mod。记得使用当前版本的内核头编译模组!

      【讨论】:

        猜你喜欢
        • 2014-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多