GRUB 2 útmutató

A Ubuwiki wikiből

Bevezető

Ezen útmutató célja, hogy alapszintű ismereteket nyújtson a Grub 2 használatához. Azoknak a felhasználóknak szól, akiknek valószínűleg nem ismeretlen a régi Grub (Grub Legacy) menu.lst fájljának alapszintű szerkesztése és azon gondolkoznak, hogyan működik ez Grub 2-n (ver 1.97). Nem tér ki arra, hogy hogyan kell a Grub 2-t telepíteni, eltávolítani, vagy akár hogyan kell rá átállni.

Az Ubuntu 9.10 (Karmic Koala) óta a Grub 2 az alapértelmezett, de a disztribúciófrissítéskor nem váltja le a Grub 2 az előző verziót.

A StartUp-Manager ugyan támogatja a Grub 2-t, de jelenleg csak nagyon korlátozott szinten. A StartUp-Manager beállítási lehetőségei közül nagyon sok jelenleg nem kompatibilis a Grub 2-vel. A tervek szerint a StartUp-Manager 2 már csak a Grub 2-t fogja támogatni, de ez még fejlesztés alatt van a készítője szerint.

Hozzáfűzném azt is, hogy a Grub 2 még fejlesztés alatt van. A hivatalos dokumentáció jelenleg korlátozott és most készül. Részben ez az oka ennek az útmutatónak is. Remélhetőleg a közeljövőben több átfogó és teljeskörű dokumentáció lesz elérhető a fejlesztőknek és az önkénteseknek köszönhetően. Az oldal alján feltüntettem a dokumentációhoz használt forrásokat.

Legelőször, mielőtt belekezdenél, ellenőrizd melyik Grub verziót használod. Ez a parancs megmondja a verziószámot:

grub-install -v

Valami ilyesmit kéne látnod:

drs305@mycomputer:~$ grub-install -v
grub-install (GNU GRUB 1.97~beta2)

Szemmel látható különbségek: GRUB kontra GRUB 2

Első indításkor nem látszik túl nagy különbség abban amit a felhasználó lát a boot menüben. Az egyetlen kivétel a tisztán telepített Ubuntu 9.10, egyéb operációs rendszer nélkül. Ebben az esetben a GRUB 2 közvetlenül bootolja be az OS-t a menü mutatása nélkül.

Többi főbb különbség:

  • Nincs "/boot/grub/menu.lst". Ez a fájl váltja fel: "/boot/grub/grub.cfg".
  • Nincs "find /boot/grub/stage1" a grub prompt-nál. A Stage 1.5 szintén meg lett szüntetve.
  • A főmenü fájlja a "/boot/grub/grub.cfg" nem azért van, hogy módosítsák, még a root felhasználó által sem.
  • A "grub.cfg" fájl felülíródik minden alkalommal amikor frissítés történik, kernel-t adnak hozzá/távolítanak el, vagy amikor a felhasználó lefuttatja az update-grub parancsot.
  • A felhasználó használhat egyéni fájlt, az "/etc/grub.d/40_custom"-öt, ahol elhelyezheti a saját bejegyzéseit. Ez a fájl nem lesz felülírva.
  • Az elsődleges konfigurációs fájl a menü megjelenési beállításainak megváltoztatására: "/etc/default/grub".
  • Több fájl van a menü beállítására (pl. az "/etc/default/grub" említve lett előbb), az összes fájl az "/etc/grub.d/" mappában található.
  • Az egyéb operációs rendszereket, mint például a Windows-t, automatikusan fel kell ismernie és hozzá kell adnia a menühöz.
  • A konfigurációs fájlokban való változtatások nem lépnek érvénybe az update-grub parancs lefuttatásáig.

Fejlesztések

A GRUB 2 újdonságai a régi GRUB-hoz képest a következők:

  • Új konfigurációs fájl struktúra
  • Scriptelhetőség, beleértve a feltételes állításokat és funkciókat
  • Dinamikus modul betöltés
  • Visszaállító mód
  • Témák
  • Grafikus boot menü támogatás és továbbfejlesztett splash képességek
  • Könnyedén bootolhatóak a LiveCD ISO képfájlok közvetlenül a merevlemezről
  • Nem X86 platformok támogatása (pl.: PowerPC)
  • UUIDs-k univerzális támogatása (nem csak Ubuntu)

Grub bootolása

A Grub 2 az operációs rendszer előtt töltődik be. A moduláris komponensei akkor töltődnek be, ha szükség van rájuk. A menü megjelenése általában az "/etc/default/grub" fájlban van meghatározva. Nézd át a Grub 2 fájlok és beállítások részt bejegyzési és formázási útmutatóhoz.

