내가 아는 한 BIOS나 펌웨어 역할을 하는 유사한 장치가 시작된 후 제어권이 부트로더로 전달됩니다.
BIOS가 OS 커널을 직접 로드할 수 없는 이유는 무엇입니까?
또한 GRUB 매뉴얼에는 다음과 같이 나와 있습니다.간단히 말해서, 부트 로더는 컴퓨터가 시작될 때 실행되는 첫 번째 소프트웨어 프로그램입니다.. BIOS가 가장 먼저 실행되는 프로그램이 아닌가요?
답변1
BIOS는 커널을 로드하는 방법을 알아야 하며 이로 인해 BIOS가 지나치게 복잡해집니다. 사용 가능한 다양한 운영 체제를 로드하는 방법, 커널 매개변수를 전달하는 방법 등을 알아야 하는 BIOS를 상상해 보십시오.
따라서 하드웨어만 초기화하고 부트로더가 저장된 알려진 위치로 점프합니다. 그런 다음 컨트롤이 전달됩니다.
BIOS가 커널을 직접 로드하지 않는 이유, 즉 부트로더를 사용하여 2단계 프로세스를 수행하는 이유가 무엇인지 궁금할 것입니다. 글쎄, BIOS는 그다지 똑똑하지 않습니다. 사실 그것은 매우 어리석은 일이며 Linux는 부팅 후 전혀 사용하지 않습니다. 원래는 작은 디스크가 있는 원시적인 8비트 PC용으로 작성되었으며 문자 그대로 커널을 직접 로드할 만큼 충분한 디스크에 액세스할 수 없습니다. 또한 부트 로더 단계를 사용하면 Unix가 충분하지 않은 경우 디스크의 여러 위치에서 여러 운영 체제 중 하나를 시작할 수도 있습니다.
BIOS가 실행되는 첫 번째 프로그램인 경우: (에서위키피디아)
BIOS 소프트웨어는 PC에 내장되어 있으며 전원을 켤 때 PC에서 실행되는 첫 번째 코드입니다('부팅 펌웨어').
하지만 펌웨어~이다소프트웨어. 그래서 저는 GRUB 매뉴얼이 적어도 그 부분에서는 혼란스럽다고 생각합니다. 부트로더는 첫 번째로 볼 수 있습니다사용자 정의컴퓨터에서 실행되는 소프트웨어의 일부.
답변2
그 이유는 유연성 때문이다. 하나의 하드 디스크에 여러 다른 OS(Windows, Linux 등)가 있을 수도 있고, 동일한 OS의 여러 다른 버전이 있을 수도 있습니다. 따라서 하드 디스크에 설치된 각 OS가 어디에 있는지, 각각을 어떻게 로드할지, 어떤 것을 로드할지, 메뉴를 표시할지 여부 등을 아는 OS 독립적인 코드 조각을 갖는 것이 좋습니다. 부트로더.
BIOS는 하드 디스크(첫 번째 섹터)의 미리 정의된 위치에 있는 코드를 로드하고 실행합니다. 우리는 이 코드를 부트로더라고 부르지만 기술적으로 빈 하드 디스크에 Windows를 설치한 경우 이 코드는 Windows에서도 설치되므로 Windows의 일부라고 부를 수 있습니다. 특히 Windows 부트로더는 Windows 이외의 다른 OS를 로드할 수 없기 때문입니다.
컴퓨터가 시작될 때 실행되는 첫 번째 소프트웨어 프로그램과 관련하여: 펌웨어/소프트웨어 구분은 매우 얇으며 최신 컴퓨터의 시작 프로세스는 매우 복잡합니다. BIOS 자체도 단일 프로그램이 아니지만 여러 개별 단계가 서로 연결되어 있습니다. 그러나 부트로더가 첫 번째입니다.사용자 변경 가능실행되는 코드. 이것은 사용자가 손상, 삭제, 바이러스 감염 등을 할 수 있는 첫 번째 코드 조각입니다. 따라서 기술적으로는 BIOS가 실행되는 첫 번째 소프트웨어이지만 컴퓨터가 사용자에게 필요하지 않은 경우 부트로더가 첫 번째로 실행되는 소프트웨어라고 가정합니다. 괜찮은지 확인하려고.
답변3
BIOS가 OS 커널을 직접 로드할 수 없는 이유는 무엇입니까?
세 가지 이유:
1981년에 처음 출시된 원래 PC 플랫폼의 BIOS는 CP/M 운영 체제와 동일한 역할, 즉 몇 가지 장치에 대한 얇은 추상화 계층과 간단한 디스크 부트로더로 작동하도록 의도되었습니다. CP/M에는 파일 시스템을 처리하는 "BDOS"라는 또 다른 계층이 있습니다. DOS는 당시 유행하던 운영체제였기 때문에 여러 면에서 CP/M과 유사했고, 구조도 유사했습니다. BIOS는 플랫폼의 하드웨어 관련 측면을 처리하도록 고안되었으며, 이는 현재 OS의 드라이버가 수행하는 역할입니다.
OS와 분리된 파일 시스템이라는 개념은 아직까지 확립되지 않았습니다.
당시 RAM과 ROM은 비싸고 부족한 자원이었습니다. 원래 IBM 5150 PC는 16K RAM(참조). 이 시스템의 ROM 크기는 48K였으며 여기에는 BASIC 인터프리터가 포함되었습니다. 그 당시에도 표준 파일 시스템 같은 것이 없었습니다.
DOS가 이 플랫폼에서 가장 인기 있는 OS로 성장했고 이후 Windows가 이 설정과 함께 작동했기 때문에 누구도 이런 방식으로 실제 부트로딩 기능을 포함하도록 BIOS를 확장할 생각은 없었습니다.
UEFI의 기능이 확실하지 않습니다. 어떤 이유로든 Windows에서 사용되지 않는 실제 부팅 로딩 기능이 있을 수 있습니다(Windows는 설치할 때 자체 부팅 관리자를 사용해야 한다고 주장합니다). U-Boot와 같은 기타 비BIOS 펌웨어와 많은 전화기 및 라우터의 펌웨어는 커널을 직접 로드하고 실행합니다. BIOS가 ROM에 더 많은 작업을 수행할 수 있는 공간을 확보하기 시작한 이후로는 기술적인 이유가 없었습니다.