제목이 모든 것을 말해줍니다. /boot의 위치가 grub에 하드코딩되어 있는지, 아니면 무엇인지 알고 싶습니다.
BIOS가 첫 번째 512를 보고 grub을 찾으면... /boot?를 보도록 grub을 하드코딩해야 합니다.
내가 맞나요?
답변1
grub에 하드코딩되어 있지 않습니다. GRUB 구성 파일의 부팅 항목을 보면 다음과 같습니다.
title Red Hat Enterprise Linux (2.4.21-1.ent)
root (hd0,0)
kernel /vmlinuz-2.4.21-1 ro root=/dev/sda2
initrd /initrd-2.4.21-1.img
이 줄이 보일 것입니다 root (hd0,0)
. 이 경우 이는 부팅 파티션, 하드 디스크 0, 파티션 0(Linux /dev/sda1
또는 /dev/hda1
하드웨어에 따라 이와 유사한 것으로 종종 호출됨)의 정의입니다 .
실행하면 grub-install
이 구성이 읽어져 grub 바이너리와 함께 부트로더 영역에 저장됩니다. 그러나 GRUB 화면에서 이러한 항목을 편집하여 다른 파티션에서 부팅할 수 있습니다.
이 파티션을 /boot
경로에 마운트하는 것은 Linux/Unix 규칙입니다.파일 시스템 계층 표준. 원하는 곳에 설치할 수 있지만 새 위치를 알 수 있도록 커널 및 부트로더 관련 패키지와 도구를 조정해야 합니다.
답변2
위치/boot
임베디드GRUB 코드는 GRUB이 설치될 때 작성됩니다.
i386-pc
"최초의 512"를 언급하셨기 때문에 클래식 BIOS 스타일 부팅의 변형인 GRUB의 아키텍처 변형을 고려하고 있다고 가정합니다 .
GRUB가 마스터 부트 레코드에 설치되면 실제 MBR에는 하나의 블록을 더 로드할 수 있는 충분한 코드만 있습니다(부트 코드에는 일반 BIOS의 모든 레거시 호환성 옵션이 있어야 하기 때문입니다). GRUB를 MBR에 설치하는 과정의 일부로 다음 블록의 블록 번호가 GRUB의 MBR 코드에 포함됩니다.
클래식 MBR 파티셔닝을 사용하는 경우 다음 블록은 일반적으로 MBR 다음 블록(블록 #1)입니다. 여기에는 더 많은 GRUB 코드와 읽을 블록 목록이 더 많이 포함됩니다. 이 블록에는 다음이 포함됩니다.
- GRUB 코어 이미지 나머지 블록
- GRUB이 파티션 테이블과 나머지 GRUB 모듈을 포함하는 파일 시스템(즉, 일반적으로 디렉터리를 포함하는 파일 시스템)을 이해하고 액세스할 수 있도록 하는 데
/boot/grub
필요한 최소 GRUB 모듈 세트 - GRUB가 구성 파일을 찾아야 하는 파티션과 디렉터리를 나타내는 GRUB 접두어, 필요한 경우 추가 GRUB 모듈.
MBR 파티션 디스크에서 이러한 블록은 MBR과 첫 번째 파티션의 시작 부분 사이의 일반적으로 사용되지 않는 공간에 포함됩니다. 차단 목록은 grub-install
GRUB 설치 프로세스에서도 생성됩니다.
GRUB가 GPT 파티션 디스크에 설치된 경우 i386-pc
블록 #0과 첫 번째 파티션의 시작 부분 사이의 공간은 GPT 파티션 테이블 구조로 채워지므로 GRUB의 이러한 부분에는 전용 "biosboot" 파티션이 사용됩니다.
/boot
디렉토리 이름을 다른 이름으로 변경 하려면 옵션을 사용하여 지정 --boot-directory=
하면 grub-install
GRUB의 초기 단계에서 사용된 원래 디스크 블록에 포함된 접두사 정보가 자동으로 조정됩니다.
완전성을 위해: 보안 부팅이 포함된 UEFI 시스템에서는 전체 GRUB 코어 이미지와모두부팅 프로세스에 필요한 GRUB 모듈은 일반적으로 GRUB의 변형 grubx64.efi
인 ESP(EFI 시스템 파티션)의 단일 파일에 기록됩니다.x86_64-efi
UEFI 보안 부팅 펌웨어가 이 파일을 허용하려면 시스템 펌웨어에서 허용하는 보안 부팅 키 중 하나 또는 보안 부팅 호환성에서 제공하는 shim을 통해 유효한 서명이 있는 Microsoft PE+ 형식 바이너리여야 합니다. 공급자( shimx64.efi
) 또는 시스템 관리자의 선택에 따라 설치된 MOK(머신 소유자 키).
점점 더 많은 배포판에서 UEFI GRUB용 미니 구성 파일을 와 grub.cfg
같은 디렉터리에 있는 ESP에 배치하는 것으로 보입니다 grubx64.efi
. 이 파일에는 일반적으로 실제 GRUB 구성이 포함된 파일 시스템, 디렉터리 및 파일 이름을 식별하는 데 충분한 몇 가지 구성 줄만 포함됩니다. 따라서 UEFI 시스템 및 많은 배포판에서 이름을 다른 이름으로 변경하려면 /boot
GRUB을 다시 설치하지 않고도 파일을 편집하고 변경할 수 있습니다 /boot/efi/EFI/<distro_name>/grub.cfg
.