Vous pouvez, mais ce n'est pas une bonne idée.
Dans GRUB, ce que vous feriez est de spécifier un noyau différent et initrd
fichiers pour chaque distribution installée sur le système.
Cependant, la configuration de démarrage d'une distribution peut entrer en conflit avec la configuration des autres distributions, selon la façon dont chaque distribution définit sa configuration de démarrage et nomme ses fichiers en /boot
. Cela pourrait conduire à une configuration erronée et potentiellement empêcher une ou plusieurs distributions de démarrer. Une attention particulière doit être portée lors de la mise à jour du noyau ou de la modification des paramètres de démarrage dans l'une des distributions. S'il n'y a pas de conflits, cependant, vous devriez pouvoir démarrer les deux systèmes d'exploitation sans problème.
Je me rends compte que c'est un peu tard pour la fête, mais j'ai juste pris cela pour garder trois installations simultanées et une /boot
partition :
- arch linux
- ubuntu 14.04
- ubuntu 16.04
J'utilise Arch depuis des années, mais je ne connaissais pas du tout Ubuntu et je ne savais pas comment l'empêcher d'installer un chargeur de démarrage, alors je l'ai laissé faire. Pour arch, j'utilise syslinux
, pas grub
donc je m'y connais beaucoup plus. Bien que ce soit un peu au début de mon expérience, voici ma procédure :
- identifier les fichiers potentiellement conflictuels. Après avoir noté les conventions de dénomination d'ubuntu par rapport à arch, cela se résumait à 14.04 et 16.04's
vmlinuz
etininrd.img
, qui portent le même nom (peut-être à part le numéro de version s'ils sont mis à jour à des moments différents). Pour autant que je sache, ils sont compatibles, mais j'ai choisi de les traiter comme non. - configurer
syslinux
comme d'habitude, créer des entrées pour chaque distribution (voir ci-dessous) - lors de la mise à jour de l'une des distributions potentiellement conflictuelles, implémentez une stratégie de nommage pour éviter les problèmes
- avoir un plan de secours
Si l'un ou l'autre Ubuntu met à jour le noyau, j'obtiens deux fichiers clés :
/boot/initrd.img-x.x.x-xx-generic
/boot/vmlinuz-x.x.x-xx-generic
Pour chacun des éléments ci-dessus, j'ajoute simplement _distro
à la fin, ainsi que remplacer une variante nommée statiquement pour éviter de changer mon syslinux.cfg
chaque mise à jour (voir ci-dessous). Le processus ressemblerait à ceci, en utilisant 14.04/Trusty comme exemple et en n'affichant que les fichiers qui vous intéressent.
$ 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
Étant donné que la convention de dénomination d'arch n'est jamais en conflit, cela signifie que je me retrouve avec 2 sauvegardes/nommés avec précision initrd
et vmlinuz
fichiers avec deux que je peux utiliser pour éviter de changer mon syslinux.cfg
tout le temps. Les fichiers clés sont comme suit (avec des commentaires ajoutés) :
$ 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
Pour démarrer, voici mon syslinux
entrées :
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
Jusqu'à présent, il me reste grub
sur l'ubuntus et il se plaint à chaque mise à jour mais rien n'a mal tourné. Mon plan de sauvegarde consistait à copier mbr.bin
à /boot/
(généralement, il réside dans /usr/lib/syslinux...
sur arc) de sorte que si grub
décide d'écraser mon bootloader je peux au moins dd
le syslinux
chargeur de démarrage en arrière. Je suis convaincu à plus de 95% que mon installation arch ne sera jamais interrompue (au moins pour démarrer), donc je pourrai presque toujours démarrer dessus et réparer Ubuntu si j'ai copié/nommé quelque chose de manière incorrecte. Je garderai probablement une ancienne version de chaque initrd/vmlinuz
pour que je puisse changer celui qui est chargé au démarrage en cas de problème avec le initramfs
processus.
J'espère que c'est relativement clair ce qui se passe. Je pourrais probablement utiliser des liens, une sorte de script post-mise à jour, etc. pour automatiser, mais je n'y suis pas encore arrivé.
La réponse acceptée révèle que les choses pourraient mal tourner, mais comme j'ai cherché sur Google des exemples d'autres personnes faisant cela, et que je n'ai trouvé que des réponses comme celle-ci (en gros, "possible, mais pas"), j'ai pensé que j'ajouterais un exemple tangible de comment on pourrait configurez quelque chose comme ça.
Personnellement, je suis assez excité à ce sujet. J'ai une partition de démarrage et, comme vous l'avez peut-être remarqué, trois distributions côte à côte sur une btrfs
cloison. Pas besoin de pré-allouer des tailles, pas de soucis de ne pas aimer une configuration et de la faire sauter (se retrouver avec une partition inutilisée flottant autour) et pas besoin d'un tas de volumes logiques juste pour démarrer une partition linux quand je suis déjà avoir un chargeur de démarrage !
J'espère que cela aidera quelqu'un.