Skip to contentSkip to conversation

Linux boot code

DISCUSSION Riley Williams 4 participants 4 messages Jul 14, 2003 – Jul 15, 2003 1 message not in the archive

lore
Share & tools
lore
#1 lore raw
In reply to a message not in the archive

Hi.

Quoted 3 lines

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.

Quoted 2 lines

Probably these are newbie question but I'll appreciate if someone of you help me.

I'll do what I can.

Quoted 4 lines

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.

Quoted 9 lines

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.

Quoted 1 line

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

#2 lore raw

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.

Quoted 61 lines · Riley Williams

Hi.

Quoted 3 lines

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.

Quoted 2 lines

Probably these are newbie question but I'll appreciate if someone of you help me.

I'll do what I can.

Quoted 4 lines

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.

Quoted 9 lines

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.

Quoted 1 line

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/

#3 lore raw

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/ |

#4 lore raw
In reply to Koala GNU

How It Works:
DOS Floppy Disk Boot Sector

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

Quoted 104 lines

-----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.

Quoted 48 lines · Riley Williams

Hi.

Quoted 3 lines

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.

Quoted 2 lines

Probably these are newbie question but I'll appreciate if someone of you help me.

I'll do what I can.

Quoted 4 lines

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.

Quoted 9 lines

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.

Quoted 1 line

Thanks in advance for your help

No problem.

Best wishes from Riley.
---
* Nothing as pretty as a smile, nothing as ugly as a frown.

Quoted 7 lines

---
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

Quoted 6 lines

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/