멀티부트 운영 체제는 어떻게 작동하나요?

멀티부트 운영 체제는 어떻게 작동하나요?

컴퓨터는 연결된 모든 장치의 첫 번째 512KB를 검색하여 OS를 로드한다는 내용을 읽었습니다. 해당 메모리 공간이 부트 섹터로 작동하면 그 이후의 메모리 공간을 로드하기 시작합니다.

이 기사에 따르면 :https://www.gnu.org/software/grub/manual/multiboot/multiboot.html

동일한 하드 디스크에 존재하는 여러 OS가 "체인"을 수행합니다. 이제 모든 항목이 동일한 하드 디스크에 있는 경우 머신은 몇 번의 점프 후에 다른 부트 섹터를 찾을 것인지 어떻게 알 수 있습니까?
그리고 체인이 뭐죠?

답변1

컴퓨터는 연결된 모든 장치의 첫 번째 512KB를 검색하여 OS를 로드한다는 내용을 읽었습니다.

PC BIOS가 이 작업을 수행합니다. 연결된 모든 장치에 반드시 영향을 미치는 것은 아니며, 읽는 방법을 알고 있고 설정에서 읽도록 구성된 장치에만 영향을 미칩니다.

최신 UEFI 표준을 사용하는 PC는 하드 디스크의 EFI 파티션에서 직접 파일을 로드할 수 있습니다. 전통적으로 BIOS는 NTFS 또는 FAT와 같은 파일 시스템을 이해하지 못하지만 UEFI는 좀 더 지능적이며 실제로 장치에서 파일을 읽을 수 있습니다.


BIOS의 경우 로드되는 것은 완전한 OS가 아니라 작은 프로그램입니다.첫 번째 단계 부트로더. 이 첫 번째 단계 부트로더는 전체 OS를 로드할 수 있지만 실제로는 DOS나 다른 매우 간단한 OS의 경우에만 해당됩니다.

일반적으로 일어나는 일은 첫 번째 단계 부트로더가 진행되어 이전 NT/XP NTLDR, Windows Vista+ 부트로더 winload.exe또는 GRUB일 수 있는 두 번째 단계 부트로더를 로드하는 것입니다.

부트로더(두 번째 단계 이상)는 BIOS 이상의 작업을 수행할 수 있으므로 구성 파일이나 데이터를 읽고 부팅할 OS에 대한 메뉴를 제공할 수 있습니다. OS가 로드되면 부트로더를 덮어씁니다.

체인화부트로더가 다른 부트로더를 호출하는 곳입니다. Windows는 자체 부트로더로만 부팅되므로 GRUB가 설치되어 있는 경우 GRUB가 Windows를 로드하기 위해 수행하는 작업은 계속해서 BIOS가 로드했을 첫 번째 단계 부트로더만 로드하는 것입니다. 이것은 파티션의 첫 번째 섹터에 저장되어 있는 것 같습니다. DOS에서도 마찬가지입니다.

GRUB이 OS를 직접 부팅할 수 있는 경우에는 필요하지 않습니다. 이는 모든 Linux에서 가능합니다. Linux는 다른 OS와 달리 Linux 자체와 initramdisk가 메모리에 어떻게 들어가는지 크게 신경 쓰지 않습니다.


UEFI는 OS를 직접 로드할 수 있지만 Windows는 이 AFAIK를 지원하지 않으므로 일반적으로 UEFI 시스템은 winload.exe이를 직접 로드하여 대신 실행합니다.

U-Boot(가정용 라우터에서 실행할 수 있는 것)와 같은 기타 비PC 부트로더는 FAT 및 Linux 파일 시스템을 이해하고 여기에서 Linux를 직접 로드한 다음 OS를 직접 시작합니다.

답변2

컴퓨터는 연결된 모든 장치의 첫 번째 512KB를 검색하여 OS를 로드한다는 내용을 읽었습니다.

거의 정확합니다. PC 스타일 하드웨어는 첫 번째 섹터(512바이트)를 읽습니다. (킬로바이트가 아님)

해당 공간이 부트 섹터로 작동하는 경우 그 뒤의 공간을 로드하기 시작합니다.

또한 거의 정확합니다. 클래식 마더보드 펌웨어에는 BIOS라는 것이 포함되어 있습니다. PC의 전원을 켜면 실행됩니다. 그 작업 중 하나는 다른 장치(예: 플로피 드라이브)에 제어권을 넘겨주는 것이었습니다.

고급 버전에서는 단일 장치만 지원하지 않고 여러 장치를 확인하고 부팅 솔루션을 제공하지 못하는 경우 다음 장치로 넘어갑니다. 예를 들어 플로피에서 부팅을 시도할 수 있으며, 실패하면 CD에서 부팅을 시도하고 실패하면 첫 번째 하드 디스크에서 부팅을 시도합니다. (어디첫 번째디스크가 여러 개인 경우에도 흥미로울 것입니다).

대부분의 경우 하드디스크의 첫 번째 섹터를 읽습니다. 그리고 하드디스크에는 일반적으로 파티션 구성표(IBM 호환 PC용 MBR)와 일부 부팅 코드가 있습니다. 그런 다음 로더 체인을 따릅니다.

예를 들어 펌웨어는 단일 부팅 섹터를 로드하고 그 안에서 코드를 시작합니다.

해당 섹터에서 읽은 코드는 디스크에 대해 더 많이 이해하고 더 큰 프로그램을 로드합니다. (필요한 경우 더 많은 단계에서 반복)

동일한 하드 디스크에 존재하는 여러 OS가 "체인"을 수행합니다.

OS는 연결을 수행하지 않습니다. 그러나 이후 단계 중 하나가 고급 부트 로더 프로그램(예: grub)인 경우 사용자 입력을 요청할 수 있으며 이에 따라 다른 방식으로 계속될 수 있습니다. 예를 들어 Linux 커널을 로드할 수 있고 NTloader를 로드하고 시작할 수 있습니다.

관련 정보