GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Teilen Sie die /boot-Partition zwischen Distributionen

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 und ininrd.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.


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  3. Die /boot-Partition wirklich?

  4. Debian – /var, /home auf separate Partition verschieben?

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Warum 100 MB ext2-Startpartition für Linux empfohlen?

Ist es gut, eine separate Partition für /boot zu erstellen?

Warum andere Dinge als /home auf eine separate Partition legen?

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?

Was ist die empfohlene Größe für eine Linux /boot-Partition?

Unterschiede zwischen /dev/sda und /dev/sda1