컴퓨터는 어떤 운영 체제를 부팅할지 어떻게 알 수 있나요?

컴퓨터는 어떤 운영 체제를 부팅할지 어떻게 알 수 있나요?

컴퓨터를 켤 때 부팅할 운영 체제를 선택하는 소프트웨어는 무엇이며, 여러 옵션이 제공되면 어떻게 결정합니까?

더 구체적으로 말하면, 동일한 디스크에 여러 운영 체제가 있는 컴퓨터가 있는 경우 어떻게 해야 합니까? 외부 드라이브가 있는 경우에는 어떻게 해야 합니까? 인식되는 형식에 대해 모든 저장 장치의 모든 파티션을 검색합니까?

제가 이해한 바로는 모든 디스크에는 컴퓨터가 부팅해야 하는 파티션에 대한 정보가 포함된 자체 부팅 섹터가 있습니다. 하지만 여러 개의 디스크가 연결되어 있고 각 디스크마다 서로 다른 부팅 섹터가 있는 경우에는 어떤 부팅 섹터를 로드합니까?

이 주제를 조사하려고 할 때 모든 기술이 동일하게 작동하지 않기 때문에 약간의 혼란에 빠졌습니다. 예를 들어 부팅 가능한 플래그가 중요하다고 말하는 사람도 있고 무시한다고 말하는 사람도 있습니다. 다양한 시스템이 어떻게 작동하는지 명확하게 알려주시면 감사하겠습니다.

답변1

불행하게도 이것은 컴퓨터가 발전하면서 더욱 복잡해졌습니다.

처음에는(즉, 최초의 PC) 순서가 고정되어 있었습니다(케이블 연결에 따라 다름).

거의 모든 컴퓨터에는 여전히 BIOS에 의해 제어/영향을 받을 수 있는 기본 부팅 순서가 있습니다. 최신 컴퓨터는 어떤 면에서 BIOS를 대체하는 UEFI로 이 기능을 보완합니다.

BIOS 부팅에는 선호되는 순서가 있습니다. BIOS는 부팅 가능한 부팅 섹터가 있는지 각 드라이브를 살펴보고 부팅할 때까지 옵션 목록을 내려가며 이를 로드하려고 시도합니다.

UEFI의 경우 디스크에 파일 시스템이 있습니다(1단계 부트 로더와 지침이 포함된 UEFI로 표시된 작고 굵은 파티션. 경우에 따라 이는 UEFI에 프로그래밍된 지침(예: BIOS와 유사하게 nvram에 저장된 설정)으로 보완됩니다. )

부트 로더/UEFI 파티션이 발견되면 프로그램이 부팅 프로세스를 인계받으며 이를 통해 다른 모드나 OS로 부팅할 수 있는 기능이 제공될 수 있습니다.

답변2

다른 사람들이 말했듯이 조금 복잡해졌지만 내가 이해하는 방식은 다음과 같습니다.

컴퓨터 전원을 처음 켰을 때 중요한 것은 하드 드라이브가 아닙니다. 마더보드의 칩에는 먼저 로드되고 CPU가 이를 실행하기 시작하는 특별한 소프트웨어가 있습니다. 이를 BIOS 또는 UEFI라고 합니다(UEFI는 실제로 BIOS의 후속 제품입니다).

이 코드는 하드웨어의 다양한 부분을 초기화하는 약간의 작업을 수행한 후 제어권을 전달할 다음 항목을 찾기 시작합니다. 자, 그것이 정확히 무엇이 될지는 많은 것들에 달려 있습니다. 내부 하드 드라이브, 외부 드라이브, 네트워크 어댑터, RAID 컨트롤러, 추가 카드 등 다양한 옵션이 있습니다.

BIOS/UEFI에는 이러한 옵션을 확인하는 순서를 결정하는 설정도 있습니다. 구성된 순서대로 각 항목을 살펴보고 "계속 부팅할 수 있습니까?"라고 묻습니다. 그리고 장치는 "예" 또는 "아니요"라고 말할 것입니다. "예"라고 말하는 첫 번째 것은 계속됩니다. 그런 다음 해당 장치는 BIOS에 메모리에 로드되는 코드 조각을 제공하고 CPU는 이를 통해 실행을 계속합니다.

