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