배포판(운영 체제 전반에 걸쳐)과 광학 미디어 드라이브 제조업체/모델 전반에서 이러한 동작을 본 적이 있습니다. CD, DVD 및/또는 Blu-ray 드라이브와 마찬가지로 트레이가 열려 있는 동안 이 작업을 시도하면 트레이가 open()
/dev/sr0
닫히고 종료가 완료될 때까지 통화가 open()
차단됩니다 . 트레이가 완전히 닫히면 드라이브는 "인식 중" 상태로 전환되어 드라이브가 그 안에 있는 미디어 유형(CD, DVD, Blu-ray 등이 있는지 여부, 어떤 레이저를 포함해야 하는지)을 확인하려고 시도합니다. 사용), 이 작업은 일반적으로 몇 초 정도 소요되며, 이 시간 동안 open()
장치에 대한 모든 호출(처음에 트레이를 닫게 한 호출 포함)은 미디어 없음 오류와 함께 실패합니다.
또 다른 방법:
사용자는 CD 트레이를 열고 디스크를 삽입합니다.
일부 명령을 실행하면 읽기 또는 쓰기를 위해 /dev/sr0이 열립니다(예:
mount
,dd
등dvdbackup
).CD 트레이가 자동으로 닫히고 트레이가 완전히 닫힐 때까지 명령이 차단됩니다.
- 트레이가 완전히 닫히면 명령은 미디어가 없다고 보고하고 종료됩니다. 드라이브가 새로 로드된 미디어를 인식하기 시작합니다.
- 사용자는 식별 단계가 완료되기 전에 명령을 다시 실행하려고 시도합니다(일부 "미디어 있음" 플래그는 이 시간 동안 설정되지 않은 것으로 보입니다). 동일한 "미디어 없음" 오류로 인해 명령이 즉시 실패합니다.
- 몇 초 후에 드라이브는 미디어를 읽을 준비가 됩니다.
- 사용자가 명령을 세 번째로 실행합니다. 이번에는 명령이 성공했습니다.
무슨 일이 일어나고 있는지에 대한 나의 이론(이것은 단지 이론일 뿐입니다):
- 위의 2단계에서 Linux는 드라이브에 요청합니다. 드라이브는 트레이가 열려 있는 것을 확인하고 닫습니다.
- 트레이가 닫히고 드라이브는 인식 단계에 진입했음을 운영 체제에 보고합니다. 아마도 "사용 중" 플래그를 설정하고 "미디어 있음"을 지우거나 무엇을 할 것인지를 알 수 있습니다.
- Linux는 "Media Present" 플래그가 지워진 것을 확인하고 즉시 애플리케이션에 아무 관련이 없음을 보고합니다.
내 첫 번째 질문은 왜 이런 일이 발생합니까? Linux가 바쁜 플래그를 확인하지 않는 이유는 무엇입니까? Windows에서는 이 작업을 수행합니다(또는 적어도 그렇게 보입니다. 일부 버전에서는 이 인식 단계에서 커서 옆에 CD 아이콘이 나타납니다). 두 번째 질문은 이 문제를 해결할 수 있는 방법이 있습니까?입니다. 커널을 완전히 우회하지 않고도 DVD 드라이브가 인식 단계인지 아니면 실제로 미디어가 없는지 알 수 있는 방법이 있습니까?