Sie können, aber es ist keine gute Idee.
In GRUB würden Sie einen anderen Kernel und initrd
angeben Dateien für jede auf dem System installierte Distribution.
Die Boot-Konfiguration für eine Distribution kann jedoch mit der Konfiguration für die andere(n) Distribution(en) in Konflikt stehen, je nachdem, wie jede Distribution ihre Boot-Konfiguration festlegt und ihre Dateien in /boot
benennt . Dies könnte zu einer fehlerhaften Konfiguration führen und möglicherweise eine oder mehrere Distributionen nicht mehr booten. Besondere Vorsicht ist geboten, wenn Sie den Kernel aktualisieren oder die Boot-Einstellungen in einer der Distributionen ändern. Wenn es jedoch keine Konflikte gibt, sollten Sie beide Betriebssysteme ohne Probleme booten können.
Mir ist klar, dass dies ein bisschen spät für die Party ist, aber ich habe es gerade übernommen, um drei gleichzeitige Installationen und eine /boot
zu behalten Partition:
- Arch-Linux
- ubuntu 14.04
- ubuntu 16.04
Ich benutze Arch seit Jahren, war aber mit Ubuntu ziemlich unbekannt und war mir nicht sicher, wie ich es davon abhalten könnte, einen Bootloader zu installieren, also ließ ich es einfach. Für Arch habe ich syslinux
verwendet , nicht grub
daher kenne ich mich damit viel besser aus. Das ist zwar etwas Zu Beginn meines Experiments ist hier mein Verfahren:
- Identifizieren Sie die potenziell widersprüchlichen Dateien. Nachdem die Namenskonventionen von ubuntu vs. arch beachtet wurden, kam dies auf
vmlinuz
von 14.04 und 16.04 hinaus undininrd.img
, die gleich benannt sind (vielleicht abgesehen von der Versionsnummer, wenn sie zu unterschiedlichen Zeiten aktualisiert werden). Soweit ich weiß, sind sie kompatibel, aber ich habe mich entschieden, sie als nicht zu behandeln. - richten Sie
syslinux
ein Erstellen Sie wie üblich Einträge für jede Distribution (siehe unten) - Implementieren Sie nach der Aktualisierung einer der potenziell widersprüchlichen Distributionen eine Benennungsstrategie, um Probleme zu vermeiden
- einen Sicherungsplan haben
Wenn entweder Ubuntu den Kernel aktualisiert, erhalte ich zwei Schlüsseldateien:
/boot/initrd.img-x.x.x-xx-generic
/boot/vmlinuz-x.x.x-xx-generic
Für jeden der oben genannten Punkte hänge ich einfach _distro
an bis zum Ende, sowie eine statisch benannte Variante ersetzen, um meine syslinux.cfg
nicht zu ändern jedes Update (mehr unten gezeigt). Der Prozess würde wie folgt aussehen, wobei 14.04/Trusty als Beispiel verwendet wird und nur die interessierenden Dateien angezeigt werden.
$ 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
Da die Namenskonvention von Arch niemals in Konflikt gerät, bedeutet dies, dass ich am Ende 2 Backups mit dem genauen Namen initrd
habe und vmlinuz
Dateien zusammen mit zwei, die ich verwenden kann, um zu verhindern, dass mein syslinux.cfg
geändert wird die ganze Zeit. Die Schlüsseldateien sehen so aus (mit hinzugefügten Kommentaren):
$ 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
Zum Booten hier mein syslinux
Einträge:
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
Bisher habe ich grub
verlassen auf dem ubuntus und es beschwert sich bei jedem update aber es ist nichts schief gelaufen. Mein Backup-Plan war, mbr.bin
zu kopieren bis /boot/
(normalerweise befindet es sich in /usr/lib/syslinux...
auf Arch), sodass wenn grub
beschließt, meinen Bootloader zu überschreiben, kann ich mindestens dd
der syslinux
Bootloader zurück. Ich bin zu über 95 % davon überzeugt, dass meine Arch-Installation niemals langweilig wird (zumindest zum Booten), sodass ich fast immer damit booten und Ubuntus reparieren kann, wenn ich etwas falsch kopiert/benannt habe. Wahrscheinlich werde ich eine frühere Version von jedem initrd/vmlinuz
behalten herum, damit ich ändern kann, welche beim Booten geladen wird, falls etwas mit initramfs
schief geht verarbeiten.
Hoffentlich ist damit relativ klar, worum es geht. Ich könnte wahrscheinlich Links, eine Art Post-Update-Skript usw. zur Automatisierung verwenden, bin aber noch nicht so weit gekommen.
Die akzeptierte Antwort zeigt, dass etwas schief gehen könnte, aber da ich nach Beispielen von anderen gegoogelt habe, die dies tun, und nur solche Antworten gefunden habe (im Grunde "möglich, aber nicht"), dachte ich, ich würde ein konkretes Beispiel hinzufügen von wie man konnte Richten Sie so etwas ein.
Ich persönlich bin ziemlich begeistert davon. Ich habe eine Boot-Partition und, wie Sie vielleicht bemerkt haben, drei Distributionen nebeneinander auf einem btrfs
Partition. Keine Notwendigkeit, Größen vorab zuzuweisen, keine Sorgen darüber, ein Setup nicht zu mögen und es wegzublasen (was mit einer unbenutzten Partition zurückbleibt, die herumschwebt) und keine Notwendigkeit für einen Haufen logischer Volumes, nur um eine Linux-Partition zu booten, wenn ich bereits haben ein Bootloader!
Hoffe, das hilft jemandem.