BTRFS 하위 볼륨에 OpenSUSE 설치

BTRFS 하위 볼륨에 OpenSUSE 설치

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

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

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

각 배포판은 GRUB2를 설치하고 각 배포판이 다른 배포판에 대해 알 필요가 없도록 UEFI에 필요한 GRUB를 로드하겠습니다.

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

  • 후자를 기본 하위 볼륨으로 설정합니다(앞서 언급한 대로).여기) 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. /etc/fstab 수정, 올바른 subvol=/myrootsubvol 옵션 추가
  3. 하위 볼륨(미래/)으로 파티션 마운트, 부트 마운트, 부트/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 코어가 이제 올바른 경로를 가리키고 있는지 확인하세요.

관련 정보