ROM에있는 부트 로더와 MBR에있는 부트 로더 사이의 충돌은 아마도 부트 로더 가 코드를로드하는 데 최소한의 코드를 사용하여 컴퓨터가 유용한 것을 수행하도록하는 코드를 작성하는 데 기인 할 수 있습니다. 다단계 부팅 상태.
따라서 시작 상태는 프로그래밍 가능한 장치 인 컴퓨터가 있어야하지만 소프트웨어가로드되어 있지 않으므로 실행할 소프트웨어를로드하는 방법을 모릅니다. (따라서 부트 스트랩에서 부팅 을 시작하십시오 ).
역사적 으로이 문제에 대한 몇 가지 다른 해결책이 있었지만 요즘 우리는 ROM의 코드 (대부분 EEPROM 일 가능성이 높습니다)로 시작합니다.이 코드는 다른 장치를보고 그것을 찾을 때까지 차례로 시도하기에 충분합니다. 부팅 가능.
(따라서 OS 설치 프로그램 디스크를 하드 드라이브에 넣고 다른 방법으로 BIOS를 넣으면 많은 시스템이 CD 또는 DVD로 부팅하는 것입니다. BIOS [ROM의 코드, 우리가 이야기하는 코드 및 기타 낮은 시작하기 시작하는 수준의 항목]은 CD / DVD 드라이브를 먼저 찾은 다음 하드 드라이브가없는 경우 하드 드라이브를 찾도록 설정되어 있으며, 수동으로 요청하지 않는 한 트위 커는 종종 CD / DVD 드라이브를 무시하도록 설정합니다. 드라이브에 남아있는 부팅 할 수없는 디스크를 회전시키는 데 시간을 낭비하지 않습니다).
ROM에이 코드가되고 때때로 불리는 부트 로더 .
어떤 드라이브를보아야하는지 알고 나면 기본 파티션에 대한 정보가 들어있는 MBR을 살펴 봅니다. 나중에 / 또는 / boot 또는 C : / (Windows 시스템에서)를 보지 못한 경우 디스크의 어떤 부분이 어떤 파티션인지 알고, 각 파티션이 어떻게 마운트되었는지는 신경 쓰지 않습니까? -실행할 추가 명령이있는 코드 (우연히 이것은 Windows와 같은 일부 OS가 기본 파티션에만 설치할 수 있고 해당 파티션의 세부 정보가 MBR에 있으며 부트 로더가 읽은 유일한 파티션 정보이며 EBR을로드하지 않는 이유를 설명합니다 해당 파티션이 아직 존재하지 않는 경우 논리 파티션에 대해 학습하십시오.
실행 코드 것이되고 또한 불리는 부트 로더 . 우리가 이것과 다음에 오는 것을 구별 할 때는 기본 부트 로더 라고합니다 (자체 BIOS를 만들지 않으면 제어 할 때 ROM 비트를 무시합니다).
이 코드는 약 400 바이트에 불과하므로 크기가 매우 작으므로 실제 작업을 수행하려면 더 많은 코드를로드 하므로이 제약 조건을 처리 할 필요가 없으므로 더 커질 수 있습니다.
이 코드는,되고 또한 A와 알려진 부트 로더 . 우리가 이것과 이전에 나온 것을 구별하려고 할 때이를 보조 부트 로더 라고합니다 .
이 코드는 아마도 프로세스의 마지막 단계 일 수 있습니다. OS가 하나뿐이거나 시스템의 모든 OS가 호환 가능한 부트 로더를 사용하는 경우 (예 : GRUB를 사용하는 두 개의 Linux 설치, 마지막으로 업데이트 된 GRUB 중 어느 것이 든 부팅 할 수 있음) 커널에 메뉴 (원하는 경우)로드를 표시하고 운영 체제를 제어합니다.
해당 부트 로더와 호환되지 않는 OS를 사용하는 경우 체인로드 될 수 있습니다. 예를 들어, 동일한 머신에 Windows와 Linux가있는 경우, Windows를로드하기위한 GRUB 옵션은 실제로 Windows 설치에 대해서만 알고있는 다른 부트 로더를로드하여 전달합니다. 이 과정에서 3 차 단계 였지만 여전히 2 차 부트 로더 라고 불립니다. 다른 2 차 부트 로더가 실행되기 전에이를 알거나 신경 쓰지 않기 때문입니다. 다른 유형의 보조 부트 로더를 사용하는 Linux 설치의 경우에도 마찬가지입니다.
대부분 리눅스와 관련 하여 부트 로더 에 관해 이야기 할 때 , 일반적으로 ROM 코드를 의미하지는 않습니다 (ROM은 Linux의 일부가 아니거나 Linux를 설치하여 변경됨). 우리가 update-grub
할 때 우리는 보조 부트 로더를 바꾸고 있는데, 이것은 보통 특정 설치의 / boot에 있습니다. 우리가 install-grub
할 때 / boot가 어디에 있는지 (아마도 소프트웨어 RAID가 시작될 때) 알 수있는 충분한 코드를 가지고 MBR의 기본 부트 로더를 변경하고로드 될 때 자체적으로 실행됩니다. .
따라서 요약하면 ROM이 별도이기 때문에 ROM이 주 메모리의 일부라고 말했을 때 잘못되었습니다. (실제로 RAM 은 ROM에 반의어로 간주됩니다.). 부트 로더와 MBR에 프로세스의 두 단계가 있고 때로는 그 이름으로 호출되기 때문에 둘 다 정확했습니다. 그리고 "다른 OS는 다른 장소에 부트 로더를 저장합니까?" 호환되지 않는 보조 부트 로더는 다른 부트 로더를 숨기거나 (Linux를 설치 한 후 Windows를 설치하는 경우) 체인로드를 요청한 경우 (그 상황을 해결하거나 Windows 후에 Linux를 설치하는 경우) 다른 OS를로드하기 때문에 "주로"입니다 호환 가능한 경우 보조 부트 로더를 공유 할 수 있습니다 (동일한 유형의 보조 부트 로더를 사용하는 다른 Linux를 설치 한 후 Linux를 설치하면 다른 Linux를 볼 수 있음 (때때로 소프트웨어 RAID가 혼동을 일으키고 체인 로딩이 필요함).
* 프로그램 적으로 ROM과 RAM을 모두 사용하는 날에는 달라졌습니다. 예를 들어 ZX Spectrum에서 ROM은 16kiB이고 BASIC 인터프리터를 포함하고 48kiB 또는 128KiB (paged) 또는 RAM에 무언가를로드하기위한 시작점을 제공합니다 (이 경우 기본적으로 부팅 됨) BASIC 인터프리터를 사용한 다음 테이프를 사용하여 부팅하는 경우) BASIC 인터프리터에는 RAM의 프로그램이 사용할 수있는 기능이 많이 있습니다 (컴퓨터에 알려진 위치에 이미 trig 함수가있는 경우 trig 함수를 작성하는 이유) 특히 자신의 모든 코드를 실행하기 위해 48kiB 만있는 경우). 이 ROM은 RAM과 동일한 방식으로 다른 주소에서 볼 수 있습니다. 이 경우 ROM은 RAM과 마찬가지로 주 메모리의 일부이지만 쓰기가 불가능합니다.
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
이있다. 메인 메모리는 RAM과 ROM의 두 부분으로 구성됩니다. 나는 단지 소위 부트 로더가 메인 메모리의 ROM 부분에 설치되어 있는지 알고 싶다 ... @Sergey