我一直在尝试 g_mass_storage 内核模块。我首先尝试将其放入 /etc/modules 中并将选项放入/etc/modprobe.d/file.conf
这有效,但是当我将设备连接到计算机时,大容量文件存储是只读的 - 这不是我想要的。
我推断这是因为当模块加载时,根文件系统被安装为只读 - 而不是读写。
这是一个问题,因为内核驱动程序尝试为其后备存储获取读写文件句柄,如果它无法协商此 rw 句柄,它将回退到只读。
我能想到的唯一解决方案是将内核模块的加载移到启动顺序的后面。
我使用 modprobe 将模块初始化移动到 /etc/rc.local,这对于读取和写入都有效 - 但在其中加载模块感觉有点麻烦。
是否有推荐的位置来加载需要对文件进行 rw 访问的内核模块?
答案1
对此的一个[可能并不完美]的解决方案是挂钩“systemd-remount-fs.service”systemd 服务,该服务将文件系统重新挂载为读写。
这意味着该模块将尽早加载,同时在文件系统变为可读写后仍会加载。
我的示例 systemd 配置文件如下:
[Unit]
Description=Starts kernel modules for USB OTG
After=systemd-remount-fs.service
DefaultDependencies=false
[Service]
Type=simple
ExecStart=/home/pi/programs/startmod.sh
WorkingDirectory=/home/pi/programs/
[Install]
WantedBy=local-fs.target
这是可行的,虽然有点笨拙。