![Como compartilhar uma partição de inicialização EFI](https://rvso.com/image/1520700/Como%20compartilhar%20uma%20parti%C3%A7%C3%A3o%20de%20inicializa%C3%A7%C3%A3o%20EFI.png)
Eu tenho duas instalações do Archlinux em um sistema EFI configurado com gummiboot. Um está enraizado em /dev/sda2, o outro em /dev/sdb1. Ambos usam /dev/sda1, a partição do sistema EFI, como partição /boot, mas colocam suas imagens de kernel em locais diferentes:
/boot/loader/entries/arch.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/sda2 rw
/boot/loader/entries/arch-here.conf:
title HERE Arch Linux
linux /here-img/vmlinuz-linux
initrd /here-img/intel-ucode.img
initrd /here-img/initramfs-linux.img
options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw
Tudo bem até que eu atualizei o kernel de 4.8.13 para 4.9 no sdb
. Na próxima vez que inicializei sda
, ele falhou com
Warning: /lib/modules/4.8.13-1-ARCH/modules.devname not found
...
ERROR: device '/dev/sda2 not found. Skipping fsck.
...
Inicializei novamente sdb
, reinstalei o kernel 4.8.13 e descobri que poderia inicializar sda
novamente. No entanto, agora eu não conseguia mais inicializar sdb
, pois ele não conseguiu carregar o gancho de criptografia necessário para abrir/dev/sdb1.
Resolvi isso fazendo chroot em /dev/sdb1 sda
e instalando o 4.9 novamente. Isso me permitiu inicializar, sdb
mas não sda
.
Agora estou preso em um loop onde preciso reconstruir minha imagem do kernel toda vez que quiser alternar entre instalações. Parece que os dois kernels estão interferindo de alguma forma.
Aqui estão as etapas que executo na minha sda
instalação sempre que desejo inicializar sdb
:
sudo cryptsetup open /dev/sdb1 cryptroot
sudo mount /dev/mapper/cryptroot /mnt/
sudo mount /dev/sda1 /mnt/boot/
chroot /mnt/
sudo pacman -U /var/cache/pacman/pkg/linux-4.8.13-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-375.20-3-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-utils-375.20-3-x86_64.pkg.tar.xz
As etapas que sigo sdb
quando quero mudar sda
são semelhantes, mas falham com
/lib/modules/4.8.13-1-ARCH is not a valid kernel module directory
Eu resolvo isso vinculando /lib/modules/4.9-1-ARCH a /lib/modules/4.8.13-1-ARCH.
Tenho certeza de que estou fazendo pelo menos uma, senão muitas coisas erradas aqui (esse link simbólico parece um hack horrível). Parece que meus kernels estão interferindo de alguma forma. Como posso consertar isso?
Responder1
Eu conseguiObter ajudanos fóruns do Arch e queria compartilhá-lo aqui.
Embora cada sistema estivesse gravando em uma imagem initramfs diferente, ambos estavam sobrescrevendo o mesmo kernel. OlinuxO pacote incluído nos repositórios sempre coloca a imagem em /boot/vmlinuz-linux. Algumas opções foram discutidas:
- Instale um pacote Linux principal diferente em um sistema.
- Crie um pacote Linux personalizado a partir do AUR que renomeie o kernel.
- Use uma partição EFI separada para cada sistema.
Optei por 1, pois parecia o mais simples. A instalação linux-lts
em vez de linux
em um sistema evitou a interferência dos kernels. As entradas de inicialização agora ficam assim:
/boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/sda2 rw
/boot/loader/entries/arch-here.conf
title HERE Arch Linux
linux /vmlinuz-linux-lts
initrd /initramfs-linux-lts.img
options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw
Observe que os usuários da nvidia que desejam adotar essa abordagem precisarão instalar nvidia-lts
em vez do nvidia
.