2017-05-05 20 views

답변

2

램 디스크가 작동하는 방식이 아닙니다.

처음에는 커널이 램 디스크와 함께 작동하지만 다른 방법으로는 작동하지 않습니다. 지금까지 어떤 플랫폼에서든 본 커널 - 램 디스크 쌍에 대해서도 마찬가지입니다.

또한, 아이폰 OS 램 디스크로부터 바이너리 즉, 모든 유저 랜드 바이너리이다 : 그들은

동적 링커 ( /usr/lib/dyld) 및 시스템 라이브러리에 의존
  • .
  • 그들은 시스템 호출에 의존합니다.
  • 그들은 파일 시스템의 가용성에 의존합니다.
  • 최소 권한의 프로세서 모드 인 EL0 ("userland")에서 실행됩니다.

    • 커널은 EL1에서 실행 : 그 중 하나가 커널을로드하고 싶다면

    은, 그 문제의 수있을 것입니다. EL0에서 실행하면 EL1에서 아무 것도 액세스 할 수 없으므로 커널을 배치 할 수 없습니다.

  • 링크는, 라이브러리와 시스템 호출 EL1 매우 다르게 작동 :
    • 시스템 라이브러리 EL1에서 사용할 수 없습니다. 나는 으로 만들 수 있다고 가정하지만 주어진 시간에 EL1에서 실행되는 하나의 바이너리 만있을 수 있기 때문에 엄청난 잔인한 소리가 들립니다.
    • iOS (KXLD)에는 EL1 용 링커가 있지만 iOS 커널의 일부이며 커널 확장을 커널에 연결하기 위해 설계되었습니다. 사용자 영역 바이너리에서는 작동하지 않습니다.
    • 기술적으로 EL1을 대상으로 svc 명령어를 사용하여 예외를 생성 할 수 있지만 자신을 호출하여 처리합니다. 즉, 커널을로드 할 때까지 은 커널이입니다. Userland 바이너리는 준비되지 않았습니다.

내가 당신의 이미지를 표현하려고 모르겠어요, 말했다. 가장 좋은 추측은 표시된 램 디스크가 이고 커널에이 전달되었다는 것을 의미합니다. 그러나 어떤 경우에도 iBoot는 커널을로드하고 설정하는 것입니다.

+0

그러나 iBEC가 복구 모드 부팅 (업데이트) 중에 커널을로드한다고 들었습니다. –

+0

틀린 것은 아니지만 iBEC과 iBoot 또는 iBSS와 iLLB 간의 이진 비교를 수행합니다 (32 비트 iOS 10 IPSW에서 암호화되지 않은 암호를 얻을 수 있습니다). 유일한 차이점은 식별자 ('ibec'와' ibot' 또는'ibss'와'illb'), 나머지는 100 % 동일합니다. 그래서 iBEC은 iBoot입니다. – Siguza