GRUB
GRUB
Je zavaděč, který umožňuje spouštění více než jednoho operačního systému na jednom počítači. Jeho jméno vychází z počátečních písmen popisu GRand Unified Bootloader ( Hlavní unifikovaný zavaděč ).
Jak probíhá proces zavedení OS přes GRUB
Při spuštění počítače hledá BIOS zařízení ze kterého lze spustit nějaký OS. Většinou jde o aktivní diskový oddíl na pevném disku počítače, ale může jít i o síťovou kartu. Odtud načte vlastní zavaděč OS.
První stupeň zavádění
V případě GRUBu načte tzv. "first stage" ( první stupeň zavádění ) zavaděče. Ta se musí vejít do prvních 512 bajtů pevného disku (tzv. MBR sektor), proto obsahuje pouze informaci o tom, na kterém offsetu pevného disku se nachází další část nezbytná pro zavedení tzv. "second stage" ( druhého stupně zavádění ).
Tato část může zabrat prvních 30 kilobajtů ihned za "first stage", ale také může být umístěna i na některém jiném diskovém oddílu. Jelikož nejde o samotný "second stage", tak se o ní hovoří jako o stupni 1.5. V ní jsou ovladače, kterými se zpřístupní souborový systém na kterém je uložena samotná "second stage". Např. ovladače síťových karet nezbytné pro zavádění OS ze sítě.
Druhý stupeň zavádění
Když převezme druhý stupeň zavaděče řízení, načte konfigurační soubor s vlastním výběrem možností spuštění operačního systému. Výhodou GRUBu je, že obsahuje také příkazový řádek, do kterého se lze z grafického menu přepnout a operativně podle potřeby pozměnit volby pro zavedení systému.
Výhoda GRUB
Asi nejvýznamnější výhodou je možnost editovat konfigurační soubor zavaděče přes příkazovou řádku před vlastním zavedením OS. Lze tak vyřešit běžné problémy se zavedením systému, aniž by bylo nutné použít nějaké záchranné médium. To však platí pouze do té míry než je poškozen zaváděcí sektor pro GRUB, což činí s oblibou zvláště systémy MS Windows. V takové případě je třeba provést reinstalaci GRUBu kupř. z nějakého LiveCD.
Reinstalace GRUB
Rozdíl mezi GRUB a GRUB2
V současné době nahrazuje v distribucích původní GRUB (který je přejmenován na GRUB Legacy a dále se již nevyvíjí) GRUB2. Ten je výsledkem projektu PUPA, jehož cílem bylo vytvořit novou, lepší, bezpečnější, robustnější verzi GRUBu.
- Na rozdíl od původního GRUBu nepoužívá GRUB2 mezistupeň 1.5
- Obsahuje podporu pro dynamické zavádění modulů během zaváděcího procesu (Původní GRUB umožňoval přidat další ovladače pouze během kompilace)
- Podporuje internacionalizaci
- Podporuje skriptování - práci s podmínkami, smyčkami, proměnnými a funkcemi.
Kompilace GRUB2 na Debianu
- GCC 4.1.3 or later
- GNU Make
- GNU Bison 2.3 or later
- GNU binutils 2.9.1.0.23 or later
- Other standard GNU/Unix tools
- Ruby 1.6 or later
- Autoconf 2.59 or later
k909new:~/grub2_for_diskless/install# apt-get install bison binutils-multiarch ruby autoconf gcc Čtu seznamy balíků... Hotovo Vytvářím strom závislostí Čtu stavové informace... Hotovo Následující extra balíky budou instalovány:
automake autotools-dev binutils cpp cpp-4.3 gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl libruby1.9 linux-libc-dev m4
Navrhované balíky:
autobook autoconf-archive autoconf-doc autoconf2.13 gettext gnu-standards libtool binutils-doc bison-doc cpp-doc gcc-4.3-locales gcc-multilib make manpages-dev automake1.9 flex gdb gcc-doc gcc-4.3-multilib libmudflap0-4.3-dev gcc-4.3-doc libgcc1-dbg libgomp1-dbg libmudflap0-dbg glibc-doc ruby1.9-examples rdoc1.9 ri1.9 rubygems1.9
Následující NOVÉ balíky budou nainstalovány:
autoconf automake autotools-dev binutils binutils-multiarch bison cpp cpp-4.3 gcc gcc-4.3 libc6-dev libgmp3c2 libgomp1 libmpfr1ldbl linux-libc-dev m4 make
doinstalování dpkg-dev..
build-essential debian-keyring dpkg-dev g++ g++-4.3 g++-4.3-multilib g++-multilib gcc-4.3-multilib gcc-multilib lib32gcc1 lib32gomp1 lib32stdc++6 libc6-dev-i386 libc6-i386 libstdc++6-4.3-dev libtimedate-perl
instalace file - pro detekci souborů...
apt-get install file libmagic1
aby bylo možné instalovat grub-emu...
k909new:~/grub2_for_diskless/install# apt-get install libncurses5-dev
aby bylo možné mít usb podporu...
k909new:~/grub2_for_diskless/install# apt-get install libusb-dev
A jdeme na vlastní kompilaci..
./configure --enable-mm-debug
k909new:~# apt-get install liblzo2-dev libruby1.8 ruby ruby1.8
k909new:~/grub2_for_diskless/install# apt-get install vflib3-dev
defoma libfreetype6 libfreetype6-dev libice-dev libice6 libkpathsea-dev libkpathsea4 liblzo2-dev libpthread-stubs0 libpthread-stubs0-dev libsm-dev libsm6 libt1-5 libt1-dev libt1-doc libx11-dev libxaw7 libxaw7-dev libxcb-xlib0-dev libxcb1-dev libxext-dev libxmu-dev libxmu-headers libxmu6 libxpm-dev libxt-dev libxt6 vflib3 vflib3-dev
Pozn:
- Při zavolání nápovědy se modul do GRUB2 automaticky natáhne.
- Při zadání několika počátečních znaků příkazu při volání nápovědy, vypíše GRUB nápovědu pro vše, co svým začátkem vyhovuje hledanému řetězci
Příkaz | GRUB legacy | GRUB2 | GRUB2 rescue | Popis příkazu | Příklad |
---|---|---|---|---|---|
acpi | . | ano | . | . | . |
background | ano | . | . | Nastaví barvu pozadí menu zavaděče. | background RRGGBB |
background_image | . | ano | . | Natáhne obrázek na pozadí menu zavaděče | background_image (hd0,1)/grub/obrazek_na_pozadi.png |
badram | . | ano | . | . | . |
blocklist | ano | ano | ano | Vypíše obsah blocklisty | blocklist /grub/soubor |
boot | ano | ano | ano | Spustí proces zavádění OS | . |
bootp | ano | . | . | Pouze při bootu po síti | . |
cat | ano | ano | ano | Vypíše obsah souboru | cat (hd0,1)/grub/grub.cfg |
chainloader | ano | ano | ano | Přepnutí na jiný zavaděč | . |
clear | ano | . | . | . | . |
cmp | . | ano | . | . | . |
color | ano | ano | . | . | . |
configfile | ano | ano | . | Natáhne jiný konfigurační soubor | . |
cpuid | . | ano | . | Měl by vypisovat flags pro procesor (nefachá?) | . |
crc | . | ano | . | Výpočet kontrolního součtu souboru | . |
date | . | ano | . | Příkaz kterým lze vypsat či nastavit aktuální čas | . |
drivemap | . | ano | . | Umožňuje přemapování disků v BIOSu, je-li k dispozici více zařízení | . |
dump | . | ano | . | Vypisuje obsah adresované paměti | . |
displayapm | ano | . | . | Vypíše informace o APM BIOSu | . |
displaymem | ano | Nahrazeno lsmmap | . | Vypisuje co GRUB ví o mapování systémové paměti stroje | . |
echo | . | ano | . | Vypisuje obsah adresované paměti | . |
efiemu_loadcore | . | ano | . | Vypisuje obsah adresované paměti | . |
efiemu_pnvram | . | ano | . | Vypisuje obsah adresované paměti | . |
efiemu_prepare | . | ano | . | Vypisuje obsah adresované paměti | . |
efiemu_unload | . | ano | . | Vypisuje obsah adresované paměti | . |
exit | . | ano | . | Ukončí GRUB (má význam jen v GRUB shellu v systému) | . |
export | . | ano | . | Exportuje proměnnou | . |
false | . | ano | . | Exportuje proměnnou | . |
find | ano | Nahrazen příkazem search | . | Měl by vyhledávat soubory, ale nějak nefungoval... | . |
foreground | ano | ano | . | . | . |
freebsd | . | ano | . | Exportuje proměnnou | . |
freebsd_loadenv | . | ano | . | Natahuje proměnné pro nastavení prostředí FreeBSD | . |
freebsd_module | . | ano | . | Natahuje jaderné moduly FreeBSD | . |
freebsd_elf | . | ano | . | Natahuje jádro FreeBSD | . |
geometry | ano | Nahrazeno příkazem ls | . | . | . |
gptsync | . | ano | . | Cpe hybridní MBR na GPT zařízení. K čemu je to dobré zatím netuším... | . |
halt | ano | ano | . | Nekompromisně stroj zastaví | . |
handler | . | ano | . | Bez parametrů vypisuje seznam tříd handlerů. Je-li jako parametr uvedena třída, vypíše co je aktivní a k dispozici, a umožní je za chodu přepnout | . |
hdparm | . | ano | . | Vypisuje a nastavuje parametry pro přístup k fyzickému disku | . |
hello | . | ano | . | Příkaz hello řekne hello | . |
help | ano | ano | . | Nápověda pro GRUB | . |
hexdump | . | ano | . | Vypíše v hexadecimálním kódu obsah souboru či zařízení určený délkou a offsetem | . |
hide | ano | nahrazuje příkaz parttool | . | Nastavuje diskový oddíl jako skrytý | . |
initrd | ano | ano | . | Natahuje ramdisk | . |
initrd16 | . | ano | ano | Natahuje ramdisk pro 16 bitové OS | . |
insmod | . | ano | ano | Natahuje další moduly do GRUB2 | . |
kernel | ano | Nahrazují jej příkazy multiboot, linux, aj. | . | . | . |
keystatus | . | ano | ano | Příkaz kontroluje aktuální stav kláves CTRL, ALT a SHIFT | . |
loadenv | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
loadfont | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
loopback | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
ls | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
lsfonts | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
lsmmap | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
lsmod | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
lspci | . | ano | . | Vypisuje dostupná zařízení a soubory | . |
makeactive | ano | ano | . | . | . |
map | ano | . | . | . | . |
md5crypt | ano | . | . | Generuje heslo v MD5 formátu | . |
module | ano | ano | . | . | . |
modulenounzip | ano | ano | . | . | . |
pager | ano | ano | . | . | . |
partnew | ano | ano | . | . | . |
parttype | ano | parttool | . | . | . |
parttool | . | ano | ano | . | . |
password | ano | ano | ano | . | . |
pause | ano | . | . | Bylo použito u starého grubu | . |
play | . | ano | ano | . | . |
probe | ano | ano | . | . | . |
pxe | . | ano | ano | . | . |
quit | ano | Nahrazeno příkazem exit | . | Ukončí GRUB (má význam jen v GRUB shellu v systému) | . |
rarp | ano | . | . | ? | . |
read | ano | dump | . | . | . |
read_byte | . | ano | ano | . | . |
read_dword | . | ano | . | . | . |
read_word | . | ano | . | . | . |
reader.normal | . | ano | ano | Přepne na normální GRUB shell | |
reader.rescue | . | ano | ano | Přepne na záchranný GRUB shell | |
reboot | ano | ano | ano | Spustí restart | . |
rescue | ano | . | . | . | . |
rmmod | ano | ano | . | . | . |
root | ano | ano | . | . | . |
rootnoverify | ano | . | . | . | . |
save_env | ano | ano | . | . | . |
search | . | ano | ano | Měl by hledat podle souborů zařízení, ale nějak jsem ho nepochopil | |
serial | ano | ano | ano | . | |
set | . | ano | ano | . | |
setkey | ano | . | . | . | . |
setup | ano | . | . | . | . |
shade | ano | . | . | . | . |
sleep | . | ano | ano | . | |
source | . | ano | ano | . | |
splashimage | ano | Nahrazuje background_image | . | . | . |
terminal | ano | . | . | . | . |
terminal_input | . | ano | . | . | . |
terminal_input.at_keyboard | . | ano | . | . | . |
terminal_input.console | . | ano | . | . | . |
terminal_input.serial | . | ano | . | . | . |
terminal_input.usb_keyboard | . | ano | . | . | . |
terminal_output | . | ano | . | . | . |
terminal_output.console | . | ano | . | . | . |
terminal_output.gfxterm | . | ano | . | . | . |
terminal_output.serial | . | ano | . | . | . |
terminal_output.vga | . | ano | . | . | . |
terminal_output.vga_text | . | ano | . | . | . |
terminfo | ano | ano | . | Vypíše aktuální nastavení terminálu pro GRUB shell | . |
test | . | ano | . | . | . |
testvbe | ano | ano | . | . | . |
true | . | ano | . | . | . |
unhide | ano | ano | . | . | . |
unset | . | ano | . | . | . |
uppermem | ano | ano | . | . | . |
usb | . | ano | . | . | . |
vbeinfo | . | ano | . | . | . |
vbeprobe | ano | ano | . | . | . |
vbetest | . | ano | . | . | . |
videotest | . | ano | . | . | . |
viewport | ano | ano | . | . | . |
write_byte | . | ano | . | . | . |
write_dword | . | ano | . | . | . |
write_word | . | ano | . | . | . |
xnu_devtree | . | ano | . | . | . |
xnu_kernel | . | ano | . | . | . |
xnu_kext | . | ano | . | . | . |
xnu_kextdir | . | ano | . | . | . |
xnu_mkext | . | ano | . | . | . |
xnu_ramdisk | . | ano | . | . | . |
xnu_resume | . | ano | . | . | . |
xnu_splash | . | ano | . | . | . |
xnu_uuid | . | ano | . | . | . |
zfs_bootfs | . | ano | . | . | . |
zfsinfo | . | ano | . | . | . |