2003-07-15 09:03:10

by Koala GNU

[permalink] [raw]
Subject: Re: Linux boot code

Hi, Riley,

thanks for your reply.

I noticed the native boot code for floppy is not supported any more. In
fact in the current code display a message and reboot the machine after
the press of a key.

But I am interested on how the old native boot code worked.

Do you know if there is a particular reason why the boot sector is moved
to 0x9000:0 (excuse me if I repeat the question, but I need help on this)?

I hope someone else can point me a site where is reported the format of
the floppy parameter table at address 0x0:0x78.

Thanks in advance and excuse me for this other post.

Riley Williams wrote:

>Hi.
>
> > I am looking at the boot code in bootsect.S and I have some doubt.
> > I tried to search the answers to my questions on
> > marc.theaimsgroup.com and on Google but I haven't found them.
>
>I know nothing about the former site, so can't comment thereon.
>
> > Probably these are newbie question but I'll appreciate if someone
> > of you help me.
>
>I'll do what I can.
>
> > 1) In the bootsect code the first thing that is done is to copy
> > the boot sector to 0x90000 and move the program count to
> > 0x9000, go. Why it is necessary move the code there? Is it not
> > possible continue the process from 0x7C00?
>
>Following moving the boot code there, the next step is to load the
>kernel image, either from 0x10000 (64k) or from 1M upwards, this
>being dependent on various factors. However, the boot sector holds
>several flags whose values are important AFTER the kernel image has
>been loaded, so is moved out the way first.
>
> > 2) Another step is to move the parameters table from 0x78:0 to
> > 0x9000:0x4000-12. What are the info contained in this table?
> > Can you send me a link to a site that specify these info?
> > Without these info I am not able to understand these three
> > line of code
> >
> > movb $36, 0x4(%di) # patch sector count
> > movw %di, %fs:(%bx)
> > movw %es, %fs:2(%bx)
>
>That area of memory contains parameters configured by the BIOS of
>the machine in question. I would suspect it's the parameters for
>the floppy drives, and the code that follows is presumably that
>used to determine how many sectors per track the floppy in /dev/fd0
>actually has.
>
> > Thanks in advance for your help
>
>No problem.
>
>Best wishes from Riley.
>---
> * Nothing as pretty as a smile, nothing as ugly as a frown.
>
>---
>Outgoing mail is certified Virus Free.
>Checked by AVG anti-virus system (http://www.grisoft.com).
>Version: 6.0.500 / Virus Database: 298 - Release Date: 10-Jul-2003
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/
>
>
>



2003-07-15 15:51:19

by Randy.Dunlap

[permalink] [raw]
Subject: Re: Linux boot code

On Tue, 15 Jul 2003 11:17:46 +0200 Koala GNU <[email protected]> wrote:

| Hi, Riley,
|
| thanks for your reply.
|
| I noticed the native boot code for floppy is not supported any more. In
| fact in the current code display a message and reboot the machine after
| the press of a key.
|
| But I am interested on how the old native boot code worked.
|
| Do you know if there is a particular reason why the boot sector is moved
| to 0x9000:0 (excuse me if I repeat the question, but I need help on this)?

Why do you need to know?

IIRC, it's because the code being loaded also (usually) is written
as a boot loader also, and boot loaders often assume that they are
loaded at 0:7c00. (disclaimer: it's been a few years since I worked
on boot loaders.)

| I hope someone else can point me a site where is reported the format of
| the floppy parameter table at address 0x0:0x78.

http://www.delorie.com/djgpp/doc/rbinter/id/55/24.html (for one)

--
~Randy
| http://developer.osdl.org/rddunlap/ | http://www.xenotime.net/linux/ |

2003-07-15 17:49:46

by Hua Zhong (hzhong)

[permalink] [raw]
Subject: RE: Linux boot code

How It Works:
DOS Floppy Disk Boot Sector

http://www.ata-atapi.com/hiwdos.htm#T8

> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Koala GNU
> Sent: Tuesday, July 15, 2003 2:18 AM
> To: Riley Williams; linux-kernel
> Subject: Re: Linux boot code
>
>
> Hi, Riley,
>
> thanks for your reply.
>
> I noticed the native boot code for floppy is not supported
> any more. In
> fact in the current code display a message and reboot the
> machine after
> the press of a key.
>
> But I am interested on how the old native boot code worked.
>
> Do you know if there is a particular reason why the boot
> sector is moved
> to 0x9000:0 (excuse me if I repeat the question, but I need
> help on this)?
>
> I hope someone else can point me a site where is reported the
> format of
> the floppy parameter table at address 0x0:0x78.
>
> Thanks in advance and excuse me for this other post.
>
> Riley Williams wrote:
>
> >Hi.
> >
> > > I am looking at the boot code in bootsect.S and I have some doubt.
> > > I tried to search the answers to my questions on
> > > marc.theaimsgroup.com and on Google but I haven't found them.
> >
> >I know nothing about the former site, so can't comment thereon.
> >
> > > Probably these are newbie question but I'll appreciate if someone
> > > of you help me.
> >
> >I'll do what I can.
> >
> > > 1) In the bootsect code the first thing that is done is to copy
> > > the boot sector to 0x90000 and move the program count to
> > > 0x9000, go. Why it is necessary move the code there? Is it not
> > > possible continue the process from 0x7C00?
> >
> >Following moving the boot code there, the next step is to load the
> >kernel image, either from 0x10000 (64k) or from 1M upwards, this
> >being dependent on various factors. However, the boot sector holds
> >several flags whose values are important AFTER the kernel image has
> >been loaded, so is moved out the way first.
> >
> > > 2) Another step is to move the parameters table from 0x78:0 to
> > > 0x9000:0x4000-12. What are the info contained in this table?
> > > Can you send me a link to a site that specify these info?
> > > Without these info I am not able to understand these three
> > > line of code
> > >
> > > movb $36, 0x4(%di) # patch sector count
> > > movw %di, %fs:(%bx)
> > > movw %es, %fs:2(%bx)
> >
> >That area of memory contains parameters configured by the BIOS of
> >the machine in question. I would suspect it's the parameters for
> >the floppy drives, and the code that follows is presumably that
> >used to determine how many sectors per track the floppy in /dev/fd0
> >actually has.
> >
> > > Thanks in advance for your help
> >
> >No problem.
> >
> >Best wishes from Riley.
> >---
> > * Nothing as pretty as a smile, nothing as ugly as a frown.
> >
> >---
> >Outgoing mail is certified Virus Free.
> >Checked by AVG anti-virus system (http://www.grisoft.com).
> >Version: 6.0.500 / Virus Database: 298 - Release Date: 10-Jul-2003
> >
> >-
> >To unsubscribe from this list: send the line "unsubscribe
> linux-kernel" in
> >the body of a message to [email protected]
> >More majordomo info at http://vger.kernel.org/majordomo-info.html
> >Please read the FAQ at http://www.tux.org/lkml/
> >
> >
> >
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe
> linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>