Puoi, ma non è una grande idea.
In GRUB, quello che dovresti fare è specificare kernel e initrd
diversi file per ogni distribuzione installata sul sistema.
Tuttavia, la configurazione di avvio per una distro potrebbe entrare in conflitto con la configurazione per le altre distro, a seconda di come ciascuna distro imposta la propria configurazione di avvio e denomina i propri file in /boot
. Ciò potrebbe portare a una configurazione incasinata e potenzialmente lasciare una o più distribuzioni non avviabili. Prestare particolare attenzione quando si aggiorna il kernel o si modificano le impostazioni di avvio in una qualsiasi delle distribuzioni. Se non ci sono conflitti, tuttavia, dovresti essere in grado di avviare entrambi i sistemi operativi senza problemi.
Mi rendo conto che è un po' tardi per la festa, ma l'ho accettato solo per mantenere tre installazioni simultanee e una /boot
partizione:
- archlinux
- ubuntu 14.04
- ubuntu 16.04
Ho usato arch per anni, ma non avevo familiarità con Ubuntu e non ero sicuro di come impedirgli di installare un bootloader, quindi l'ho lasciato fare. Per arch, ho usato syslinux
, non grub
quindi mi è molto più familiare. Anche se questo è un po' all'inizio del mio esperimento, ecco la mia procedura:
- identificare i file potenzialmente in conflitto. Dopo aver notato le convenzioni di denominazione di ubuntu vs. arch, questo è sceso al
vmlinuz
di 14.04 e 16.04 eininrd.img
, che hanno lo stesso nome (forse a parte il numero di versione se si aggiornano in momenti diversi). Per quanto ne so sono compatibili, ma ho scelto di trattarli come no. - imposta
syslinux
come al solito, creando voci per ogni distribuzione (mostrate sotto) - all'aggiornamento di una delle distribuzioni potenzialmente in conflitto, implementa una strategia di denominazione per evitare problemi
- avere un piano di riserva
Se Ubuntu aggiorna il kernel, ottengo due file chiave:
/boot/initrd.img-x.x.x-xx-generic
/boot/vmlinuz-x.x.x-xx-generic
Per ciascuno dei precedenti, aggiungo semplicemente _distro
alla fine, oltre a sostituire una variante con nome statico per evitare di modificare il mio syslinux.cfg
ogni aggiornamento (più mostrato di seguito). Il processo sarebbe simile a questo, utilizzando 14.04/Trusty come esempio e mostrando solo i file di 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
Poiché la convenzione di denominazione di arch non è mai in conflitto, ciò significa che finisco con 2 backup/chiamati con precisione initrd
e vmlinuz
file insieme a due che posso usare per evitare di modificare il mio syslinux.cfg
tutto il tempo. I file chiave sono così (con commenti aggiunti):
$ 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
Per l'avvio, ecco il mio syslinux
voci:
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
Finora ho lasciato grub
su Ubuntu e si lamenta ad ogni aggiornamento ma nulla è andato storto. Il mio piano di riserva era copiare mbr.bin
a /boot/
(di solito risiede in /usr/lib/syslinux...
su arch) in modo che if grub
decide di sovrascrivere il mio bootloader posso almeno dd
il syslinux
bootloader indietro. Sono sicuro al 95% + che la mia installazione di Arch non verrà mai interrotta (almeno per l'avvio), quindi sarò quasi sempre in grado di avviarlo e correggere Ubuntu se ho copiato/nominato qualcosa in modo errato. Probabilmente terrò una versione precedente di ogni initrd/vmlinuz
in giro in modo da poter cambiare quale viene caricato all'avvio nel caso qualcosa vada storto con il initramfs
processo.
Spero che sia relativamente chiaro cosa sta succedendo. Probabilmente potrei usare link, una sorta di script post-aggiornamento, ecc. per automatizzare, ma non ci sono ancora arrivato.
La risposta accettata rivela che le cose potrebbero andare storte, ma dal momento che ho cercato su Google esempi di altri che lo fanno e ho trovato solo risposte come questa (in pratica, "possibile, ma non farlo") ho pensato di aggiungere un esempio tangibile di come si potrebbe impostare qualcosa di simile.
Personalmente, ne sono piuttosto entusiasta. Ho una partizione di avvio e, come avrai notato, tre distribuzioni affiancate su un btrfs
partizione. Non è necessario pre-allocare le dimensioni, non preoccuparti di non gradire una configurazione e di spazzarla via (rimanere con una partizione inutilizzata che fluttua in giro) e non c'è bisogno di un mucchio di volumi logici solo per avviare una partizione Linux quando già avere un bootloader!
Spero che questo aiuti qualcuno.