我有一个自定义的 buildroot 构建,其中包含用于 RPi 和 busybox 的简约内核作为 init 和 shell。在启动过程结束时,我启动自己的服务来尝试访问 USB 驱动器。然而此时USB驱动程序仍在初始化包括USB驱动器在内的USB设备。内核启动大约需要 4 秒,USB 设备识别还需要 4-5 秒。所以实际上我想知道如何在启动过程中自动安装 USB 驱动器,并且只有在这种情况下才启动我的服务。我还可以在启动服务之前挂载磁盘,但这里它也以某种方式知道 USB 磁盘是否已被识别并且 /dev/sda1 是否已创建。
答案1
如果您构建的内核inotify
支持您最好使用 inotify 来等待设备创建。如果没有,您可以将此代码放在 busybox init 系统启动服务之前的位置:
# Waiting for device creation
while true
do
test -e /dev/yournode
if [ $? -eq 0 ]; then
echo "Device created";
break;
else
echo "Waiting for device";
sleep 1;
fi
done