/boot 파티션의 실제 목적은 무엇입니까?

/boot 파티션의 실제 목적은 무엇입니까?

나는 Linux 파티션과 파일 시스템에 관한 비교적 오래된 글을 읽고 있습니다.LPIC 1 인증 성경). 그것은 말한다:

Linux 부트로더의 일부 버전은 디스크의 처음 1024개 실린더를 초과하는 커널에 액세스할 수 없습니다. /boot 파티션을 드라이브 시작 부분에 배치하면 부팅 시 커널에 액세스하는 데 문제가 없는지 확인할 수 있습니다. 이 문제는 첫 번째 파티션에서 Linux와 다른 운영 체제를 이중 부팅하는 경우 가장 자주 발생합니다.

부트로더에 "디스크의 처음 1024개 실린더를 초과하는 커널에 액세스할 수 없습니다."?

게다가 "뭐야?드라이브 시작 부분에 /boot 파티션을 배치합니다." 뜻은?

답변1

이는 Linux 자체가 아닌 매우 오래된 BIOS 및 부트로더로 인해 발생하는 제한 사항입니다. BIOS는 디스크의 처음 1024개 실린더에만 액세스할 수 있습니다(참조:여기실린더/헤드/섹터가 무엇인지에 대한 자세한 내용은 참조). 이 제한은 단순한 특성으로 인해 자체 디스크 드라이버가 없고 BIOS 서비스를 사용하여 디스크에 액세스하는 부트 로더까지 확장됩니다.

이는 부트로더와 커널(이를 로드하는 것이 부트로더의 작업이기 때문에) 모두 이 제한이 있는 시스템의 첫 번째 1024개 실린더 내에 있어야 함을 의미합니다. 이를 수행하는 쉬운 방법은 커널을 포함하는 별도의 파티션을 만들어 /boot드라이브 시작 부분에 두는 것입니다(보통 첫 번째 파티션으로 만듭니다). 이는 파티션이 너무 크지 않다고 가정할 때 실제로 처음 1024개의 실린더 내에 상주한다는 의미입니다.

이 제한은 이전 BIOS에만 적용되므로 더 이상 문제가 되지 않습니다. 또한 많은 최신 부트 로더(예: GRUB)에는 자체 디스크 드라이버가 있으므로 BIOS 서비스에 의존할 필요가 없습니다. 최신 부트로더는 /boot다른 용도로 사용될 수 있지만 더 이상 별도의 파티션에 있을 필요가 없습니다.그리고처음 1024개의 실린더 내(대부분의 경우 이는 /boot별도의 파티션에 있음)

답변2

역사

/boot운영 체제에서 사용하지 않지만 운영 체제에서 사용하는 파일을 포함합니다.부트 로더. 부트로더 자체(예: /boot/grub/*Grub) 및 Linux 커널( ) 에 대한 파일을 찾을 수 /boot/vmlinuz*있으며 종종 관련 파일도 찾을 수 있습니다.초기화 프로그램또는파일 시스템 초기화.

PC에서기존 BIOS(최신 버전에 비해UEFI최신 컴퓨터에서 사용 가능) ROM의 소프트웨어는 부팅 디스크의 처음 512바이트를 메모리(부트 섹터). 512바이트만 있으면(모두 코드가 포함된 것은 아니며 일부는 파티션 테이블과 같은 데이터가 포함됨) 코드는 많은 작업을 수행할 수 없습니다. 실제 디스크 드라이버가 있을 수 없습니다. 이렇게 제한된 공간에서 할 수 있는 일은 BIOS 인터페이스를 사용하여 더 많은 코드를 로드하는 것뿐입니다. 이 인터페이스는 디스크의 N번째 섹터를 로드하는 명령을 제공하며, N의 크기는 제한되어 있으므로 디스크의 시작 부분에만 도달할 수 있습니다.

BIOS 인터페이스에는조금 발전했다약 30년 정도 되었지만 크기 제한이 디스크 크기를 따라잡는 데 어려움을 겪어 결과적으로 오래된 BIOS 및 부트로더가 32MB, 512MB, 2GB, 8GB(그리고 아마도 내가 알지 못하는 다른 임계값)에서 실행되고 있습니다. 다음 충돌을 기억하십시오). 부트 로더는 BIOS 인터페이스를 사용하여 디스크 드라이브에 직접 액세스하는 데 필요한 모든 부분을 로드할 수 있어야 합니다. 부트로더에는 일반적으로 모든 디스크 컨트롤러에 대한 드라이버가 포함되어 있지 않으므로 Linux 커널(및 initrd/initramfs)을 로드하기 전의 모든 항목은 BIOS 인터페이스를 사용해야 하므로 디스크 시작 부분에 맞아야 합니다.

이는 Linux 자체나 배포판이 아닌 BIOS 또는 부트로더의 제한 사항입니다.

/boot오늘은 별거하세요

최신 BIOS와 최신 부트로더 또는 UEFI가 설치된 시스템에서는 크기 제한이 더 이상 관련이 없습니다. 이제 디스크 크기를 따라잡는 데 오랜 시간이 걸립니다. 그러나 별도의 /boot파티션이 유용할 수 있는 다른 사용 사례도 있습니다 . 이를 통해 메인 시스템을 다음 위치에 배치할 수 있습니다.RAID 장치부트로더가 지원하지 않거나 파일 시스템 유형이 부트로더에서 지원되지 않습니다. 이를 통해 메인 시스템이 암호화된 장치에 있을 수 있으며, Linux는 이를 해독할 수 있지만 부트로더는 해독할 수 없습니다.

이러한 제한 사항과 사용 사례 중 어느 것도 적용되지 않는 경우 /boot별도의 파티션으로 유지하는 것은 소용이 없습니다. 그러나 대부분의 배포판이 지원하는 만큼 충분한 사람들에게 영향을 미칩니다.

답변3

언급된 BIOS 문제 외에 또 다른 이유는 별도의 파티션을 사용하면 /boot부트로더가 이해하지 못하는 볼륨에 대해 파일 시스템을 사용할 수 있다는 것입니다(그러한 차단 목록 로드로 제한되는 대신)./lilo

답변4

디렉토리 의 존재는 /boot역사적으로 결정되며 거기서부터 "고정"됩니다.파일 시스템 계층 표준. 이러한 표준을 사용하면 프로그램(및 시스템 관리자)이 특정 파일이 특정 위치에 있을 것으로 예상할 수 있습니다. 이 경우 부팅 프로세스와 관련된 파일입니다.

오래된 BIOS에서는 사용 가능한 모든 드라이브의 블록/섹터를 색인화할 수 없기 때문에 디스크 시작 부분에 파티션을 설정하는 /boot것이 좋습니다. 따라서 로드해야 하는 정보는 인덱싱할 수 있는 섹터에 있어야 하며, 따라서 /bootBIOS가 다른 데이터/프로그램을 로드할 수 있는 별도의 파티션(낮은 섹터 번호)에 있어야 합니다(전체 데이터/프로그램의 주소를 지정할 수 있음). ). BIOS를 사용하지 않는 디스크 범위).

관련 정보