Hi folks and D. Stimits,
Summary of discussion taken place so far (for linux-kernel people):
D. Stimits noticed he can not boot his kernel from a 1.44MB floppy
created with "make bzdisk". This would lead into a register dump. The
dump does show the boot code tries to read track 80 of the disk.
However mkbootdisk as delivered with a pre-release of the RedHat 7.1
distribution can be used to create a working boot disk using the bzImage
generated by above.
My last question to D. Stimits was:
> > How large is the file ./arch/i386/boot/bzImage?
And he answered
> 1040155 Feb 24 23:28 bzImage
>
> Definitely within 1.44 Mb floppy size.
I see following problem with the bootsector code for bzImage:
Within bootsector the size of the kernel is stored as number of 16 byte
blocks. This gives a number of 0xfdf2 in this case.
Now while loading the kernel the bootsector code calls a helper routine
(in setup[.S]) which does copy 64kByte if available and does nothing
else. This routine does the return the number of 16 byte blocks read.
This number then is a multiple of 1000h.
So no when a kernel of above size is completely loaded the count of the
16 byte blocks returned by the helper routine wents from f000h into
0000h due to the 16 bit size of the register ax used. The bootsector
code does then compare 0000h to fdf2h and it is less, so it does
continue loading until it does reach the end of the disk and fails with
a read error.
Malware