You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器运行OWFS出现Segmentation fault段错误问题求助

排查思路与解决方案

一、先修正已知配置错误

  1. 内核模块黑名单配置错误
    你在Dockerfile中将ds2490黑名单配置写入容器的/etc/modeprobe.d/,存在两个问题:一是路径拼写错误,正确路径为/etc/modprobe.d/;二是内核模块黑名单仅对宿主机生效,容器共享宿主机内核,该配置放到容器内无任何作用。请直接将ds2490配置文件写入宿主机的/etc/modprobe.d/目录,执行rmmod ds2490 ds9490r wire或重启宿主机确认相关内核模块已卸载。
  2. 启动脚本语法错误
    你的docker_entrypoint.sh内容存在笔误,正确内容应为:
#!/bin/bash
owfs -C -uall -m /mnt/1wire --allow_other
  1. 缺少FUSE设备映射
    OWFS依赖FUSE文件系统实现挂载,你当前仅映射了USB设备,未映射FUSE设备,需要在docker-compose.yml中补充配置:
version: "3"
services:
  onewire_parser:
    container_name: 'onewire'
    build: .
    volumes:
      - /dev/bus/usb:/dev/bus/usb
      - /dev/fuse:/dev/fuse
    privileged: true
    security_opt:
      - apparmor:unconfined
    stdin_open: true
    tty: true
    restart: unless-stopped

二、基础环境验证

  • 宿主机先执行modprobe fuse确认FUSE内核模块已正常加载
  • 容器启动后进入容器执行lsusb,确认可以识别到DS9490系列1-wire适配器
  • 确认owfs参数无重复冲突:你已经在owfs.conf中配置了usb=all、mountpoint=/mnt/1wire、allow_other,可以直接执行owfs启动,无需额外传参,避免参数冲突触发异常

三、段错误调试方法

如果修正上述配置后仍出现段错误,可通过gdb定位崩溃原因:

  1. 在Dockerfile中添加gdb安装命令:RUN apt install gdb -y
  2. 进入容器执行调试命令:
    gdb --args owfs -C -uall -m /mnt/1wire --allow_other
    
  3. gdb交互界面输入r运行程序,崩溃后输入bt打印栈回溯,即可定位到具体崩溃的代码位置

四、兼容性问题修复

Debian Buster源内置的OWFS版本存在已知的USB设备访问段错误bug,若上述操作无效,可替换基础镜像为ubuntu:20.04,或自行编译最新版OWFS安装使用。

内容的提问来源于stack exchange,提问作者nopact

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:00