免责声明:我不是 Linux 专家。我最多只能将自己的 Linux 能力描述为“及格”,这意味着我能够熟练使用命令行,但仍然严重依赖手册页/论坛来完成基本以外的任何工作。
我们有一款在 Ubuntu 桌面上运行的产品,除了一致性之外没有其他令人信服的理由,“官方”支持的版本是 10.04。
现在,我们必须处理的事情之一是通过串行/USB/RS422/以太网/802.11/等与大量疯狂的外部设备进行交互。Ubuntu 是一个不错的选择,因为它对客户来说设置简单,并且提供相当不错的驱动程序支持,这意味着大多数设备“都可以正常工作”。这些设备中有一个 USB 到串行转换器,带有 FTDI 芯片,使用 Linux FTDI 驱动程序。
最近,一位客户使用 USB 转串口转换器在 Ubuntu 10.04 上以无头设置的方式运行我们的软件。在此之前,一切都运行良好,尽管这是一个相对较新的安装,没有连接到互联网。在系统发生一次不幸的电源循环(没有正常关机)后,通常的 FTDI 驱动程序被“uhci_hcd”驱动程序取代。
通过浏览论坛和反复试验,我们发现卸载“britty”包并使用 modprobe(重新?)加载 ftdi_sio 和 usb_storage 模块后,一切都恢复正常。
因此这里实际上有两个问题:
1) 究竟是什么原因导致这样的事情发生?
2) 有谁能给我提供哪些资源/书籍/论坛,以便我进一步研究如何配置 Linux(最好是 ubuntu 10.04...? :) )系统,使其能够承受随机电源循环而不会损坏配置文件或发生其他任何事情?这几乎就是我需要知道我不知道什么的情况,以及一些可以查看以获取这些知识的良好资源。
答案1
可以通过在 modprobe.conf (man modprobe.conf) 中将其列入黑名单来防止这种特定的故障(加载不需要的模块)。
1) 安装 britty 包?对于没有遇到过类似问题的人来说,这是一个难题。有两种可能的情况:a) 模块加载顺序存在竞争条件,到目前为止您还算幸运。b) 有人在重启之间更改了某些内容。如果没有 tripwire 或类似工具来监视(重要)文件更改,很难甚至不可能知道更改了什么以及由谁更改。我打赌情况 b)。根据我的经验,Linux 是一个很好的可重复系统。它要么每次都有效,要么每次都无效,直到您修复它。
2) 我喜欢 Red Hat 手册。请访问http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/index.html尽情阅读吧。RHEL 和 Ubuntu 之间会有所不同,但这是一个很好的起点(免责声明:我经常使用 RHEL。我不使用 Ubuntu)。http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/4/html/Introduction_To_System_Administration/index.html可能是一本不错的读物。
不正常关机并不能保证文件系统上的数据处于合理状态。我建议使用 UPS 来保护服务器。