Linux 2.6.32, busybox, 물리적 SD 장치 인식

Linux 2.6.32, busybox, 물리적 SD 장치 인식

두 개의 SD 카드 연결과 두 개의 USB 포트(USB 허브 역할도 함)가 있는 USB 카드 리더가 모두 동일한 장치에 있습니다. 저는 감독 없이 사용되는 임베디드 Linux 장치를 실행 중이며 카드 리더에 2개의 SD 카드를 사용하여 몇 시간 동안 수집된 데이터를 저장하려고 합니다. 각 카드는 특정 데이터를 보관하도록 설계되었으며 두 가지 데이터 유형을 혼합할 수 없습니다.

USB SCSI 장치(SD ​​카드 또는 USB 플래시 드라이브)가 마운트될 때 스크립트를 트리거하는 mdev의 기능을 사용하면 한 가지 예외를 제외하고 어느 디스크가 어느 디스크인지 식별할 수 있도록 USB 장치의 물리적 위치를 기록할 수 있습니다. 카드 리더는 리더에 있는 SD 카드 2개가 물리적으로 카드 리더의 포트 1에 있다고 보고합니다. 이는 (현재 지식으로는) 맞춤 작성 프로그램에서 데이터가 기록되는 물리적 카드를 식별할 수 없음을 의미합니다.

사용자가 시스템에 어떤 카드가 무엇인지 알려주기 위해 루프에 들어가도록 할 수는 없습니다(사용자는 두 개의 새 카드를 삽입하고 장치를 켜고 떠나기만 하면 됩니다). Busybox 호환 도구를 사용하여 어떤 파일 시스템이 어떤 물리적 디스크에 속하는지 확인하는 방법은 무엇입니까?

감사해요.

답변1

/sys/block이것을 찾는 곳입니다. 카드 리더가 연결되면 두 블록 장치가 모두 형식으로 나열됩니다 sd*. 여기서 *는 문자입니다. 이는 시스템에 물리적 scsi 장치가 추가되어 있지만 미디어에 액세스할 수 있는 방법이 없는 것과 같습니다(물론 핫 플러그 ​​시스템이 mdev를 통해 자동으로 마운트되는 포맷된 파티션이 있는 경우는 제외 /etc/mdev.conf).

/sys/block/sda(예를 들어)는 에 대한 심볼릭 링크입니다 /sys/devices/platform/fsl-ehci.0/usb2/2-1/2-1.1/2-1.1:1.0/host0/target0:0:0/0:0:0:1/block/sda.

이전 섹션 /host/target0:0:0은 내 USB 장치의 물리적 장치 트리 구성입니다. 카드 리더는 버스 2, 포트 1, 포트 1에 있습니다.

다음 부분은 /host/target0:0:0제가 잘 이해하지 못하는 추가 장치 매핑입니다. 그러나 마지막 숫자(해당 판독기의 장치에 대한)는 항상 한 포트 또는 다른 포트에 해당하는 0 또는 1입니다.

그래서 나는 이미 필요한 것을 갖고 있지만 누군가가 그 공백을 메워주고 후세를 위해 더 나은 설명을 제공할 수 있다면 좋을 것입니다.

관련 정보