07.01.2013 Views

Linux i386 Önyükleme Kodu NASIL

Linux i386 Önyükleme Kodu NASIL

Linux i386 Önyükleme Kodu NASIL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Linux</strong> <strong>i386</strong> <strong>Önyükleme</strong> <strong>Kodu</strong> <strong>NASIL</strong><br />

read_it() ayrıntıları için bakınız Diski Oku (sayfa: 14). E˘ger zImage’ı yüklüyorsak, vmlinux 0x10000<br />

(SYSSEG:0) adresine yüklenir.<br />

bzImage (bbootsect, bsetup, bvmlinux) artık tümüyle bellekte bulunuyor.<br />

3.5. Ayarlara Git<br />

///////////////////////////////////////////////////////////////////////////////<br />

// hangi kök aygıtın kullanılaca˘gına bak ve setup.S’e sıçra<br />

int root_dev; // tools/build tarafından üzerine yazılır<br />

{<br />

if (!root_dev) {<br />

switch (sectors) {<br />

case 15: root_dev = 0x0208; // /dev/ps0 – 1.2Mb<br />

break;<br />

case 18: root_dev = 0x021C; // /dev/PS0 – 1.44Mb<br />

break;<br />

case 36: root_dev = 0x0220; // /dev/fd0H2880 – 2.88Mb<br />

break;<br />

default: root_dev = 0x0200; // /dev/fd0 – auto detect<br />

break;<br />

}<br />

}<br />

}<br />

// önyükleme blo˘gundan sonra do˘grudan yüklenen ayar yordamına sıçra<br />

goto SETUPSEG:0;<br />

Denetimi bsetup’a geçirir. linux/arch/<strong>i386</strong>/boot/setup.S (sayfa: 18) bölümündeki<br />

linux/arch/<strong>i386</strong>/boot/setup.S:start’a bakınız.<br />

3.6. Diski Oku<br />

A¸sa˘gıdaki i¸slev bsetup ve bvmlinux’u diskten yüklemek için kullanılır. Dikkat ederseniz syssize<br />

linux/arch/<strong>i386</strong>/tools/build.c (sayfa: 10) içindeki tools/build tarafından de˘gi¸stirilmi¸stir.<br />

sread: .word 0 # geçerli iz’in (track) sektör okuması<br />

head: .word 0 # geçerli kafa<br />

track: .word 0 # geçerli iz<br />

///////////////////////////////////////////////////////////////////////////////<br />

// load the system image at address SYSSEG:0<br />

read_it(ES=SYSSEG)<br />

int syssize; /* 16–bayt türünden sistem boyutu<br />

* tools/build tarafından üzerine yazıldı */<br />

{<br />

if (ES & 0x0fff) die; // hizalama 64KB de˘gil<br />

BX = 0;<br />

for (;;) {<br />

rp_read:<br />

#ifdef _ _BIG_KERNEL_ _<br />

bootsect_helper(ES:BX);<br />

/* INITSEG:0220==SETUPSEG:0020 – bootsect_kludge,<br />

* SETUPSEG:bootsect_helper() gösterici içerir.<br />

* Bu i¸slev bazı veriyapılarını ba¸slangıç durumuna getirir<br />

http://belgeler.org <strong>Linux</strong> Kitaplı˘gı 14 / 77

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!