GNU GRUB

botond küldte be 2019. 12. 21., szo - 17:33 időpontban

Tartalom

 

Ismertető

A GRUB a GNU Project operációs rendszert betöltő szoftvercsomagja, amely segítségével a számítógép indításakor kiválasztható, hogy melyik rendszer induljon el, amennyiben a gépre több is fel van telepítve, vagy éppen egy adott kernel konfiguráció indítását is lehetővé teszi az adott operációs rendszer partícióján.

A GNU GRUB a Grand Unified Bootloader nevű csomagból került kifejlesztésre, melyet főleg Unix-szerű operációs rendszerekhez használnak. A GNU operációs rendszer a GNU GRUB-ot használja indítóként, mint a legtöbb Linux disztribúció és a Solaris operációs rendszer az x86 rendszereken, kezdve a Solaris 10 1/06 kiadásával.

 

 

Működése

A számítógép bekapcsolásakor a BIOS megkeresi az elsődlegesként beállított indító eszközt (általában a számítógép egy merevlemezét, de indulhat CD/DVD, vagy USB eszközről is), és betölti, majd végrehajtja a kiválasztott eszköz MBR-jében (Master Boot Record) talált rendszerindító (boot loader) programot. Az MBR a merevlemez első szektora, amit nullával számoznak.

Hosszú időn át a szektorok mérete 512 byte volt, de 2009 óta rendelkezésre állnak olyan merevlemezek is, amelyek szektormérete 4096 byte, úgynevezett Advanced Format. Azonban 2013 októberétől az ilyen merevlemezek továbbra is elérhetőek az 512 byte-os szektorméretekkel, az 512e emuláció használatával.

Az MBR rekord 512 byte helyet foglal, ami elegendő lehet egy nagyon egyszerű rendszerbetöltő gépi kódjához, de nem elég nagy ahhoz, hogy elférjen benne egy összetett, több fájlrendszert is támogató, menü vezérelt, stb. rendszerindító. Ezért a nagyobb méretű rendszerbetöltők több darabra vannak osztva, ahol a kis méretű indítórész belefér az MBR-be, ami átadja a vezérlést a merevlemez más területén tárolt nagyobb résznek, ami már meg tud jeleníteni egy menü vezérelt  felhasználói felületet, több fájlrendszer támogatással, egyéni beállításokkal, stb.

Az operációs rendszerek kerneljeinek a képfájljai a legtöbb esetben a betölteni kívánt operációs rendszer fájlrendszerében található fájlok, amik a BIOS által közvetlenül hozzáférhetetlenek, mivel a BIOS számára ismeretlen az adott fájlrendszer struktúrája. Ezért a BIOS-alapú rendszereken a rendszerbetöltők feladata tehát a kernel fájlokhoz való hozzáférés, memóriába töltése és végrehajtása. Ezt a rendszerbetöltők kétféle megközelítéssel valósíthatják meg:

A kernelképek betöltésének az egyik lehetséges megközelítése a merevlemez szektorainak közvetlen elérése, anélkül, hogy ismeretes lenne a mögöttes fájlrendszer struktúrája. Ehhez a módszerhez további ún. "térképfájlok" használatára is szükség van, amik olyan kiegészítő fájlok, amik tartalmazzák a kernelképek által elfoglalt fizikai szektorok listáját. Ezeket a fájlokat minden olyan alkalommal frissíteni kell, amikor a kernelképfájlnak megváltozik a fizikai helye a lemezen, például kernel frissítéskor, vagy a fájlrendszer töredezettségmentesítésekor, stb. Továbbá ha a térképfájlok helye vagy mérete is megváltozik, akkor ezeknek a pozícióit is frissíteni kell a rendszerbetöltő kódjában az MBR-ben, hogy a módszer továbbra is működhessen. Ez nem csak nehézkes, hanem a rendszer kézi javítását is szükségessé teszi, ha valami hiba adódik a rendszer frissítések során.

A másik megközelítés az, hogy a rendszerbetöltő felismeri az alapul szolgáló fájlrendszereket, így a kernelképeket el tudja érni a fájlrendszeren belüli tényleges fájlútvonaluk alapján. Ehhez a rendszer betöltőnek tartalmaznia kell az illesztőprogramokat a támogatott fájlrendszerekhez, hogy felismerhesse azokat. Ez a megközelítés kiküszöböli a merevlemez-szektorok fixen kódolt helyének a szükségességét és a térképfájlok használatát, valamint nem igényel MBR frissítéseket a kernelképfájlok hozzáadása, módosítása vagy mozgatása esetén. Ilyenkor a rendszerbetöltő konfigurációja egy normál fájlban tárolódik, amely szintén hozzáférhető a fájlrendszer ismeretében, amit még a kernel futtatása előtt betölthet, hogy az operációs rendszer magja a kiválasztott konfigurációval indulhasson. Ennek eredményeként jelentősen csökken annak a lehetősége, hogy hiba csússzon be a betöltési folyamatba a rendszer frissítések során. Egyetlen negatívumként említendő, hogy az ilyen bonyolultabb rendszerbetöltők, nagyobb helyet foglalnak a merevlemezen.

A GNU GRUB az utóbbi módszert használja, azáltal, hogy sokféle fájlrendszert ismerve megtalálja az azokban lévő kernelképfájlokat. Maga a GRUB több részre oszlik, lehetővé téve, hogy az indító része beférjen a merevlemez MBR indító szektorába.

A GRUB-al az is megoldható, hogy nem egy operációs rendszert, hanem egy másik rendszerbetöltőt indítson el, például egy másik merevlemezen lévő Windows Loadert, ami szintén tartalmazhat több betölthető Windows változatot.

 

Változatai

A GRUB két fő verziója van használatban: A GRUB 1. verziója, amelyet GRUB legacy-nek hívnak, csak a Linux disztribúciók régebbi kiadásaiban fordul elő. amelyek közül néhány még most is használatban van és támogatott, például a CentOS 5. A GRUB 2. verziójának fejlesztését teljesen előről kezdték, és elődjének a leváltására szánták, amit ma a Linux disztribúciók többsége is használ.

 

 

Címkék