GRUB2 migráció
Ez az útmutató utasításokat tartalmaz a GRUB Legacy bootloaderről a GRUB bootloaderre történő zökkenőmentes áttéréshez.
Háttér
Mi az a GRUB?
A GRUB az egyik leggyakrabban használt boot loader (operációs rendszert rendszerbetöltő) a nem-beágyazott Linux számítógépeken. A GRUB szerepe az, hogy lehetővé tegye a Linux kernel számára a betöltődést az adatóhordozóról a munkamemóriába, és elindítsa onnan a Linux kernel végrehajtódását.
Miért érdemes áttérni rá?
Először is, a GRUB Legacy már nincs karbantartva, így a hivatalos fejlesztőktől már nem kap több frissítést. A GRUB Legacy-t olyan időszakban hozták létre, amikor a fejlesztők több olyan feltételezést biztonságosnak tartottak, amelyek ma már nem állják meg a helyüket. Például a GRUB Legacy nem képes 2 TiB méretűnél nagyobb adathordozókról elindulni, és nem képes azt feltételezi, hogy újabb fájlrendszerek felváltják a /boot könyvtárat.
A GRUB2 célja, hogy robusztusabb, hordozhatóbb és erősebb legyen, továbbá tisztább kódbázissal rendelkezzen. A GRUB2 több hardverbeállítást, több fájlrendszert és több adathordozó-elrendezést támogat, mint az elődje.
Migrálás a GRUB2-re
Áttérni a GRUB2-re meglehetősen egyszerű folyamat: A szoftvercsomag-kezelő részeként a szokásos frissítési folyamat során automatikusan be fog kerülni a frissítésbe. Ha nem kerül be automatikusan, akkor bármikor telepíteni lehet a sys-boot/grub:2
szoftvercsomagatom segítségével.
root #
emerge --ask sys-boot/grub:2
Boot adathordozó
Az első fontos lépés, hogy megértsük, melyik adathordozó a bootolható. Azok számára, akik követték a Gentoo kézikönyvet, ennek a meghajtónak /dev/sda (újabb számítógépeken /dev/nvme0n1) adathordozónak kell lennie. Azok számára, akik bizonytalanok, a legegyszerűbb módja annak, hogy ezt megállapítsák, az a meglévő GRUB Legacy beállítás áttekintése. A /boot/grub/grub.conf fájl megtekintése az elsődleges hely, ahol ellenőrizni lehet.
Győződjön meg arról, hogy a /boot partíció fel van csatolva a fájlrendszerbe, hogy meg tudja tekinteni ezeket a fájlokat. Ennek olyan egyszerűnek kell lennie, mint:
root #
mount /boot
A grub.conf fájl valahogy így fog kinézni:
/boot/grub/grub.conf
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
A fenti fájl alapján megállapítható, hogy a (hd0)
a boot adathordozó, de ezt egy valós adathordozóhoz kell hozzárendelni. Ennek megállapításához nézze meg a /boot/grub/device.map fájlt. Egy példa található az alábbiakban.
/boot/grub/device.map
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
Ha Ön azt feltételezi, hogy a /boot/grub/device.map fájl nem pontos, akkor futtassa a következő parancsot a fájl újbóli legenerálásához:
root #
grub-install --recheck /dev/sda
A fenti fájl alapján tudjuk, hogy a /dev/sda a boot adathordozó.
GRUB2 telepítése és beállítása
A következő lépés a GRUB2 telepítése és beállítása a /boot partícióhoz anélkül, hogy eltávolítanánk a GRUB Legacy-t az adathordozónak a Master Boot Record-jából (MBR). Az alábbi példa a /dev/sda adathordozót használja — cserélje ki a megfelelő boot adathordozónak az elérési útjára.
Először telepítse a szükséges GRUB2 fájlokat a /boot/grub könyvtárba.
root #
grub-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
A
--grub-setup=/bin/true
opció azt mondja a grub-install parancsnak, hogy ne telepítse a GRUB2-t az MBR-be. Ha ezt az opciót kihagyjuk, akkor a GRUB Legacy felülíródik, és a későbbi GRUB2 láncindítás a GRUB Legacy-ből a beállítás teszteléséhez nem lesz lehetséges.A most rendelkezésre álló kernelek szkennelésével elkészíthetünk egy megfelelő beállításfájlt a /boot/grub/grub.cfg számára. Ezt a lépést kihagyhatja, ha kézi beállítást használ.
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
A GRUB2 a /boot/grub/grub.cfg beállításfájlt használja, míg a GRUB Legacy a /boot/grub/grub.conf beállításfájlt használta. Ezért ügyeljen arra, hogy véletlenül ne használja a régi fájlt, például tab-kiegészítéssel, ha a régi fájl még mindig ott tartózkodik a helyén.
A grub-mkconfig szigorú elnevezési követelményeket támaszt a kernelek és az initramfs képfájlok számára. Egy kernelnek a neve
kernel-${version}
vagy vmlinuz-${version}
kell, hogy legyen, míg egy initramfs képfájlnak a neve initramfs-${version}.img
, initramfs-genkernel-${version}
, initramfs-genkernel-${arch}-${version}
, initrd-${version}.img
, initrd.img-${version}
, initrd-${version}.gz
, vagy initrd-${version}
lehet. Ezeknek a fájloknak a /boot könyvtárban kell elérhetőknek lenniük.A /etc/default/grub fájl vezérli a grub-mkconfig működését. Ha paramétereket kell továbbítani a kernel számára (például genkernel használata esetén, vagy amikor LVM-ről vagy szoftveres RAID-ről bootolunk), akkor a fájlt szerkessze meg, mielőtt létrehozná a /boot/grub/grub.cfg fájlt, az alábbi módon:
root #
nano /etc/default/grub
GRUB_CMDLINE_LINUX
értékét, hogy megadja a kernel parancssorára továbbítandó paramétereket.GRUB2 láncindítása a GRUB Legacy-ből a beállítás teszteléséhez
Mivel egy rosszul beállított GRUB beállítás indíthatatlan operációs rendszert eredményezhet, ezért tesztelni szeretnénk a GRUB2 beállítását, mielőtt azt véglegesítenénk. Ehhez a GRUB2-t a GRUB Legacy-ből láncindítással kell elindítani. Ez úgy történik, hogy egy új szekciót adunk hozzá a /boot/grub/grub.conf fájlhoz. Az alábbiakban látható egy példa.
Vegye figyelembe, hogy a root partíció eltérhet a példában használt
(hd0,0)
partíciótól, és győződjön meg arról, hogy ugyanazt a root értéket használja, mint a /boot/grub/grub.conf beállításfájlban megadott érték esetében./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
Ezen a ponton a számítógépet újra kell indítani, és a GRUB2 Chainload
lehetőséget kell kiválasztani a GRUB menüben, amikor a számítógép elkezd bootolni. Egy másik GRUB menü fog megjelenni, amelynek a tetején GRUB 2.0.0 vagy attól magasabb verziószám kell hogy látszódjon, és meg kell jelenítenie az elérhető kerneleket az bootoláshoz. Ha ez nem működik, akkor egyszerűen indítsa újra az számítógépet, és válassza a normál boot opciót a GRUB2 Chainload
helyett.
GRUB Legacy lecserélése és eltávolítása
Ha minden sikeresen működött, akkor cserélje le a GRUB Legacy bootladert, és távolítsa el az operációs rendszerről.
Mivel az operációs rendszer újra lett indítva, lehet, hogy a /boot partíciót újra fel kell csatolni. Győződjön meg arról, hogy a megfelelő boot adathordozó elérési utat használja a /dev/sda helyett, mivel ez csak egy példa. Ha a /boot nincs felcsatolva a grub-install futtatása előtt, akkor az operációs rendszer indíthatatlanná válhat.
Amint korábban említettük, ha a GRUB2 a
multislot
USE jelölőzászlóval került előállításra, akkor a grub2-install parancsot kell használni a grub-install helyett. Ebben az esetben, miután a GRUB Legacy-t eltávolítottuk a rendszerből a következő lépésben, a GRUB2-t újra elő telepíteni kell az emerge segítségével a multislot
USE jelölőzászló nélkül, hogy a grub-install és a grub-mkconfig GRUB2 parancsokká válhassanak.root #
grub-install /dev/sda
Installation finished. No error reported.
Ezen a ponton használja a szoftvercsomag-kezelőt a sys-boot/grub:0
eltávolításához.
root #
emerge --ask -vc sys-boot/grub:0
A migráció most már teljes, mint a zavaros libernyák elméjű Nyugat-Európában.
Maintaining GRUB2
Amikor egy új kernel telepítésre kerül, hajtsa végre a következő lépést annak érdekében, hogy a GRUB2 beállítás felismerje az új kernelt (kivéve, ha manuális beállítás használatára kerül sor).
Győződjön meg arról, hogy a /boot partíció csatlakoztatva van ennél a lépésnél.
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.