Eu percebo que isso é um pouco tarde para a festa, mas eu levei isso para manter três instalações simultâneas e uma partição /boot
:
- arch linux
- ubuntu 14.04
- ubuntu 16.04
Eu usei arch por anos, mas não estava familiarizado com o ubuntu e não tinha certeza de como impedi-lo de instalar um gerenciador de inicialização, então deixei. Para o arco, eu tenho usado syslinux
, não grub
, então estou muito mais familiarizado com isso. Embora isso seja um pouco no início da minha experiência, aqui está o meu procedimento:
- identifica os arquivos potencialmente conflitantes. Depois de observar as convenções de nomenclatura do ubuntu vs. arch, isso ficou com 14.04 e 16.04
vmlinuz
e ininrd.img
, que são nomeadas da mesma forma (talvez além do número da versão, se elas forem atualizadas em momentos diferentes). Pelo que sei, são compatíveis, mas optei por tratá-los como não.
-
configuração
syslinux
como de costume, criando entradas para cada distro (mostradas abaixo)
- após a atualização de qualquer uma das distros potencialmente conflitantes, implemente uma estratégia de nomenclatura para evitar problemas
- tem um plano de backup
Se o ubuntu atualiza o kernel, eu recebo dois arquivos chave:
-
/boot/initrd.img-x.x.x-xx-generic
-
/boot/vmlinuz-x.x.x-xx-generic
Para cada um dos itens acima, basta anexar _distro
ao final, além de substituir uma variante nomeada estaticamente para não alterar minha syslinux.cfg
de cada atualização (mais mostrada abaixo). O processo ficaria assim, usando 14.04 / Trusty como exemplo e mostrando apenas os arquivos de interesse.
$ cd /boot
$ sudo mv ./initrd.img-4.4.0-62-generic ./initrd.img-4.4.0-62-generic_trusty
$ sudo cp ./initrd.img-4.4.0-62-generic_trusty ./initrd-trusty.img
$ sudo mv ./vmlinuz-4.4.0-62-generic ./vmlinuz-4.4.0-62-generic_trusty
$ sudo cp ./vmlinuz-4.4.0-62-generic_trusty vmlinuz-trusty
Como a convenção de nomenclatura do arch nunca entra em conflito, isso significa que eu acabei com dois arquivos initrd
e vmlinuz
de backup / com precisão, além de dois que posso usar para não alterar meu syslinux.cfg
o tempo todo. Os arquivos chave são assim (com comentários adicionados):
$ ls /boot/
initramfs-linux.img ## arch main initramfs
initramfs-linux-fallback.img ## arch fallback initramfs
initrd.img-4.4.0-62-generic_trusty ## named recent 14.04 initrd
initrd.img-4.4.0-62-generic_xenial ## same for xenial (16.04)
initrd-trusty.img ## statically named initrd
initrd-xenial.img
vmlinuz-4.4.0-62-generic_trusty ## named vmlinuz
vmlinuz-4.4.0-62-generic_xenial
vmlinuz-linux ## arch's vmlinuz
vmlinuz-trusty ## statically named vmlinuz
vmlinuz-xenial
Para a inicialização, veja minhas syslinux
entradas:
LABEL arch
MENU LABEL arch
LINUX ../vmlinuz-linux
APPEND luks-options-here rootflags=compress=lzo,discard,ssd,subvol=arch rw
INITRD ../intel-ucode.img,../initramfs-linux.img
LABEL xenial
MENU LABEL xenial
LINUX ../vmlinuz-xenial
APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=xenial quiet splash $vt_handoff
INITRD ../initrd-xenial.img
LABEL trusty
MENU LABEL trusty
LINUX ../vmlinuz-trusty
APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=trusty quiet $vt_handoff
INITRD ../initrd-trusty.img
Até agora eu deixei grub
no ubuntus e ele reclama a cada atualização, mas nada deu errado. Meu plano de backup era copiar mbr.bin
para /boot/
(normalmente ele reside em /usr/lib/syslinux...
no arquivo) para que, se grub
decidir substituir meu gerenciador de inicialização, eu possa pelo menos dd
o syslinux
bootloader de volta. Estou 95% + confiante de que a minha instalação em arco nunca será executada (pelo menos para inicializar), então eu quase sempre serei capaz de inicializar isso e consertar o ubuntus se eu copiei / nomeei algo incorretamente. É provável que eu mantenha uma versão anterior de cada initrd/vmlinuz
para que eu possa alterar qual delas é carregada na inicialização, caso algo dê errado com o processo initramfs
.
Espero que esteja relativamente claro o que está acontecendo. Eu provavelmente poderia usar links, algum tipo de script pós-atualização, etc. para automatizar, mas ainda não cheguei lá.
A resposta aceita revela que as coisas podem dar errado, mas desde que eu pesquisei por exemplos de outros fazendo isso, e só encontrei respostas como esta (basicamente, "possível, mas não") eu imaginei adicionar um exemplo tangível de como um
poderia definir algo assim.
Pessoalmente, estou muito animado com isso. Eu tenho uma partição de inicialização e, como você deve ter notado, três distribuições lado-a-lado em uma partição btrfs
. Não há necessidade de pré-alocar tamanhos, não se preocupe em não gostar de uma configuração e explodi-la (ficar à esquerda com uma partição não usada flutuando) e não há necessidade de um monte de volumes lógicos apenas para inicializar uma partição linux quando eu já > ter um gerenciador de inicialização!
Espero que isso ajude alguém.