如何跟上不断变化的块设备,而无需卸载并重新安装?

如何跟上不断变化的块设备,而无需卸载并重新安装?

因此,我在微型系统(BeagleBone Black)上运行 Arch。在此板上,我使用 g_mass_storage 内核模块将 SD 卡(/dev/mmcblk1)通过 USB 传输到主机。这运行得非常好,我对这个假 USB 驱动器所做的任何更改都会立即显示在块设备文件中。

问题在于我想用这个块设备做什么。我想把它以只读方式挂载到 Nginx 服务器的文档根目录。在大多数情况下,这可以正常工作,而且我对 USB 驱动器所做的任何更改似乎都可以在服务器根目录中正常显示。 然而,这些更改需要先卸载并重新安装块设备,然后才能显示出来。理想情况下,只要我对 USB 驱动器进行更改,它就会显示在安装点上,但我认为这会很复杂。

是否有任何简单的方法可以以 Linux 期望它不断变化的方式来挂载块设备,类似于 SSH 和 FTP 等网络挂载对外部变化的反应?

答案1

一些想法 -

  1. 您是否真的需要卸载并重新安装才能使更改显示出来?通常,您可以使用语法 mount /dev/resource -o remount,ro 和 mount/dev/resource -o remount,rw 来将设备重新安装为只读或读写。

  2. 我不明白您要做什么的具体细节,但听起来答案可能在于“udev”。在大多数版本的 Linux 中,都有一组规则(在 Ubuntu 12.04 中为 /etvc/udev/rules.d - 我希望在许多其他发行版中也有类似的东西),这些规则将设备和内核事件映射到您可以对其采取行动的事物上。(例如,我曾经检测外部 USB 驱动器何时插入并运行脚本。为了做到这一点,您需要计算出特定于块设备的属性(运行 udevadm info -a -p $(udedm info -q path -n /dev/sdX),然后使用这些属性构建规则,以便在检测到更改时制定操作。

    使用 UDEV 并不难,但要让它正常工作却相当棘手。

相关内容