GRUB 복구를 위해 파티션 없는 Btrfs가 갑자기 시작됩니다.

GRUB 복구를 위해 파티션 없는 Btrfs가 갑자기 시작됩니다.

질문

8디스크 Btrfs RAID10 볼륨에서 Arch Linux로 부팅된 머신이 있습니다. 최근에 재부팅했는데 다음과 같은 GRUB 복구 프롬프트가 표시되었습니다.

GRUB에 오신 것을 환영합니다! 오류: 해당 장치 없음: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. 오류: 알 수 없는 파일 시스템입니다. 복구 모드로 들어갑니다... grub 복구> ls (hd0) (hd1) (hd2) (hd3) (hd4) (hd5) grub 복구> ls (hd5) (hd5): 파일 시스템을 알 수 없습니다. grub 구제 > ls (hd4) (hd4): 파일 시스템을 알 수 없습니다. grub 구조 > insmod btrfs grub 구조 > ls (hd0) (hd0): 파일 시스템을 알 수 없습니다. 유충 구출>

정확히 무엇이 이 일을 촉발시켰는지는 잘 모르겠습니다. 마지막 부팅 이후 최소 두 개의 업데이트( )를 설치했으며 pacman -SyuGRUB 재설치를 포함하여 시스템에 다른 변경 사항을 적용했을 수도 있습니다.전용 부팅 디스크를 추가하면 시스템을 부팅할 수 있습니다.

이론

#archlinux IRC 채널의 유용한 멤버와 문제를 해결하는 동안 우연히 만났습니다.Arch 위키에 대한 이 메모:

파티션 오프셋

core.img를 파티션된 디스크에 포함하려고 하면 오프셋 문제가 발생할 수 있습니다. 이는 grub의 core.img가 분할되지 않은 디스크(예: /dev/sdX)의 Btrfs 풀에 직접 포함될 수 있음을 의미합니다. GRUB는 Btrfs 파티션을 부팅할 수 있지만 모듈이 다른 파일 시스템보다 클 수 있습니다. grub-install로 생성된 core.img 파일은 MBR과 첫 번째 파티션 사이 드라이브의 처음 63개 섹터(31.5KiB)에 맞지 않을 수 있습니다. 최신 파티션 도구(예: fdisk 및 gdisk)는 첫 번째 파티션을 약 1MiB 또는 2MiB만큼 오프셋하여 이 문제를 방지합니다.

이는 파티션에 GRUB를 설치하는 데 문제가 있을 수 있음을 나타내는 것 같습니다.그리고파티션이 없는 디스크, 최신 파티션 도구는 디스크 시작 부분에 추가 공간을 남겨두어 이를 완화합니다(현재로서는).

GRUB 위키 페이지가 더 간단합니다.:

파티션을 나누었거나 파티션을 나누지 않은 디스크에 설치

경고하다:애벌레매우 낙담함파티션된 부트 섹터나 GRUB Legacy 또는 Syslinux와 같은 파티션 없는 디스크에 설치합니다. 이 설정은 특히 업데이트 중에 쉽게 손상됩니다.지원하지 않음아치 개발자가 제공합니다.

글쎄요.

어쨌든 grub-install -v출력에 다음 줄을 포함합니다.

grub-install: info: the total module size is 0xa07c.

위에서 언급한 31.5KiB 제한을 훨씬 초과하는 약 41K이지만, 이것이 문제가 되는 이유인지 확신할 만큼 GRUB를 잘 알지 못합니다.

질문

  1. 이 경우문제는 그것을 어떻게 증명할 수 있느냐는 것입니다. grub-install만약 그렇다면 큰 소리로 실패하는 것은 어떨까요?

  2. 나중에 부팅 가능한 Btrfs 디스크를 포맷하는 올바른 방법은 무엇입니까? 마스터 부트 레코드? 일반적인 기술? — 전용 부팅 디스크가 매력적이지만 볼륨의 모든 장치에 중복 부트로더가 있는 것을 선호합니다.

  3. btrfs replace각 디스크를 지우고 실행하는 것보다 각 디스크를 파티션 테이블로 마이그레이션하는 더 좋은 방법이 있습니까 ?

답변1

과거에는 fdisk를 사용하여 MBR 파티션 테이블을 생성할 때 기본적으로 처음 63개 섹터가 변경되지 않았습니다. 여기에 GRUB 및 기타 부트로더를 설치할 수 있습니다.

현대로 빠르게 나아가면 동일한 도구(fdisk)를 사용하면 GRUB2가 BTRFS를 지원하는 stage1을 설치할 수 있을 만큼 더 많은 공간이 남게 됩니다. 나는 오프셋이 업계에서 무엇을 의미하든 기본적으로 약 1MB라고 생각합니다.

왜 실패하지 않았는지 모르겠지만 grub-install부팅 섹터 크기를 확인하지 않는 것 같습니다. 파티션 없이는 어떻게 가능합니까?

중복 부트로더를 사용하는 데 아무런 문제가 없다고 생각합니다. 수동으로 관리해야 하는데 GRUB2의 stage1은 자주 바뀌지 않습니다. 그러나 이는 파티셔닝이 필요하다는 것을 의미합니다.

파티션 테이블을 추가하기 위해 디스크를 마이그레이션할 수 있는 도구는 없습니다. 문제는 파일 시스템이 디스크의 섹터와 연결되어 있고 파티션 테이블을 추가하면 해당 섹터가 변경된다는 것입니다. BTRFS 파일 시스템이 LVM에 있는 경우 파일 시스템이 "가상 섹터"에 바인딩되므로 파일 시스템을 이동할 수 있습니다. 이렇게 해야 한다고 말하는 것이 아니라 문제가 무엇인지만 언급하는 것입니다.

관련 정보