1개의 디스크에 2개의 시스템 풀 - 1개 또는 2개의 /boot 디렉토리 및 WTB grub?

1개의 디스크에 2개의 시스템 풀 - 1개 또는 2개의 /boot 디렉토리 및 WTB grub?

별도의 ext4 파티션에서 /boot를 사용하여 ext4 /에 마운트한 다음 /의 내용을 ZFS 풀로 이동하여 수행했던 레거시 root-on-zfs 설치가 있습니다.

동일한 디스크에 다양한 *BSD 설치를 설치했는데 전혀 문제가 발생하지 않았지만 지금은 사용하지 않는 파티션에 Devuan 설치를 고려하고 있습니다. 보다 정확하게는 다른 시스템(XFS 사용)에서 이미 설정된 설치를 관련 파티션의 새 풀로 복사합니다.

나는 자체 파티션 접근 방식에서 /boot를 고수하고 싶고 두 배포판 모두에 대해 단일 /boot를 사용하지 않는 것이 가장 좋다고 생각합니다. 따라서 두 개의 /boot 파티션이 있습니다.

나는 방정식에 ZFS가 없더라도 이전에 이 작업을 수행한 적이 없습니다. 구체적으로 grub에서는 어떻게 작동합니까? 두 가지 버전이 있고 각 배포판이 어느 시점에서 새로운 grub 구성을 생성하려고 한다는 점을 고려하면 어떻게 될까요? 커널(부팅 시)과 커널 모듈(풀의) 일치를 기반으로 어떤 부팅 파티션이 어떤 풀과 일치하는지 결정합니까, 아니면 모든 grub 업데이트 후에 일관성(grub.cfg에서)을 수동으로 확인해야 합니까? grub.cfg는 /boot가 있는 파티션의 UUID와 커널 매개변수로 풀 이름만 참조하는 것을 확인했습니다.

FWIW, 이 머신은 UEFI를 지원하지만 EFI 파티션을 부팅하는 옵션(예: rEFInd로 이동)을 제공하지 않는 것 같습니다. 아마도 grub 부트로더도 설치되어 있기 때문일 것입니다.

2차 배포를 시작하기 위해 몇 가지 어려움을 겪어야 하는 데에는 문제가 없습니다.

답변1

가능하다는 것이 밝혀졌지만 약간의 작업이 필요합니다.

두 번째 Linux 설치가 동일한 /boot 디렉터리(또는 파티션)를 공유하지 않으면 Grub 자체에서 이를 감지하지 못합니다. 이는 Linux 설치 옆에 설치한 BSD 설치를 감지할 때도 문제가 되었던 것으로 기억합니다.

좋은 소식은 이는 물론 MBR 부트 섹터에 설치되지 않는 한 다른 설치를 망칠 필요 없이 모든 설치에서 grub을 실행할 수 있다는 것입니다.

까다로운 부분은 rEFInd가 각 배포판에 설치되었을 수 있는 다양한 커널을 감지하고 올바른 매개변수로 선택한 initrd를 실행하여 올바른 ZFS 풀을 로드하도록 하는 것입니다. 1 배포판에서 이를 달성하는 가장 쉬운 방법은 grub 및 ubuntu/grubx64.efi. 이 로더에는 grub.cfg에 대한 경로가 하드코딩되어 있는 것으로 나타났습니다. 따라서 /EFI/ubuntu/grub.cfg이를 다른 디렉토리에 복사해도 제가 원하는 대로 문제가 해결되지 않습니다. 다행히 Debian(및 Devuan)에는 grub.cfg 가 필요한 자체 로더 버전이 있으므로 /EFI/debian/grub.cfg이를 통해 문제가 해결되었습니다. (참고: Devuan 버전에서는 /EFI/$HOSTNAME 디렉터리가 생성되었으므로 이름을 바꿔야 했습니다.)

내 문제는 아직 완전히 해결되지 않았습니다. 현재 가상 머신을 통해 두 번째 설치를 부팅하고 원시 디스크를 통해 설치의 /boot 및 ZFS 풀 파티션은 물론 EFI 파티션에 액세스할 수 있습니다. 내 노트북은 부팅 시 부팅 관리자를 불러오는 옵션을 제공하지 않습니다. 항상 MBR 부팅 섹터에 설치한 grub으로 직접 부팅됩니다. EFI 파티션에서 rEFInd를 찾아서 시작하기 위해 grub 섹션을 추가했지만 아직 작동하지 않았습니다. 이렇게 할 수 있습니까?

관련 정보