A főbb lehetőségek menü megjelenítéséhez a következők:

  • Alapértelmezett (Initial Default)
    • A Grub 2 egyenesen az alapértelmezett operációs rendszert fogja betölteni, ha más operációs rendszert nem érzékel. Semmilyen menü nem fog megjelenni. Ha más operációs rendszert is talál, akkor a Grub 2 menü meg fogja jeleníteni.
  • Időzített megjelenés (Timed display)
    • Az alapértelmezett késleltetés 10 másodperc. Ha nem történik felhasználói beavatkozás, akkor a Grub 2 az alapértelmezett menüpontot indítja.
    • A visszaszámlálás megállítható bármely billentyű lenyomásával. Ezek után a felhasználónak manuálisan kell választania.
    • Az alapértelmezetten booltolandó menüpontot a DEFAULT= opció határozza meg az "/etc/default/grub" fájlban, az első menüpont értéke 0.
  • Rejtett (Hidden)
    • A felhasználó megszakíthatja a boot folyamatot és megjelenítheti a menüt a SHIFT gomb nyomva tartásával, amig a menü meg nem jelenik. A Grub 2 figyeli a SHIFT gomb lenyomását a bootolás alatt. Ha a gomb meg lett nyomva, vagy ha a Grub 2 nem tudja meghatározni a SHIFT állapotát, a menü megjelenik.
    • A visszaszámláló alapból nem látszik, de megjeleníthető egy beállítással az "/etc/default/grub" fájlban.
    • A visszaszámlálás alatti vizuális visszajelzéshez, a visszaszámláló megjeleníthető a képernyőn.
    • A visszaszámlálás végén az alapértelmezett menüpont lesz kiválasztva, ami az "/etc/default/grub" lett meghatározva.
  • Mentett (Saved)
    • Ha az alapértelmezett beállítás "saved"-re lett állítva, akkor a legutóbbi sikeresen indított kernel/rendszer fog elindulni, ha nem történik felhasználói közbeavatkozás.

Grub 2 fájlok és beállítások

A /boot/grub mappában lévő fájlok közül sok ismeretlen lehet azoknak, akik az régi Grub-ot használták. Különösen feltűnő a *.mod fájlok sokasága. A Grub 2 moduláris felépítésű és ezek a fájlok akkor töltődnek be, amikor a Grub-nak szüksége van rá.

A Grub 2 felhasználó által módosítható beállításai az /etc/default/grub és az /etc/grub.d mappában vannak. Amikor lefut az update-grub parancs, a végeredmény a /boot/grub/grub.cfg fájlban lesz eltárolva.

/boot/grub/grub.cfg

  • Ez a Grub 2 fő fájlja. Ez helyettesíti a régi Grub /boot/grub/menu.lst fájlját. Ez tartalmazza a Grub menü információit, de ellentétben a régi Grub menu.lst fájljával, a grub.cfg nem szerkesztésre van szánva.
    • A grub.cfg automatikusan generálódik, amikor lefut az "update-grub" parancs:
    • Minden szekció (### BEGIN) jól láthatóan el van különítve és hivatkozik arra a /etc/grub.d mappában lévő fájlra ahonnan az információ generálva lett.
    • A grub.cfg az update-grub2 vagy az update-grub parancs rootként történű futtatásával frissíthető.
    • Alapértelmezetten, illetve ha bármikor lefut az update-grub2 parancs, ez a fájl csak olvasható (read-only) lesz. Ez összhangban van azzal a szándékkal, hogy a fájl nem szerkeszthető kézzel. Ha mégis szerkesztened kell ezt a fájlt, a második szekcióban található hozzá leírás.
  • Egy példa grub.cfg fájl Windows-al és egy manuális bejegyzéssel:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
load_env
set default="0"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396925
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-12-generic" {
        recordfail=1
        save_env recordfail
	set quiet=1
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
	linux	/boot/vmlinuz-2.6.31-12-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro   quiet splash
	initrd	/boot/initrd.img-2.6.31-12-generic
}
menuentry "Ubuntu, Linux 2.6.31-12-generic (recovery mode)" {
        recordfail=1
        save_env recordfail
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
	linux	/boot/vmlinuz-2.6.31-12-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro single 
	initrd	/boot/initrd.img-2.6.31-12-generic
}
menuentry "Ubuntu, Linux 2.6.31-11-generic" {
        recordfail=1
        save_env recordfail
	set quiet=1
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
	linux	/boot/vmlinuz-2.6.31-11-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro   quiet splash
	initrd	/boot/initrd.img-2.6.31-11-generic
}
menuentry "Ubuntu, Linux 2.6.31-11-generic (recovery mode)" {
        recordfail=1
        save_env recordfail
	insmod ext2
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set 7ebcfe33-6914-42ec-9d2e-0859f7396933
	linux	/boot/vmlinuz-2.6.31-11-generic root=UUID=7ebcfe33-6914-42ec-9d2e-0859f7396933 ro single 
	initrd	/boot/initrd.img-2.6.31-11-generic
}
### END /etc/grub.d/10_linux ###

### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Home Edition (on /dev/sda1)" {
	set root=(hd0,1)
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
menuentry "Jaunty 2.6.28-15-custom" {
	saved_entry=${chosen}
	save_env saved_entry
	set root=(hd0,8)
	linux	/boot/vmlinuz-2.6.28-15-custom root=UUID=48e03255-22b3-488b-ae7e-9dbe4e2beac7 ro  quiet splash
	initrd	/boot/initrd.img-2.6.28-15-custom
}
menuentry "SystemRescue" {
	saved_entry=${chosen}
	save_env saved_entry
        set root=(hd0,6)
        linux   /sysrcd/rescuecd subdir=sysrcd setkmap=us
        initrd  /sysrcd/initram.igz
}
### END /etc/grub.d/40_custom ###

/etc/default/grub

  • Ez a fájl tartalmazza azokat az információkat, amik korábban a régi Grub menu.lst fájljának tetején foglaltak helyet és amik a kernel sor végén voltak. Ez a fájl szerkeszthető root jogokkal rendelkező felhasználóval.

Példa:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys

  • GRUB_DEFAULT - Meghatározza az alapértelmezett menüpontot. Az értéke lehet szám (0, 1, 2, stb...), vagy "saved".
    • GRUB_DEFAULT=0 - Beállítja az alapértelmezett menüpontot helyzet alapján. Ahogy a régi Grub-ban, az első menüpont a grub.cfg-ben a 0, második az 1, stb.
    • GRUB_DEFAULT=saved - Az alapértemezett menüpont az lesz, ami legutoljára lett kiválasztva. Ha a menü megjelenik bootolás során, a legutoljára kiválasztott menüpont lesz kiemelve. Ha nem történik közbeavatkozás, ez fog elindulni a visszaszámlálás végén, vagy ha a menü rejtve marad.
    • GRUB_DEFAULT="xxxx" - Egy konkrét menüpont neve, idézőjelek közé kell tenni. Ebben az esetben a menüpont helye a menüben lényegtelen. Például: GRUB_DEFAULT="Ubuntu, Linux 2.6.31-9-generic"
    • Példákért, hogy hogyan kell engedélyezni a "saved" opciót az egyedi menüben, lásd az Egyéni Felhasználói Bejegyzések részt.
  • GRUB_TIMEOUT=5 - Nem változott a régi Grub-hoz képest. Ennyi másodperc múlva indul el az alapértelmezett menüpont.
    • A menü nem fog megjelenni és nem lesz késleltetés, ha az értéke 0:
      • A felhasználó kényszerítheti a menü megjelenését, ha nyomva tartja a SHIFT gombot bootolás közben.
      • Bootolás közben a rendszer ellenőrzi a SHIFT gomb állapotát. Ha nem tudja meghatározni a gomb állapotát, akkor egy rövid késleltetés lehetővé fogja tenni a felhasználónak, hogy megjelenítse a menüt az ESC gomb lenyomásával.
    • Ha ez az érték "-1"-re van állítva akkor a menü addig lesz látható, amíg a felhasználó nem választ egy menüpontot.
    • A fejlesztés közben úgy gondolták, hogy a Grub 2 menü alapértelmezetten legyen rejtett, hacsak nincs több operációs rendszer. Ebben az esetben ez a sor lehet, hogy ki van kommentelve. Hogy látható legyen a menü minden indításkor szedd ki a kommentet a sor elől és állítsd be értéknek 1-et vagy nagyobb számot.
    • Ez az utasítás késlelteti a GRUB_HIDDEN_TIMEOUT utasítást. Ha a menü rejtettsége megszakad egy gombnyomástól, a GRUB_TIMEOUT számláló elkezd visszaszámolni.
    • Továbbá a fájl root-ként való szerkszetéséhez, az alábbi utasításokat is használhatod az alapértelmezett érték ellenőrzéséhez és módosításához. Az első ellenőrzi a jelenlegi értéket, a második lecseréli. T helyére írd be az új értéket.

