내 컴퓨터의 어떤 부트로더가 기본이고 무엇이 보조인지 정의하려면 어떻게 해야 합니까? 어쩌면 몇 가지 명령이 있습니까? 시스템에는 ROM과 BIOS가 있습니다. /boot/ 폴더로 가서 내 시스템이 어떤 로더를 사용하고 있는지 확인할 수 있지만, 보조 부트 로더가 없으면 어떻게 해야 합니까? 내 질문의 목표는 내 컴퓨터에서 부트로더(기본 또는 보조)를 정의하는 방법입니다.
답변1
컴퓨터에서 전체 운영 체제를 부팅하는 메커니즘은 복잡하며 PC(Origin에서는 손상됨)에서는 더욱 복잡합니다. 아래는거친즉, 모든 UEFI 넌센스 이전의 클래식 PC 개요입니다.
전원을 켜면 BIOS가 부팅되어 일부 "자체 테스트"를 수행하고 일부 하드웨어를 감지한 다음 부팅 드라이브의 섹터를 메모리의 고정 부분으로 로드합니다. 이것이 MBR(마스터 부트 레코드)입니다.
그러면 부트 섹터는 BIOS 호출을 사용하여 더 중요한 부트 로더를 대부분 디스크의 고정 위치에서 메모리로 로드합니다(실제 파일 시스템을 사용할 수 없고 여유 공간이 거의 없음).
그러면 커널을 직접 로드하거나(예를 들어 미리 설정된 디스크 주소 세트를 사용하는 lilo) 더 중요하게는 파일 시스템을 이해하는 로더(예: grub2)를 로드합니다. 다음에 시작할 항목을 선택할 수 있는 일종의 메뉴를 제공할 수 있습니다.
로드된 커널이 시작됩니다. 자체 및 기타 페이로드(initrd)의 압축을 풀고 시스템 자체 보기를 초기화합니다(BIOS 또는 프로세스의 이전 단계에서 남은 일부 데이터 복사).
커널에 의해 호출 init
되며, 시스템을 시작하고 실행하기 위해 사용자 공간 프로세스를 시작합니다. 이 과정에서 RAM의 루트에서 실제 파일 시스템으로 전환됩니다.
다른 머신은 매우 다르며, 동일한 머신이라도 완전히 다른 부트 체인을 사용할 수 있습니다. 즉, PC용 Linux의 경우 lilo, isolinux, grub...을 사용하여 과거에는 커널을 플로피 시작 부분에 복사하고 직접 부팅하는 것도 가능했지만(전체 MBR 댄스를 직접 수행) 이는 단지 거의 잊혀진 과거의 일부.