![BTRFS 하위 볼륨에 OpenSUSE 설치](https://linux55.com/image/97812/BTRFS%20%ED%95%98%EC%9C%84%20%EB%B3%BC%EB%A5%A8%EC%97%90%20OpenSUSE%20%EC%84%A4%EC%B9%98.png)
다양한 파티션으로 인한 여유 공간 낭비를 피하기 위해 각 배포판에 대한 하위 볼륨을 사용하여 단일 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/efi
EFI 시스템 파티션 에 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
어쨌든 이것은 설치 후 또는 부팅 가능한 백업을 위해 설정하는 한 가지 방법입니다.
수십 개의 하위 볼륨을 생성하는 설치 프로그램을 피하고 파티션/기본 하위 볼륨의 루트에 설치하면 됩니다(작동하는 경우).
설치가 완료되면 복구 시스템을 시작하고
- 그 아래에 일반적인 Linux 파일 시스템 트리가 있도록 마운트된 시스템 디렉터리를 원하는 하위 볼륨으로 이동합니다. 필요한 경우 기본 폴더도 복구합니다.
- /etc/fstab 수정, 올바른 subvol=/myrootsubvol 옵션 추가
- 하위 볼륨(미래/)으로 파티션 마운트, 부트 마운트, 부트/efi 마운트
이제 마운트된 하위 볼륨 외부에 두 번째 디렉터리를 만듭니다. 모든 것을 이 디렉토리에 바인드 설치하십시오.
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"
이제 일반적인 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을 호출하는 것이 올바른 순서인지 잘 모르겠습니다.
- chroot를 종료하고 역순으로 제거합니다. 도구를 다시 사용하여 grub2 코어가 이제 올바른 경로를 가리키고 있는지 확인하세요.