cat /etc/default/grub | grep 'GRUB_TIMEOUT='   # Ellenőrzi a jelenlegi TIMEOUT értéket.
sudo sed 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=T/g' -i /etc/default/grub  # Módosítja a TIMEOUT értéket. T helyére írd be az új értéket.

  • GRUB_HIDDEN_TIMEOUT=0
    • A menü el lesz rejtve, kivéve, ha a sor ki van kommentelve. ( # GRUB_HIDDEN_TIMEOUT=0 )
    • Hibák még lehetnek ebben a funkcióban. A menü elrejtése vagy működik, vagy nem.
    • Az alapértelmezett beállítás függhet az operációs rendszertől.
      • Más OS-t is talál: A menü meg fog jelenni. ( A sor ki lesz kommentelve #-el. )
      • Más OS-t nem talál: A menü rejtett lesz.
    • Nullánál nagyobb szám esetlén a megadott értéknyi másodpercig áll, de nem mutatja a menüt..
    • Ha engedélyezett, a 05_debian_theme fájlban megadott dizájnú splash screen fog megjelenni. Ez a beállítás csak a menüt rejti el.
  • GRUB_HIDDEN_TIMEOUT_QUIET=true
    • true - Nem jelenik meg a számláló. A képernyő üres lesz.
    • false - A számláló meg fog jelenni az üres képernyőn a GRUB_HIDDEN_TIMEOUT opciónál beállított értékig.
  • GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    • Meghatározza az ismertetőben lévő nevet. (Ubuntu, Xubuntu, Debian, stb.)
  • GRUB_CMDLINE_LINUX

Ha létezik ez a sor, az összes itt található bejegyzést hozzáteszi a 'linux' parancssor végéhez (mint a régi Grub "kernel" sora) a normál és visszaállító (recovery) módhoz is. Ez hasonlít az "altoptions" sorra a menu.lst-ben.

  • GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Ez a sor az összes itt található bejegyzést hozzáteszi a 'linux' parancssor végéhez (mint a régi Grub "kernel" sora). A bejegyzéseket csak a normál mód végéhez fűzi hozzá. Ez hasonlít a "defoptions" sorra a menu.lst-ben. A bootolási folyamat szöveges kijelzéséhez fekete háttérrel, távolítsd el a "quiet splash"-t. Ha a grub splash képét szeretnéd látni, egy tömör szöveges kimenettel, használd a "splash" opciót.

  • #GRUB_TERMINAL=console

A grafikus terminál kikapcsolásához szedd ki a kommentet (csak grub-pc)

  • #GRUB_DISABLE_LINUX_UUID=true

Ha nem akarod, hogy a GRUB átadja a "root=UUID=xxx" paramétert a Linuxnak, szedd ki a kommentet.

  • #GRUB_GFXMODE=640x480

Hozzáadhatod ezt a sort és kiszedheted a kommentet (#), hogy aktiváld. Ez a bejegyzés határozza meg a grafikus menü felbontását (a menü szövegméretét). A VGA által támogatot felbontást tudja nyújtani (pl.: 640x480, 800x600, 1280x1024, stb). Ez a beállítás csak a boot menü szövegére vonatkozik.

  • GRUB_DISABLE_LINUX_RECOVERY=true

Add hozzá vagy szedd ki a kommentet a sor elől, hogy megakadályozd, hogy a visszaállító (Recovery) mód kernel opciók megjelenjenek a menüben. Ha a "Recovery" opciót csak egy kernelnél akarod látni, akkor csinálj egy külön bejegyzést hozzá az "/etc/grub/40_custom" fájlban.

  • GRUB_DISABLE_OS_PROBER="true" - Engedélyezi/letiltja, hogy más partíciókon operációs rendszert keressen a GRUB beleértve a Windows-t, Linux-ot, OSX-et és a Hurd-öt.

/etc/grub.d/

Az ebben a mappában található fájlok beolvasásra kerülnek az "update-grub" vagy az "update-grub2" parancs futása közben. A tartalmuk a /boot/grub/grub.cfg fájlba lesznek importálva.

A grub menü bejegyzések sorrendje a fájlnevek sorrendjén alapulnak. A számmal kezdődő nevű fájlok előbb futnak le, mint a betűvel kezdődőek. A fájlok sorrendje megállapítható a grub.cfg menü sorrendjéből. Egyéni bejegyzések hozzáadhatóak a "40_custom", vagy egy újonnan készített fájlhoz.

Bármilyen fájl lett is létrehozva, azoknak sorban kell lefutniuk, hogy bekerülhessenek a grub.cfg fájlba az "update-grub2" parancs folyamán.

  • 00_header
  • 05_debian_theme: Meghatározza a hátteret és a szöveg színét, témákat
  • 10_hurd: Észleli a Hurd kerneleket
  • 10_linux: Észleli a Linux kerneleket "lsb_release" parancsra alapozva.
  • 20_memtest86+: Ha a /boot/memtest86+.bin fájl létezik, hozzá lesz adva, mint menüpont.
  • 30_os-prober: Megkeresi a Linux-okat és egyéb operációs rendszereket a többi partíción és hozzáadja őket a menühöz.
  • 40_custom: Egy sablon egyéni menüpontok hozzáadásához, amik hozzá lesznek adva a grub.cfg fáljhoz amikor lefut az "update-grub2" parancs. Ennek és minden egyéni fájlnak futtathatónak kell lennie, hogy hozzá lehessen adni a grub.cfg-hez.

Bejegyzések hozzáadása a Grub 2-höz

A grub.cfg fájlba a menü bejegyzések automatikusan, vagy manuálisan adhatók hozzá.

  • Automatikus.
    • Amikor az "update-grub" vagy az "update-grub2" lefut, a Grub 2 megkeresi a Linux kerneleket és az egyéb operációs rendszereket.

Hogy mit és hol keres azt az /etc/grub.d mappába található fájlok határozzák meg.

      • 10_linux megkeresi a telepített linux kerneleket ugyanazon a partícón.
      • 30_os-prober egyéb operációs rendszereket keres.
  • Egyéni felhasználói bejegyzések (/etc/grub.d/40_custom).
    • A bejegyzések a grub.cfg-be manuálisan is beilleszthetők fájlok létrehozásával az /etc/grub.d mappába.
      • A fájl neve meghatározza a helyét a menüben. A 30_os-prober bejegyzései a 40_custom bejegyzései előtt fognak helyetfoglalni, ami pedig az 50_my-sample bejegyzései előtt.
      • Minden létrehoztt fájlnak futtathatónak kell lennie. Ez elvégezhető rootként a "sudo chmod +x /etc/grub.d/filename" paranccsal.
      • Az /etc/grub.d mappában lévő fájlok be lesznek olvasva és tartalmuk bekerül a grub.cfg fájlba, amikor az "update-grub2" parancs lefut root joggal.
    • Egy példa bejegyzés. Ez a fájl létrehoz egy menü elemet a SystemRescueCD futtatásához (előzőleg telepített) arról a partícióról, ami az sda10 csatolási ponton lett létrehozva. A mappáknak és a fájloknak a megfelelő helyre kell lenniük másolva összhangban a SystemRescueCD-vel, ha ténylegesen szeretnéd használni ezt a bejegyzést.
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

echo "Adding SystemRescueCD" >&2
cat << EOF
menuentry "System Rescue CD" {
set root=(hd0,10)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
} 
EOF
      • Figyeld meg a partíció megnevezését. Az eszközök "0"-tól számozódnak, mint eddig. Az sda "hd0"-ként van jelölve, az sdb "hd1"-ként, stb. Azonban az első partíció most sda1-ként szerepel. A partíciók számozása nem "0"-val kezdődik, hanem "1"-el. Az sda5 az "5"-ös.
      • Az 'echo "Adding SystemRescueCD" >&2' sor nem feltétlenül szükséges. Ha benne van a fájlban, akkor ez a sor meg fog jelenni a terminálban, mikor az "update-grub2" parancs lefut. Vizuális visszajelzést biztosít arról, hogy a bejegyzés meg lett találva és be lett illesztve. A bejegyzés, ha a megfelelő formában van, be lesz illesztve a grub.cfg fájlba, akár benne van ez a sor a fájlban, akár nincs.
    • Tipp: Ha az egyéni menü bejegyzéseidet a menü tetején akarod látni (mondjuk egyéni címeket akarsz), akkor csinálj egy új fájlt "07_xxxx" néven. Mivel az /etc/grub.d/ mappában lévő fájlok egymást követően kerülnek beolvasásra, ezért a "07_custom" fájl a "10_linux" előtt fog következni. Nem ajánlom, hogy az egyéni menü fájljának neve 06-nál kissebb számmal kezdődjön, mivel minden téma a 05_debian_theme fájlból töltődik be, és így ez biztosan ez egyéni menü létrejötte előtt fog lefutni. A fájl létrehozása után futtasd le a sudo update-grub parancsot és utána ellenőrizd a "DEFAULT" értékét az /etc/default/grub fájlban. Ha ez nem a megfelelő menüpontra mutat, változtasd meg a DEFAULT értékét a megfelelő menüpont értékére.
    • memtest86+ elhagyása: Hogy ne jelenjenek meg a "memtest86+" bejegyzések a Grub 2 menüben, szüntesd meg a futtathatóságát az /etc/grub.d/20_memtest86+ fájlnak. Megcsinálhatod fájlkezelőből "Tulajdonságok (jobb klikk), Jogosultságok", vagy parancssorral:

sudo chmod -x /etc/grub.d/20_memtest86+

    • Visszaállító mód (Recovery Mode) bejegyzések elhagyása: Az /etc/grub.d/10_linux fájl az utóbbi időben frissült, hogy tartalmazza a recovery mode opcióinak ellenőrzését. Szerkeszd a /etc/default/grub fájlt és add hozzá, vagy módosítsd a következő sort:

GRUB_DISABLE_LINUX_RECOVERY=true

Ha egy régebbi verziójú /etc/grub.d/10_linux fájlod van és a fenti kód nem működik a grub frissítése után, megszüntetheted a "Recovery mode" bejegyzéseket a Grub 2 menüdben, az /etc/grub.d/10_linux fájl szerkesztésével. Ha nincsenek benne "if"-es feltétel vizsgálatok a recovery mode-ot illetően, helyezz el egy komment jelet (#) a régi fájl következő sorai előtt (kb. a 146. sornál):

# linux_entry "${OS}, Linux ${version} (recovery mode)"
# "single ${GRUB_CMDLINE_LINUX}"

Ha meg akarsz tartani egy "Recovery mode" bejegyzést a biztonság kedvéért, hozzáadhatsz egy bejegyzést az /etc/grub.d/40_custom fájlhoz, ami meg fog jelenni a grub menü alján.

    • Egy teljesen személyre szabott menü építése: Oké, valld be, hogy az irányítás megszállottja vagy és csak azt akarod látni, amit magad készítettél - testreszabott címeket, semmi "memtest86+"-at vagy extra kerneleket. Itt van, hogyan csináld:
      • Futtasd le az update-grub parancsot, hogy elérd a jelenleg elérhető kerneleket.
      • Másold át a kiszemelt bejegyzést a /boot/grub/grub.cfg fájlból a /etc/grub.d/40_custom fájlba. A bejegyzés a "menuentry" elejű sorral kezdődik és "}"-el végződik.
      • Adj hozzá minden egyéb menüpontot, amit látni akarsz a bootmenüben.
      • Szerkeszd a címeket a "menuentry" sorban, ha szükséges (az idézőjelek közt). Ne módosítsd a sorokat a "menuentry" sort követően. Minden bejegyzésnek egy "menuentry" sorral kell kezdődnie és egy "}"-el kell végződnie az utolsó sorban.
      • Szüntesd meg a következő fájlok futtathatóságát /etc/grub.d/10_linux, /etc/grub.d/20_memtest86+ és /etc/grub.d/30_os-prober.

Amelyik fájl futtathatósága megszűnik az /etc/grub.d mappában, az ki lesz zárva a grub frissítésekor.

sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober

      • Futtasd a "sudo update-grub" parancsot
      • A frissített /boot/grub/grub.cfg fájlnak most csak következő fájlok bejegyzéseit kéne tartalmaznia "00_header", "05_debian_theme" és "40_custom".
      • A grub.cfg fájl nem lesz frissítve új kernel hozzáadásakor. Az új kernel hozzáadásához tedd a make "10_linux" fájlt futtathatóvá, majd futtasd a "sudo update-grub" parancsot az elérhető kernelek frissítéséhez és az utasítások megismétléséhez.
    • A DEFAULT=save opció beépítése: A "saved default" opció engedélyezéséhez, amivel a Grub 2 előre kiválasztja a legutóbbi sikeresen használt menüpontot bootoláskor, a "DEFAULT=save" opciónak be kell lennie írva a /etc/default/grub fájlba és a 40_custom fájlt módosítani kell.

Egy példa a 40_custom fájlra:

#! /bin/sh -e

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib
echo "Adding SystemRescueCD & Custom Kernel" >&2
cat << EOF
menuentry "Jaunty 2.6.28-15-custom" {
EOF
save_default_entry | sed -e "s/^/\t/"
cat << EOF
set root=(hd0,7)
linux /boot/vmlinuz-2.6.28-15-custom root=UUID=12c55255-27b3-488b-hje7e-9dbe4e2esfg5 ro quiet splash
initrd /boot/initrd.img-2.6.28-15-custom
}
EOF

cat<< EOF
menuentry "SystemRescue" {
EOF
save_default_entry | sed -e "s/^/\t/"
cat << EOF
set root=(hd0,6)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
EOF
      • Manuális Windows bejegyzés (az /etc/grub.d/30_os-prober futtathatóságának megszüntetésével)
#! /bin/sh -e

echo "Adding Windows 43_custom" >&2
cat << EOF
menuentry "Windows Vista 43_custom" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set CFFCFF9EECFF7F49
chainloader +1
}
EOF
    • Ne felejtsd el lefuttatni a "sudo update-grub" parancsot, miután elvégezted a változtatásokat az /etc/grub.d mappában lévő fájlokon.
  • A grub.cfg manuális szerkesztése (Nem ajánlott)

A /boot/grub/grub.cfg manuális szerkesztése nem ajánlott. A grub.cfg fájlra egyfajta végeredményként gondolj. A szerkesztésre való dolgok /etc/grub.d mappában vannak, illetve az /etc/default/grub fájlban.

A szerkesztést elkerülendő, a grub.cfg fájl csak olvasható. Ha mégis megpróbálnád megnyitni, szerkeszteni és menteni ezt a fájl root joggal, addig nem fogod tudni megtenni, amíg a csak olvasható (read-only) állapotát meg nem változtatod. Ha mégis szerkesztened kéne ezt a fájlt:

sudo chmod +w /boot/grub/grub.cfg
gksudo gedit /boot/grub/grub.cfg

Megjegyzés: Ez a fájl vissza lesz állítva csak olvasható állapotba, amint lefut az update-grub parancs.

Bejegyzések eltávolítása a Grub 2-ből

A bejegyzéseket az /etc/grub.d mappában lévő fájlok módosításával, vagy törlésével kéne eltávolítani. A /boot/grub/grub.cfg fájl csak olvasható és általában nem szükséges szerkeszteni.

  • Automatikusan.
    • Túl sok a kernel? Ha a kerneleket Synaptic-kal, vagy az "apt-get remove" paranccsal távolítod el, automatikusan frissülni fog a grub.cfg fájl és nem igényel semmilyen felhasználói beavatkozást.
      • Synaptic-ban gépeld be a kernel számát az ablak jobb felső sarkában lévő keresési mezőbe (pl.: 2.6.28-11).

Keresd meg a "linux-image" és a "linux-headers" bejegyzéseket a megfelelő kernelhez (pl.: linux-image-2.6.26-11, vagy linux-image-2.6.26-11-generic).

      • Kattints jobb gombbal és válasz a "Kijelőlés teljes eltávolításra"-t, és nyomd meg az alkalmaz gombot.
      • A kernelek el lesznek távolítva a rendszerből és a Grub menüből.
      • Ha nem vagy biztos, hogy melyik kernelt használod, írd be a terminálba a "uname -r" parancsot.
      • Sok felhasználó megtartja az eggyel előbbi kernelt, ami előzőleg problémamentesen működött.
    • Az egyéb operációs rendszerek, amik el lettek távolítva a számítógépről, ugyancsak el lesznek távolítva a menüből, amint az "update-grub2" parancsot lefuttatod rootként.
    • Hogy megakadályozd az /etc/init.d mappában lévő fájlok valamelyikének futását, szüntesd meg a futtathatóságát.
      • Pl.: Ha nem akarod látni a "Memtest86+" bejegyzéseit, futtasd le ezt a parancsot:

sudo chmod -x /etc/grub.d/20_memtest86+

      • Az update-grub parancs futtatása véglegesíti a módosításokat a grub.cfg fájlban.
  • Felhasználó által létrehozott bejegyzések.
    • Egy felhasználó által létrehozott bejegyzés eltávolításához, töröld ki a hozzá tartozó fájlt az /etc/grub.d mappából.
    • Ha ez egyéni fájl több bejegyzést tartalmaz, egyes elemeket eltávolíthatsz, másokat megtarthatsz.
    • Miután a fájl el lett távolítva, vagy szerkesztve, futtasd le az "update-grub2" parancsot a grub.cfg frissítéséhez.

Grub 2 splash képek

Miért találnád fel újra a kereket? Látogasd meg ezt az oldalt, ami egy remek bemutatót tartalmaz Grub 2 splash képek készítéséről: http://members.iinet.net/~herman546/p20/GRUB2%20Splashimages.html

Azonban, ha a titkosított merevlemez nem jelent problémát, itt vannak az alapok:

  • Másold át kézzel a splash képeket az /usr/share/images/grub mappába, vagy telepítsd fel az alapértelmezett grub2 splash képeket a Synaptic segítségével:

sudo apt-get install grub2-splashimages

  • A Grub2 splash képei az /etc/grub.d/05_debian_theme fájl irányítása alatt vannak. Nyisd meg ezt a fájlt szerkesztésre:

gksudo gedit /etc/grub.d/05_debian_theme

Keresd meg a következő sort és szerkeszd a kiemelt részt, helyettesítsd azzal a grub splash képpel (az /usr/share/images/grub mappában található), amit használni szeretnél:

for i in {/boot/grub,/usr/share/images/grub}/moreblue-orbit-grub.{png,tga} ; do

Megjegyzés: Ott van egy pont ( . ) a fájlnevet követően.

  • Egy időben a Grub 2 splash képei, amik le lettek töltve, az /usr/share/images/desktop.base mappában tárolódtak. Ha itt találhatóak, add meg a megfelelő elérési utat az előző parancsban ( ... /usr/share/images/desktop-base} ... ).
  • Mentsd el a fájlt, majd frissítsd a Grub2-t:

sudo update-grub2

Menü felbontásának megváltoztatása

Ha meg szeretnéd változtatni a felbontását a Grub 2 képernyőjének, amikor splash képet használsz, kövesd a következő lépéseket:

  1. Add meg a kívánt felbontást az /etc/default/grub fájlban
  • Változtasd meg a "GRUB_GFXMODE=" értékét (Pl.: GRUB_GFXMODE=800x600)
    • Ha nem vagy biztos abban, hogy milyen felbontások állnak a Grub 2 rendelkezésére, meg tudod jeleníteni őket, ha beírod a "vbeinfo" parancsot a GRUB 2 parancssorába. A parancssor a "c" gomb lenyomásával érhető el, amikor a fő Grub 2 menü kép megjelenik.
  1. Válassz egy képet azonos felbontással és módosítsd az /etc/grub.d/05_debian_theme fájlt
    • A kép neve is az alábbi szöveggel kezdődő sorban található:

" for i in {/boot"

    • Ha egy kép felbontása nem megfelelő, a menü nem fog pontosan elhelyezkedni.
    • Használd az általad választott képszerkesztőt, hogy létrehozz/átméretezz egy képet a megfelelő méretben.
    • A kép méretét a tulajdonságok segítségével meg lehet nézni a fájlkezelőben (nézd meg a kép fület Nautilus-ban).
  1. Futtasd az update-grub parancsot rootként, hogy az új beállítások hozzá legyenek azva a /boot/grub/grub.cfg fájlhoz

Recovery mode-ba bootolás menüpont nélkül

  • Ha a Grub 2 úgy van beállítva, hogy egyáltalán ne jelenítse meg a menüt bootoláskor, tartsd lenyomva a SHIFT billentyűt, amíg a menü meg nem jelenik. (A régi Grub-nál ez volt az ESC billentyű.)
  • Nyomj meg egy gombot egyszer, amikor a menü megjelenik, hogy 'kimerevítsed'. Aztán válaszd ki az a kernelt, amit el akarsz indítani.
  • Nyomd meg az E-t
  • Menj a "linux /boot/vmlinuz...." sor végére. Ha látható, akkor távolítsd el a "quiet" és/vagy "splash" paramétereket. Írd a "single" paramétert a sor végére.
  • Nyomj CTRL-X-et a visszaállító menü elindításához.

GRUB 2 eltávolítása > GRUB

A parancssor segítségével tisztábban lehet eltávolítani és újratelepíteni. Amíg a csomagok hozzáadása és eltávolítása megoldható Synaptic használatával, néhány lépést muszáj parancssorból végezni.

  • Nyiss egy terminált: Alkalmazások, Kellékek, Terminál.
  • Készíts biztonsági másolatot a GRUB 2 fő mappáiról és fájljairól
sudo cp /etc/default/grub /etc/default/grub.old
sudo cp -R /etc/grub.d /etc/grub.d.old
sudo cp -R /boot/grub /boot/grub.old
  • GRUB 2 eltávolítása
    • sudo apt-get purge grub2 grub-pc
    • Figyelmeztetni fog, hogy a rendszer képtelen lesz elindulni másik rendszerbetöltő telepítése nélkül.
    • Amikor a csomagok el lesznek távolítva, néhány fájl benne fog maradni a '/boot/grub' mappában
  • GRUB 0.97 telepítése
    • sudo apt-get install grub
    • A "grub" telepítésével, a felhasználónak még létre kell hoznia a "menu.lst" és a "stage1/stage2" fájlokat.
    • sudo update-grub
      • Létrehozza a "menu.lst" fájlt. Tab-bal válaszd ki a "Yes/Igen"-t amikor kéri.
    • sudo grub-install /dev/sdX
      • Válaszd a megfelelő eszközt (sda, sdb, etc), általában azt, amire az Ubuntu lett telepítve.
      • Létrehozza a "stage1" és "stage2" fájlokat a "/boot/grub" mappában és beírja megát az MBR szektorba.
  • Indítsd újra

GRUB 2 újratelepítése LiveCD-ről

Ha nem indul a GRUB 2 és újra kéne telepíteni:

  • Bootolj be az Ubuntu 9.10 LiveCD-ről.
  • Nyiss egy terminált: Alkalmazások, Kellékek, Terminál.
  • Állapítsd meg, hogy melyik a rendes rendszer partíciód - `sudo fdisk -l` (Végén egy kis L van.)
  • Ha nem vagy biztos, futtasd a `df -Th` parancsot. Figyelj a lemez méretére, meg hogy ext3, vagy ext4 fájlrendszerű.
  • Csatold fel a rendszer partíciódat:

sudo mount /dev/sdXX /mnt

    • Megjegyzés: helyettesítsd be a megfelelő partíciót: sda1, sdb5, etc.
    • Megjegyzés: A GRUB 2 az első eszközt "0"-ként számozza, de az első partíciót meg "1"-ként
  • Csak akkor, ha külön boot partíciód van:

sudo mount /dev/sdYY /mnt/boot

  • Az sdYY helyére a /boot partíciód helyét add meg.
  • Eszközök felcsatolása:

sudo mount --bind /dev/ /mnt/dev

  • Chroot-olj a rendes rendszer eszközödbe:

sudo chroot /mnt

  • GRUB 2 újratelepítése:

grub-install /dev/sdX

    • Megjegyzés: Helyettesítsd be a megfelelő eszközt - sda, sdb, sdc.. Ne adj meg partíció számot.
  • Ellenőrizd a telepítést:

grub-install --recheck /dev/sdX

    • Megjegyzés: Helyettesítsd be a megfelelő eszközt - sda, sdb, sdc.. Ne adj meg partíció számot.
  • Lépj ki a chroot-ból: CTRL-D
  • Csatold le az eszközöket:

sudo umount /mnt/dev

  • Ha külön /boot partíciót csatoltál:

sudo umount /mnt/boot

  • Csatold le az utolsó eszközt:

sudo umount /mnt

  • Indítsd újra a géped.

Linkek

Személyes eszközök