GNU/Linux >> Znalost Linux >  >> Linux

Sdílejte / bootovací oddíl mezi distribucemi

Můžete, ale není to skvělý nápad.

V GRUBu byste měli zadat jiné jádro a initrd soubory pro každou distribuci nainstalovanou v systému.

Konfigurace spouštění pro jednu distribuci však může být v konfliktu s konfigurací pro ostatní distribuce v závislosti na tom, jak každá distribuce nastaví svou konfiguraci spouštění a pojmenuje své soubory v /boot . To by mohlo vést ke zpackané konfiguraci a potenciálně nechat jedno nebo více distribucí nezavést. Zvláštní opatrnosti je třeba věnovat aktualizaci jádra nebo změně nastavení spouštění v kterémkoli z distribucí. Pokud však nedojde ke konfliktům, měli byste být schopni zavést oba operační systémy bez problémů.


Uvědomuji si, že je na večírek trochu pozdě, ale právě jsem to vzal, abych si ponechal tři souběžné instalace a jednu /boot oddíl:

  • arch linux
  • ubuntu 14.04
  • ubuntu 16.04

Arch jsem používal roky, ale nebyl jsem s ubuntu obeznámen a nebyl jsem si jistý, jak mu zabránit v instalaci bootloaderu, tak jsem to nechal. Pro arch jsem používal syslinux , nikoli grub tak to znám mnohem víc. I když je to poněkud na začátku mého experimentu, zde je můj postup:

  • identifikujte potenciálně konfliktní soubory. Poté, co jsme si všimli konvencí pojmenování ubuntu vs. arch, to se snížilo na 14.04 a 16.04 vmlinuz a ininrd.img , které se jmenují stejně (možná kromě čísla verze, pokud se aktualizují v různých časech). Vím, že jsou kompatibilní, ale rozhodl jsem se s nimi zacházet jako s ne.
  • nastavení syslinux jako obvykle vytváření záznamů pro každé distro (zobrazeno níže)
  • po aktualizaci kterékoli z potenciálně konfliktních distribucí implementujte strategii pojmenování, abyste se vyhnuli problémům
  • mít plán zálohování

Pokud některé z ubuntu aktualizuje jádro, dostanu dva klíčové soubory:

  • /boot/initrd.img-x.x.x-xx-generic
  • /boot/vmlinuz-x.x.x-xx-generic

Ke každému z výše uvedených jednoduše připojím _distro do konce a také nahradit staticky pojmenovanou variantu, aby nedošlo ke změně mého syslinux.cfg každá aktualizace (více uvedeno níže). Proces by vypadal takto, jako příklad použije 14.04/Trusty a zobrazí pouze soubory, které vás zajímají.

$ 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

Protože konvence pojmenování archu nikdy nejsou v rozporu, znamená to, že skončím se 2 zálohami/přesně pojmenovanými initrd a vmlinuz soubory spolu se dvěma, které mohu použít, abych zabránil změně mého syslinux.cfg po celou dobu. Klíčové soubory jsou podobné (s přidanými komentáři):

$ 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

Pro bootování, zde je můj syslinux záznamy:

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

Zatím jsem nechal grub na ubuntus a stěžuje si při každé aktualizaci, ale nic se nezkazilo. Můj plán zálohování byl zkopírovat mbr.bin na /boot/ (obvykle se nachází v /usr/lib/syslinux... na oblouku), takže pokud grub se rozhodl přepsat můj bootloader, mohu alespoň dd syslinux bootloader zpět. Jsem si na 95 %+ jistý, že moje instalace archu se nikdy nezhroutí (alespoň při bootování), takže téměř vždy budu moci nabootovat a opravit ubuntus, pokud jsem něco zkopíroval/pojmenoval špatně. Pravděpodobně si ponechám jednu předchozí verzi každého initrd/vmlinuz kolem, abych mohl změnit, který z nich se načte při bootování pro případ, že se něco pokazí s initramfs proces.

Snad je to relativně jasné, co se děje. Pravděpodobně bych mohl použít odkazy, nějaký druh skriptu po aktualizaci atd. k automatizaci, ale zatím jsem se tam nedostal.

Přijatá odpověď odhaluje, že by se věci mohly pokazit, ale protože jsem prohledal příklady jiných, kteří to dělají, a našel jsem pouze takové odpovědi (v podstatě „možné, ale ne“), napadlo mě, že přidám hmatatelný příklad jak by mohl nastavit něco takového.

Osobně jsem z toho docela nadšený. Mám jeden spouštěcí oddíl a jak jste si mohli všimnout, tři distribuce vedle sebe na jednom btrfs rozdělit. Není třeba předem přidělovat velikosti, nemusíte se obávat, že se vám jedno nastavení nebude líbit a zničí ho (zůstane s nevyužitým oddílem plovoucím kolem) a není potřeba hromada logických svazků jen pro zavedení linuxového oddílu, když už mít bootloader!

Doufám, že to někomu pomůže.


Linux
  1. Rozdíl mezi /bin/false &/sbin/nologin

  2. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  3. Oddíl /boot opravdu pro?

  1. Kdy mám použít /dev/shm/ a kdy /tmp/?

  2. Je dobré vytvořit samostatný oddíl pro /boot?

  3. Proč dávat věci jiné než /home do samostatného oddílu?

  1. Linux:Rozdíl mezi /dev/console, /dev/tty a /dev/tty0?

  2. Rozdíl mezi /bin a /usr/bin

  3. Jaký je rozdíl mezi /tmp a /run?