내 서비스를 시작하기 위해 부팅 중에 USB 드라이브가 인식/마운트될 때까지 어떻게 기다릴 수 있나요?

내 서비스를 시작하기 위해 부팅 중에 USB 드라이브가 인식/마운트될 때까지 어떻게 기다릴 수 있나요?

RPi용 최소 커널과 비지박스를 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

관련 정보