BTRFS 하위 볼륨에 OpenSUSE 설치

BTRFS 하위 볼륨에 OpenSUSE 설치

다른 파티션을 사용하여 여유 공간을 낭비하지 않기 위해 각각에 대해 하위 볼륨을 사용하여 단일 BTRFS 파일 시스템 내에 다양한 Linux 배포판을 설치하려고 합니다.
UEFI를 실행하는 노트북을 사용하고 있으며 다음 파티셔닝 구성표를 사용하고 싶습니다.

sda1: EFI 부팅, 모든 시스템의 /boot/efi에 마운트됨
sda2: 스왑
sda3: BTRFS 볼륨

그런 다음 sda3는 다음 하위 볼륨으로 "분할"됩니다.
/data: 데이터용 하위 볼륨
/snapshots: 스냅샷용 하위 볼륨
/os/DISTID: distro DIST용 하위 볼륨(distro용 하나)

모든 배포판은 GRUB2를 설치하고 UEFI에 필요한 GRUB를 로드하므로 모든 배포판이 다른 배포판을 인식할 필요가 없습니다.

Arch와 Funtoo를 설치할 수 있었지만 OpenSUSE를 /os/suse 하위 볼륨에 설치하도록 설정할 수 없었습니다.
나는 다음을 시도했다:

  • 후자를 기본 하위 볼륨으로 설정합니다(또한 언급한 대로).여기) 그리고 OpenSUSE에게 파티션을 포맷하지 말라고 지시했습니다. 설치가 성공한 것 같았으나 부팅할 수 없습니다.
  • 설치 라이브 시스템의 /mnt에 하위 볼륨을 마운트하고 OpenSUSE에게 이 사실을 무시하도록 지시했습니다. 실제 설치를 위해 파티션을 다시 마운트하려고 할 때 설치에 실패했습니다.
  • 랩톱 환경과 유사한 가상 머신에 OpenSUSE를 설치한 다음 전체 시스템을 하위 볼륨에 복사하고 grub 및 해당 설정(Arch 또는 Funtoo와 관련된 설정)에 필요한 조정을 수행했습니다. grub이 로드되었지만 부팅된 시스템이 커널 패닉 상태에 빠졌습니다.

내가 작성한 GRUB 조정 내용은 다음을 의미합니다.

  • 하위 볼륨의 chroot(arch-chroot 사용 또는젠투/펀투 설치 절차)
  • /boot/efiEFI 시스템 파티션 인 grub을 설치합니다 (그러나 GRUB의 데이터는 유지 /boot).
  • grub-mkconfig -o /boot/grug/grub.cfg부트로더를 업데이트하려면 실행하세요 .

누구든지 어떤 생각이 있나요? 내가 뭐 놓친 거 없니?

답변1

내 경험에 따르면 OpenSUSE Leap 42.2/42.3 설치 프로그램에서 사용자 정의(예: snapper/@-notation 이외의) 하위 볼륨을 처리하는 것이 작동하지 않습니다. 더 나쁜 것은 부트로더 설치와 같은 일부 도구에 문제가 있다는 것입니다. 예를 들어 제 경우에는 grub 코어가 /boot/grub...을 가리키고 있었지만 chroot에서 업데이트할 때는 /grub..이어야 합니다. 이 도구를 사용하여 현재 설정을 확인할 수 있습니다.https://github.com/arvidjaar/bootinfoscript

어쨌든 설치 후 또는 부팅 가능한 백업을 설정하는 데 사용하는 방법은 다음과 같습니다.

설치 프로그램에서 수십 개의 하위 볼륨을 생성하지 말고, 예를 들어 파티션의 루트/기본 하위 볼륨(작동하는 경우)에 설치하면 됩니다.

설치 후 구조 시스템을 시작하고

  1. 해당 하위 볼륨 아래에 일반적인 Linux 파일 시스템 트리가 있도록 설치된 시스템 디렉터리를 원하는 하위 볼륨으로 이동합니다. 필요한 경우 홈 폴더도 수정합니다.
  2. 적절한 subvol=/myrootsubvol 옵션을 추가하여 /etc/fstab을 수정합니다.
  3. 하위 볼륨(미래 /)으로 파티션을 마운트하고, 부팅을 마운트하고, boot/efi를 마운트합니다.
  4. 이제 마운트된 하위 볼륨 외부에 두 번째 디렉터리를 만듭니다. 모든 것을 해당 디렉토리에 바인드 마운트하십시오.

    mount -o bind "/mnt/partition_root/sysroot_subvol" "/mnt/temp_sys_prep" 
    mount -o bind "/mnt/partition_root/sysroot_subvol/boot" "/mnt/temp_sys_prep/boot" 
    mount -o bind "/mnt/partition_root/sysroot_subvol/boot/efi" "/mnt/temp_sys_prep/boot/efi" 
    mount -o bind /proc "/mnt/temp_sys_prep/proc"
    mount -o bind /sys "/mnt/temp_sys_prep/sys"
    mount -o bind /dev "/mnt/temp_sys_prep/dev"    
    
  5. 이제 일반적인 chroot 접근 방식을 사용하십시오 /mnt/temp_sys_prep.chroot에서는당신이 사용할 수있는

    • grub2-install --no-nvram --recheck --efi-directory=/boot/efi /dev/disk/by-id/scsi-SATA...,
    • grub2-mkconfig -o /boot/grub2/grub.cfg,
    • mkinitrd

    올바른 순서가 확실하지 않습니다. mkinitrd는 아마도 grub을 호출할 수도 있습니다.

  6. chroot를 종료하고 역순으로 마운트 해제합니다. grub2 코어가 이제 올바른 경로를 가리키는지 도구를 다시 확인하십시오.

관련 정보