하드 드라이브의 특별한 경우에는 디스크 자체가 부팅 가능한지 여부를 실제로 알 수 없습니다. 따라서 BIOS가 수행하는 작업은 드라이브의 첫 번째 섹터(일반적으로 512바이트)를 읽고 해당 섹터의 특정 위치에서 특별한 몇 바이트를 확인하는 것입니다. 값 55 AA(16진수)가 포함된 경우 이 섹터는 코드로 실행됩니다. 그렇지 않으면 다음 디스크를 확인하기 위해 이동합니다.

이제 512바이트는 많은 공간은 아니지만 몇 가지 간단한 작업을 수행하는 데는 충분합니다. 예를 들어, 기존 DOS는 "부팅 가능"으로 표시된 파티션을 찾은 다음 첫 번째 섹터를 로드하는 약간의 코드를 거기에 넣었습니다.저것파티션을 나눈 다음 실행했습니다. 그리고 그 다음 섹터에는 몇 개의 섹터를 더 로드하고 파일 시스템 구문 분석을 시작하고 거기에서 파일을 로드하는 등의 작업을 수행하기에 충분한 코드가 포함되어 있습니다.

하지만 실제로는 이 코드가 무엇을 해야 하는지 알려주는 것이 없습니다. 또한 활성 파티션을 로드할 수 없지만 더 많은 코드가 있는 디스크의 다른 일부 섹터를 로드할 수 있습니다. 그러면 해당 코드는 여러 부팅 가능한 파티션이나 OS 등을 선택할 수 있는 메뉴를 제공할 수 있습니다.

어쨌든 드라이브의 첫 번째 섹터에 있는 코드를 "부트로더"라고 합니다. 다양한 부트로더가 있습니다. 요즘 Linux 세계는 grub에 크게 의존하고 있으며 Windows에는 자체 기능이 있습니다. 부트로더가 실제로 제공됩니다.~ 전에그러나 운영 체제를 메모리에 로드하고 제어하는 ​​방법을 알아야 합니다.

이것이 더 명확해지나요?

답변3

시작 시 마더보드는 마더보드에 연결된 모든(또는 대부분) 전자 부품에 전원을 공급합니다. 그 중 하나는 기본 운영 체제가 있기 때문에 시스템 드라이브라고 불리는 하드 드라이브 또는 SSD입니다. USB, FireWire 또는 네트워크 등 다른 외부 드라이브에서 부팅하도록 BIOS 또는 (U)EFI를 설정하지 않은 경우 해당 드라이브가 먼저 사용됩니다.

이 드라이브에는 일반적으로 읽기 전용(bcdedit.exe 명령 세트를 통해 편집 가능)인 마스터 부트 레코드 파티션(단순화)이 있으며 드라이브에서 사용 가능한 모든 OS를 검토합니다. 하나는 사용자가 직접 설정하거나, 공장에서 설치하거나 기본 OS를 재설치/업그레이드할 때 자동으로 설정됩니다.

Windows에서는 USB 부팅을 허용하지 않습니다.하드 드라이브 또는 SSD. USB로 부팅할 수 있어요열쇠, 특정 USB 컨트롤러를 호스팅하지만 Windows에서는 케이블을 통해 연결하는 USB 드라이브에서 부팅하는 것이 허용되지 않습니다. 필요한 드라이버는 첫 번째 Windows 서비스 및 프로세스(smss.exe 및 crss.exe)가 이미 로드된 후까지 로드되지 않습니다. 이는 Windows 자체가 시작되었음을 의미합니다.

답변4

컴퓨터에는 어떤 디스크가 먼저 와야 하는지, 두 번째(첫 번째 디스크를 사용할 수 없는 경우), 세 번째 등을 표시하도록 구성할 수 있는 소프트웨어가 내장되어 있습니다.

이것은 eeprom(배터리로 공급)에 저장되는 "바이오스"였습니다. 그러나 현재는 하드웨어에 Linux 기반 OS가 내장되어 있어 훨씬 더 복잡해졌습니다(이로 인해 컴퓨터가 외부 공격에 취약해질 수 있음).

각 디스크에는 파티션 테이블이 있지만 반드시 부팅 섹터일 필요는 없습니다.

관련 정보