Estou tentando instalar diferentes distribuições Linux dentro de um único sistema de arquivos BTRFS, usando um subvolume para cada uma, para evitar o desperdício de espaço livre usando partições diferentes.
Estou usando um laptop executando UEFI e queria usar o seguinte esquema de particionamento:
sda1: inicialização EFI, montada em /boot/efi em todos os sistemas
sda2: swap
sda3: volume BTRFS
sda3 seria então "particionado" nos seguintes subvolumes:
/data: subvolume para dados
/snapshots: subvolume para snapshots
/os/DISTID: subvolume para distro DIST (um para distro)
Cada distro instalaria seu GRUB2, e eu carregaria o GRUB necessário no UEFI, para que cada distro não precisasse estar ciente das outras.
Consegui instalar o Arch e o Funtoo, mas não consegui configurar o OpenSUSE para instalar no subvolume /os/suse.
Eu tentei o seguinte:
- defina o último como subvolume padrão (como indicado tambémaqui) e disse ao OpenSUSE para não formatar a partição; a instalação pareceu ter sido bem-sucedida, mas não foi possível inicializar
- montou o subvolume em /mnt no sistema live de instalação e disse ao OpenSUSE para ignorar o fato; a instalação falhou quando tentou remontar a partição para a instalação real
- instalei o OpenSUSE em uma máquina virtual parecida com o ambiente de laptop, depois copiei todo o sistema para o subvolume e fiz os ajustes necessários no grub e suas configurações (aqueles que tive que fazer com Arch ou Funtoo); O grub foi carregado, mas o sistema inicializado entrou em pânico no kernel
Os ajustes no GRUB sobre os quais escrevi implicam o seguinte:
- chroot no subvolume (usando arch-chroot ouo procedimento para instalação do gentoo/funtoo)
- instale o grub na
/boot/efi
partição do sistema EFI (mas mantenha os dados do GRUB/boot
) - execute
grub-mkconfig -o /boot/grug/grub.cfg
para atualizar o bootloader
Alguém tem alguma ideia? Perdi algo?
Responder1
Pela minha experiência, o tratamento de subvolumes personalizados (por exemplo, diferentes da notação snapper/@) pelo instalador do OpenSUSE Leap 42.2/42.3 não funciona. Pior ainda, algumas ferramentas, como a instalação do bootloader, apresentam problemas. Por exemplo, no meu caso, o núcleo do grub estava apontando para /boot/grub..., mas deveria ser apenas /grub.. ao atualizar do chroot. Você pode verificar as configurações atuais com esta ferramenta:https://github.com/arvidjaar/bootinfoscript
De qualquer forma, aqui está uma maneira que uso para configurar após a instalação ou para backups inicializáveis.
Evite criar a dúzia de subvolumes pelo instalador, basta instalar por exemplo na raiz da partição/subvolume padrão (se funcionou).
Após a instalação, inicie o sistema de resgate e
- Mova os diretórios do sistema instalado para o subvolume desejado, de forma que você tenha a árvore normal do sistema de arquivos Linux abaixo desse subvolume. Corrija a pasta pessoal também, se necessário.
- Corrija o /etc/fstab, adicionando as opções subvol=/myrootsubvol apropriadas
- Monte a partição com o subvolume (futuro /), monte boot e monte boot/efi
Agora crie o segundo diretório fora do subvolume montado. Faça bind-mount de tudo nesse diretório.
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"
Agora use a abordagem chroot usual para arquivos
/mnt/temp_sys_prep
.No chrootvocê pode usargrub2-install --no-nvram --recheck --efi-directory=/boot/efi /dev/disk/by-id/scsi-SATA...
,grub2-mkconfig -o /boot/grub2/grub.cfg
,mkinitrd
Não tenho certeza sobre a ordem correta; mkinitrd provavelmente também chama grub.
- Saia do chroot e desmonte na ordem inversa. Verifique com a ferramenta novamente, se o núcleo do grub2 aponta para o caminho correto agora