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
aininrd.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.