GNU/Linux >> Linux Esercitazione >  >> Linux

Condividi /boot partizione tra distribuzioni

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


Linux
  1. Differenza tra /bin/false e /sbin/nologin

  2. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  3. Ridimensionamento della partizione di avvio

  4. Perché la partizione di avvio ext2 da 100 MB è consigliata per Linux?

  5. È sempre necessaria una partizione /boot?

Debian – Spostare /var, /home in una partizione separata?

È utile creare una partizione separata per /boot?

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

Qual è la dimensione consigliata per una partizione Linux /boot?

Differenze tra /dev/sda e /dev/sda1