Přechod na GRUB2
Cílem tohoto průvodce je poskytnout vám návod na hladký přechod z GRUB Legacy na GRUB2.
Na pozadí
Co je to GRUB?
Grub je jeden z nejběžněji používaných zavaděčů na ne-embeddeded strojích s Linuxem. GRUB má za úkol nahrát linuxové jádro z disku do paměti a začít s jeho spouštěním.
Proč tedy přejít?
Za prvé GRUB Legacy již není udržován a jako takový proto ani není nadále aktualizován. GRUB Legacy byl vytvořen v době, kdy měli vývojáři za to, že lze bezpečně učinit určité předpoklady, které se dnes již nezakládají na pravdě. Například, GRUB Legacy neumožňuje bootovat z disků větších než 2TB a rovněž předpokládá, že se neobjeví nové souborové systémy jako náhrada za /boot.
GRUB2 má za cíl poskytnout větší robustnost, přenositelnost, více možností a rovněž je udržován s čistějším kódem. GRUB2 podporuje více hardwarových konfigurací, více souborových systémů a způsobů uspořádání zařízení, než jeho předchůdce.
Přechod na GRUB2
Přechod na GRUB2 je velmi přímočarý: bude přibrán správcem balíčků během během provádění běžného upgradu. Pokud by nebyl vtažen automaticky, lze kdykoli instalovat sys-boot/grub:2
.
root #
emerge --ask sys-boot/grub:2
Bootovací zařízení
První důležitou částí, je určení bootovacího zařízení. Pro spoustu lidí jím bude /dev/sda. Nejjednodušší cestou, jak zjistit tuto informaci, je podívat se na to jakým způsobem je nastaven současný GRUB Legacy nahlédnutím do /boot/grub/grub.conf. Příklad takového souboru najdete níže.
Abyste mohli tyto soubory otevřít, musíte připojit /boot. Připojení /boot lze provést jednoduše příkazem
mount /boot
.The grub.conf file will look something like this:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
Ve výše uvedeném souboru tak vidíme, že (hd0)
je bootovacím diskem, avšak musíme je přiřadit k reálnému zařízení. To zjistíme pohledem do /boot/grub/device.map. Příklad takového souboru je uveden níže.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
Jestliže máte podezření, že /boot/grub/device.map není správný, můžete spustit
grub-install --recheck /dev/sda
pro znovu vytvoření souboru.Na základě výše uvedeného souboru tak víme, že /dev/sda je bootovacím zařízením.
Instalace a konfigurace GRUB2
Dalším krokem je instalace a konfigurace na vašem /boot oddíle, aniž byste odstranili GRUB Legacy z MBR. Níže uvedený příklad používá /dev/sda, vy jej však musíte vyměnit za cestu vedoucí k vašemu bootovacímu zařízení. První krok nainstaluje soubory GRUB2 do /boot/grub, zatímco druhý krok vyhledá dostupná jádra a vygeneruje příslušný konfigurační soubor do /boot/grub/grub.cfg. Pokud hodláte provést ruční konfiguraci, druhý krok vynechejte.
First install the necessary GRUB2 files to /boot/grub.
root #
grub-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
The
--grub-setup=/bin/true
option tells grub-install to not install GRUB2 in the MBR. If this option is omitted, GRUB Legacy will be overwritten and chainloading GRUB2 from GRUB Legacy later on will not be possible.Now we can scan the available kernels and generate a suitable config file to /boot/grub/grub.cfg. Skip this step when using a Manual Configuration.
root #
grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ... Found linux image: /boot/kernel-3.2.12-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo done
GRUB 2 používá konfigurační soubor /boot/grub/grub.cfg zatímco GRUB Legacy používá /boot/grub/grub.conf tak se prosím ujistěte, že nepoužíváte omylem starý soubor, npř. použítím tab-doplnění když zde ještě starý soubor existuje.
grub2-mkconfig
má přísné požadavky na pojmenování souborů obsahujících jádro a initramfs. Jádro musí být pojmenováno stylem kernel-${verze}
nebo vmlinuz-${verze}
zatímco initramfs musí být pojmenován jako initramfs-${verze}.img
,initramfs-genkernel-${verze}
,initramfs-genkernel-${arch}-${verze}
,initrd-${verze}.img
,initrd.img-${verze}
,initrd-${verze}.gz
, nebo initrd-${verze}
. Společně s ${verzí}, musí pojmenování souboru souhlasit s pojmenováním příslušného souboru jádra, které je k dispozici v /boot .Soubor /etc/default/grub řídí chod
grub2-mkconfig
. Pokud potřebujete předat parametry jádru (například pokud používáte genkernel a bootujete z LVM nebo softwarového RAID pole), musíte upravit tento soubor před generováním /boot/grub/grub.cfg tímto způsobem:
root #
nano/etc/default/grub
GRUB_CMDLINE_LINUX
.root #
nano /etc/default/grub
Have a look at GRUB configuration on the Gentoo Wiki or the official GRUB2 manual to decide how to modify the file. Most users will need to change GRUB_CMDLINE_LINUX
to specify parameters to be passed on the kernel command line.}}
Zkouška nastavení spuštěním GRUB2 skrze GRUB Legacy
Protože špatná konfigurace GRUB může vést k tomu, že systém se stane nespustitelným, chceme nastavení GRUB2 otestovat, než jej učiníme trvalým. Proto spustíme GRUB2 přes GRUB Legacy. To uděláme tak, že přidáme novou položku do /boot/grub/grub.conf. Viz příklad níže.
Nezapomeňte, že hodnota root může být jiná, než
(hd0,0)
použitá v příkladu. Proto se ujistěte, že jste použili totožnou hodnotu jako ve svém původním /boot/grub/grub.conf .default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub/i386-pc/core.img
boot
title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
Nyní byste měli restartovat svůj stroj a v menu GRUB vybrat možnost GRUB2 Chainload
jakmile váš počítač začne bootovat. Zobrazí se vám další menu GRUB, které bude nahoře označené jako GRUB 2.0.0 nebo vyšší a zobrazí rovněž dostupná jádra k zavedení. Pokud by tento postup nefungoval, jednoduše restartujte systém a vyberte z menu obvyklou bootovací položku namísto GRUB2 Chainload
.
Výměna a odstranění GRUB Legacy
Pokud vše úspěšně fungovalo, můžete nyní vyměnit GRUB Legacy a odstranit jej ze systému.
Protože jste restartovali systém, možná bude nutné opět připojit /boot. Ujistěte se také, že používáte správné bootovací zařízení namísto /dev/sda .
As previously mentioned, if GRUB2 was emerged with the
multislot
USE flag then grub2-install must be used instead of grub-install. In this case, after GRUB Legacy is removed from the system in the next step, GRUB2 should be re-emerged without the multislot
USE flag so that grub-install and grub-mkconfig can become GRUB2 commands.root #
grub-install /dev/sda
Installation finished. No error reported.
sys-boot/grub:0
. root #
emerge -avC "=sys-boot/grub-0.97*"
root #
emerge --ask -vc sys-boot/grub:0
The migration is now complete.
Údržba GRUB2
Pokaždé, když nainstalujete nové jádro, musíte provést následující krok, aby bylo ze strany GRUB2 rozpoznáno (pokud nepoužíváte ruční konfiguraci).
Oddíl /boot musí být připojen.
root #
grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ... Found linux image: /boot/kernel-3.3.8-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo Found linux image: /boot/kernel-3.2.12-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo done
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Cardoe
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.