USB와 스캔 지연 속도를 늦추는 이유는 무엇입니까?

USB와 스캔 지연 속도를 늦추는 이유는 무엇입니까?

저는 genkernel로 컴파일하고 USB HDD에서 부팅한 linux-3.4.9를 실행하고 있습니다. 특히 modprobe 및 mdev 단계에서 genkernel 스크립트를 실행하는 동안 느린 시작 프로세스 때문에 약간 짜증이 납니다.

그래서 모듈을 로딩한 후 기기가 초기화될 때까지 기다리는 시간이 일정하게 정해져 있는 것 같습니다. 이에 대한 근본적인 이유가 있습니까? 특정 루트 장치를 사용할 수 있을 때까지 기다리지 않겠습니까? 아니면 상황을 완전히 잘못 이해하고 있습니까?

답변1

여기서 가장 먼저 고려해야 할 점은 USB로 부팅할 수 있다는 것은 PC의 BIOS가 USB 장치에서 부팅을 지원한다는 의미입니다. 이는 BIOS에 USB 프로토콜 스택이 포함된 펌웨어가 내장되어 있으며 범용 직렬 버스를 통해 USB HDD와 같은 대상 장치를 제어할 수 있음을 의미합니다. USB 호스트(부팅해야 하는 PC)와 USB 장치(USB HDD) 사이에 USB 핸드셰이크 프로토콜이 설정된 후 USB가 제공하는 제어 및 데이터 메커니즘이 추상화될 수 있으며 상위 계층 BIOS 시작 코드가 가능해집니다. 멍한. USB HDD를 내장 HDD라고 생각하세요. 즉, MBR(마스터 부트 레코드)을 얻으려면 "디스크 드라이브"의 첫 번째 섹터를 읽어야 합니다.

그러나 USB 초기화 방식의 일부 변경으로 인해 귀하와 같은 일부 문제가 시작됩니다. 이전에는 초기화 중 각 USB의 절전 시간이 100ms였습니다. 그러나 새 USB는 지연 메커니즘을 사용하여 향후 100밀리초 후에 다음 초기화를 예약합니다. USB 변경 사항이 내장된 커널의 경우 이를 통해 실행 스레드가 이러한 지연을 기다리지 않고 다른 작업을 수행할 수 있습니다. 그러나 향후 대기 시간 변경으로 인해 이 기능이 없는 커널은 부팅하는 데 더 오랜 시간이 걸립니다.

관련 정보