부팅하는 동안 CPU를 보호 모드로 전환하는 GRUB인지 아니면 부팅하는 Linux 커널인지 묻고 싶습니다. 또한 저는 커널 자체 (vmlinuz)가 ELF인가 아니면 일반적인 바이너리 형식인지 묻고 싶습니다. 감사.GRUB이 보호 모드로 전환합니까?
답변
http://www.moses.uklinux.net/patches/lki-1.html에 따르면 리눅스 커널은 ELF 바이너리입니다. 나는 그것이 부트 로더가 아닌 보호 모드로 전환하는 리눅스라는 것을 확신한다. 이 페이지는 동의합니다 http://oss.sgi.com/LDP/HOWTO/Kernel-HOWTO/linux_boot_process.html
GRUB 이는 보호 모드에서 당신을 드롭 않습니다.
은 GRUB Multiboot Specification (version 0.6.96) Section 3.2이
'CR0'가
비트 (31) (PG)를 지워야합니다 당신을 알려줍니다. 비트 0 (PE)을 설정해야합니다. 다른 비트는 모두 정의되지 않습니다.
그리고 CR0 Register mapping 시스템 이 보호 모드에 있어야 함을 알려줍니다. 리눅스 멀티 부팅 커널 아니고, PM의 전환에 대한 몇 가지 부트 로더에 의존하지 않는
, 그것은 Linux Boot Protocol 다음과 같습니다. 그러나 리눅스는 보호 모드 자체를 전환 않으며, 부트 로더에 의존하지 않는 체크
: 다음 다음 CR0
물건을 수행 protected_mode_jump()
호출 할 때이 go_to_protected_mode();
를 호출 여기 http://lxr.linux.no/#linux+v2.6.39/arch/x86/boot/main.c
이
(비트 0으로 설정)는 (다른 비트는 페이징되지 않습니다 것을 말한다)
편집
내가 알아낼 수있는 것은 GRUB can detect linux boot protocol (GRUB2 및 레거시도 있어야 함)이며 메모리에 Linux를로드하지만 은 보호 모드로 전환하지 않습니다. 이 링크를 보시려면 http://www.gnu.org/software/grub/manual/grub.html#GNU_002fLinux과이 링크의 16 단원을 참조하십시오.
정답은 +1입니다. 그의 질문에 "linux"라는 태그가 붙어 있기 때문에, 첫 번째 라인을 "다른 운영 체제에서는 GRUB이 보호 모드에서 빠져 나오지만 리눅스에서는 그렇지 못하다"(또는 유사하게) 것으로 다시 작성할 것을 고려할 수 있습니다. – Nemo
실제로 나는 위의 라인을 지키기 위해 그것에 대해 연구하고 있는데, 정확히 어떻게되는지, 그리고 약간의 혼란이 있습니다. 그러나 리눅스가 부팅 될 때 리눅스가 전환하는 것은 혼란이 아닙니다. 다른 멀티 부트 호환 커널의 경우 grub이 전환됩니다. – phoxis
충분합니다. 필자는 한때이 코드를 패치해야했기 때문에 Linux는 리얼 모드에서 시작한다고 확신합니다. 그럼에도 불구하고 완전한 대답을 얻었을 때, 나는 리눅스에 대한 답으로 열어야한다고 생각한다. – Nemo
- 1. Vista의 보호 모드로 파이팅
- 2. 부트 로더 - 프로세서를 보호 모드로 전환
- 3. XQuery에서 문자열을 어떻게 전환합니까?
- 4. AASM : 어떤 상태에서 전환합니까?
- 5. 인터프리터는 범위를 어떻게 전환합니까?
- 6. 내비게이션 컨트롤러를 어떻게 전환합니까?
- 7. DropDownList가 스페인어에서 영어로 전환합니까?
- 8. 어떻게 전환합니까 : gt
- 9. jQuery는 CSS를 전환합니까?
- 10. 기존 활동을 어떻게 전환합니까?
- 11. Linux 2.6에서 보호 모드를 실제 모드로 전환하는 방법은 무엇입니까?
- 12. 분리 된 객체에 대해 기본 낙관적 잠금을 최대 절전 모드로 전환합니까?
- 13. jQuery 스타일을 어떻게 동적으로 전환합니까?
- 14. asp.net mvc에서 어떻게 masterpage를보기에서 전환합니까?
- 15. Emacs에서 다른 버퍼로 어떻게 전환합니까?
- 16. 리얼 모드로 들어가고 리얼 모드로 들어가기 (저수준 어셈블리 언어 프로그래밍)
- 17. 자바 스크립트에서 iframe을 최대화하거나 최소화하려면 어떻게 전환합니까?
- 18. jsFiddle JavaScript 및 CSS 패널을 전환합니까?
- 19. JSF에서 backing bean 객체를 어떻게 전환합니까?
- 20. 프록시 인증을 사용하려면이 프록시를 어떻게 전환합니까?
- 21. 어떻게 기본 Python 버전간에 동적으로 전환합니까?
- 22. Intellij의 다른 Subversion 분기로 어떻게 전환합니까?
- 23. Silverlight 응용 프로그램의 "페이지"간에 어떻게 전환합니까?
- 24. iPhone이 자동으로 기존 3G 연결을 WiFi로 전환합니까?
- 25. ApplicationController에서 레일즈 애플리케이션의 데이터베이스를 자동으로 전환합니까?
- 26. 보호 된 정적 멤버 변수
- 27. 보호 카운터보기는
- 28. 암호 보호
- 29. 페이지 보호
- 30. csrf 보호
grub legacy 또는 grub2에 대해 묻고 있습니까? –
두 버전의 grub에 관심이 있습니다. – mnc
Grub과 LILO의 두 버전 모두 귀하의 질문과 똑같이 작동하기 때문에 (부팅하는 커널이 동일하기 때문에) 추측하는 것이 안전하다고 생각합니다. –