On Thu, Mar 23, 2006 at 09:34:02AM +0100, Gábor Lénárt wrote:
> On Thu, Mar 23, 2006 at 08:41:56AM +0100, Kosa Attila wrote:
> > On Thu, Mar 23, 2006 at 08:12:47AM +0100, Zs wrote:
> > > 
> > > Hmmm... A Linux ugyi nem is használja a BOIS-t, tehát ebben az esetben
> > > a BIOS workaround sem szükséges.
> > 
> > Ez igy, ebben a formaban nem igaz. A Linuxnak is szuksege van a
> > BIOS tamogatasara, legalabbis a rendszer betoltesehez. Igaz,
> 
> Tehat tovabbra is az igaz amit mondtam: a kernel betoltese a boot loader
> feladata, ne keverjuk bele ebbe a kernelt.

En csak azt mondtam (meglehetosen pongyolan fogalmazva, az igaz),
hogy nem igaz az, hogy a Linux nem hasznalja a BIOS-t.

Az is igaz, hogy a kernel betoltese a bootloader feladata (de
peldaul lilo eseten BIOS-hivasokkal fer hozza a diszken levo
kernelhez, sot, meg a bootloader masodlagos reszehez is). Es a
bootloader-re is a BIOS adja ra a vezerlest :)

A BIOS a fizikai 0 címen inicializálja a megszakítási
vektortáblázatot, majd a rendszerbetöltő területre, vagyis a
0x7C00 címre tölti be a bootolható eszköz (floppy, merevlemez)
legelső szektorát (Ez a szektor a rendszerbetöltő első 512
byte-ját tartalmazza, ami a rendszer indításáért felelős. Ezt a
szektort nevezik MBR-nek. Ez az 512 byte-os szektor tartalmaz
egy Intel x86 gépi kódú betöltőprogramot.), majd erre a címre
ugrik (a 19h megszakítást meghíva), és végrehajtja az ott
található kódot. Ebben a szektorban pedig a rendszerbetöltő
elsődleges része található, és máris átkerült a vezérlés az ő
fennhatósága alá.

[...]

A kernel eleje a 0x90000 kezdődő 512 byte-nyi memóriaterületre
töltődik. Ez a 0x90200 címen levő kernel setup területre betölti
a boot eszközről a kernel-image következő 2 KB-ját. A kernel
további része a 0x10000 címen kezdődő kernel területre, a map
fájl pedig a 0x9D000 címen található map load területre töltődik.
A rendszer betöltését az arch/i386/boot/bootsect.S fájlban
kísérhetjük nyomon. Itt minden bizonnyal hamar rábukkanunk arra a
Loading feliratra is, amit a rendszer betöltése közben látunk a
képernyőn.

Az arch/i386/boot/setup.S fajl felelos azert, hogy a BIOS-tol
kapott adatokat a rendszer a memoria megfelelo helyere tegye. A
memoria, a merevlemez es egyeb parametereket a biztonsagos
0x90000-0x901FF cimen helyezi el (ahol eredetileg a boot blokk
volt). Ezutan a rendszert a 0x10000 cimrol a 0x1000 cimre (erre a
cimre csak a zImage fajlok toltodnek, a bzImage fajlok helye a
0x100000 cimen van) masolja, es vedett modba lep.

Ebbol kifolyolag nem mondanam azt, hogy a Linux nem hasznalja a
BIOS-t...

-- 
                Udvozlettel
                                    Zsiga
_________________________________________________
linux lista      -      [email protected]
http://mlf2.linux.rulez.org/mailman/listinfo/linux

válasz