Page 1 of 2

spoon - 28.02.2005

Posted: Sun Feb 27, 2005 6:56 pm
by durand
:)

I've released a new bootable ISO with my new code, system initialization and MPEG player.

Website: http://www.djm.co.za/spoon/
ISO: http://www.djm.co.za/spoon/cdrom.tar.gz (+- 13MB. sorry.)

I'm looking for feedback on booting problems. I'm really just concerned with:

1. Do the kernel initialize successfully?
2. Does the cdrom + hard drive get detected successfully?
3. Can the cdrom mount?
4. Can you run a binary from the cdrom?

I don't mind GUI problems, issues or quirks. Those will all disappear in time.

Requirements:

1. Pentium 2+
2. 128MB+ RAM
3. CDROM booted from first ATAPI device. (ie, the first cdrom you have installed.). Or else it will mount the wrong CD.
4. VESA with VBE2 that supports 800x600x32
5. Booting on a real machine and NOT AN EMULATOR. :-\

It won't work on VMWare, QEMU and probably Bochs :-\ Their simulated ATAPI devices don't return correct codes during init. I still need to support them.

Things to try out:

1. I-Robot MPEG trailer. ;D In GUI mode and from the terminal, run:

Code: Select all

/spoon/system/bin/mpeg2decode -b /spoon/system/media/I_ROBOT_320X176.MPG -f -r -o6 -q
(btw, my iso9660 fs isn't case sensitive)

The speed of this trailer will depend entirely on the speed of your card's VESA support. So it might be slow.


The mpeg2decode application will crash on exit as well. I know about it.


Durand.

Re:spoon - 28.02.2005

Posted: Tue Mar 01, 2005 1:05 am
by distantvoices
I couldn't burn that ISO9660-image. K3B (only a frontend to cdrecord) remarked that "this is not a valid iso image" and exited. The floppy image worked well - in qemu and on real pc.

Kernel initialized properly (recognized the correct amount of memory f. ex.), spilled lots of stuff to the screen and sooner or later dropped me either to the gui or to the console, depending on what I indicated in grub start menue.

Other things I need to retest. you gonna give the gui some changes, so I won't remark ;)

Do you by any chances plan to implement "cd"? It'd be nifty to have it at hands to browse the file system. :-)

Re:spoon - 28.02.2005

Posted: Tue Mar 01, 2005 2:32 am
by durand
yeah, "cd" would be very useful ;) but I haven't got around to it. I just "ls [path]" all the time... it's getting tired though.

Sorry about the ISO. I downloaded it here, untar'ed it and it worked fine. Maybe it was a freak download.

Thanks for trying it out. I was checking this forum every few minutes for a reply but there was none :) I was beginning to lose hope.


Glad it works..

Re:spoon - 28.02.2005

Posted: Tue Mar 01, 2005 6:22 am
by smiddy
I should get an opportunity to test it out this evening. I'll report back then from the three machines I have, if I can get an ISO working (one machine has only a DVD drive).

Re:spoon - 28.02.2005

Posted: Tue Mar 01, 2005 12:46 pm
by smiddy
The following is what I received on machine 1:
(AMD 3000+, 640MB RAM, MSI MB)

Code: Select all

                      Current Process: init.main vm@003BC000
KERNEL STACK: [003DE000:003FE000]  USER STACK: [F9FE0000:FA000000]
--------- MAIN PROCESS NEEDS MORE STACK --
TABLE AT: 01E36000 - PAGE NOT PRESENT.
CR2: F9FFFFFC CR3:0012D000 TSS CR3 = 003BC000
EAX = 00000001 EBX = 00000023 ECX = 00000003 EDX = 80014000
GS = 00000023 ES = 00000023 FS = 00000023 DS = 00000023
ESP0 = 003FE000 ESP1 = 00000000 ESP2 00000000 ESP = FA000000
SS0 = 00000010 SS1 = 00000011 SS2 00000012 SS = 00000023
EFLAGS = 00010202 ( BASE INT )
CS:EIP = 1B:80001868 SS:ESP = 23:FA000000
memory.c (0000000194): mem_block_unset: 1CBF000 freeing free memory

The following is what received on machine 2:
(AMD 1900+, 1GB RAM, ASUS MB)

Code: Select all

                      Current Process: init.main vm@003BE000
KERNEL STACK: [003DF000:003FF000]  USER STACK: [F9FE0000:FA000000]
--------- MAIN PROCESS NEEDS MORE STACK --
TABLE AT: 01E36000 - PAGE AT: 003C800
CR2: 80001868 CR3:0012D000 TSS CR3 = 003BE000
EAX = 00000001 EBX = 00000002 ECX = 00000003 EDX = 80014000
GS = 00000023 ES = 00000023 FS = 00000023 DS = 00000023
ESP0 = 003FF000 ESP1 = 00000000 ESP2 00000000 ESP = FA000000
SS0 = 00000010 SS1 = 00000011 SS2 00000012 SS = 00000023
EFLAGS = 00010202 ( BASE INT )
CS:EIP = 1B:80001868 SS:ESP = 23:FA000000
memory.c (0000000194): mem_block_unset: FFFFF000 freeing free memory

That's as far as she gets. The CD-ROM ISO didn't work either...and Bochs didn't boot as well (not that you care). Both were started diskless.

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 2:48 am
by durand
Thanks smiddy. That died horribly. :-/ That's a cool error. I'll find out what caused it.

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 3:17 am
by distantvoices
the same error as smiddy I've got yesterday evening upon trying the floppy image on my toshiba satellite 1700/300 laptop (intel celeron 650 mhz, 128 mb ram, ati rage mobility). Just been a tad too tired to put the result online.

Btw: I've downloaded the iso thrice and everytime with the same result: K3B didn't recognize it as iso. I've been desperate then and told it to burn the thing on a cd-r neverthe less just to see what comes out of that adventure: Nothing. The Laptop cdrom and the cdrom in my main development machine didn't recognize the cdrom as something to read from.

Maybe it has to do with our versions of gzip and tar? Don't know, it's just a shot in the dark.

Stay safe

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 5:50 am
by durand
That's very very strange. Is it being downloaded as binary and not ascii? Maybe your proxy is converting it? Extract the tarball like this:

tar -xzf ./cdrom.tar.gz

You'll get a "cdrom.iso" file. This file is a pure ISO9660 file system without joliet, rockridge, etc, extensions.

You should also be able to mount it in linux as a loop back device:

(as root) mount -o loop ./cdrom.iso /mnt

and go exploring.

Drats. Anyway, the issue with the AMD and the Intel Celeron 650 MHz lead me to believe it's a processor thing.

I'm using 4MB pages which are only supported on the later chips. I'll only be able to investigate later though.

Thanks for the effort, guys.

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 6:24 am
by smiddy
My other machine has Intel Extreme but it only has a DVD-RW for an external bootable device. If I get the opportunity to re-look at the ISO tonight I will, so that I can help confirm an AMD issue or I will make a bootable CD-ROM from the floppy image...I also want to check the other settings too. I am time limited, but want to help if you don't mind my slowness. ;)

BTW, I forgot to mention, both of these systems have nVidia boards, 64MB and 32MB respectively. The third machine, that hasn't been checked, has ATI with 128MB.

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 6:43 am
by distantvoices
@durand: The thing is, that i am doing exactly this: download the stuff as bin file (firefox does ask me what to do with the file and I tell: download as binary) and then say: tar zvxf cdrom.tar.gz. this reveals a nice cdrom.iso-file in the working dir.

This file then is not even recognized by qemu, bochs or vmware as a valid image to boot from. I give it a shot today evening. This canna be true. *grmpf*

regarding the amd stuff: from floppy.img it boots up on an amd xp 1700+/asus mobo/512 mb ram/nvidia riva tnt2 32 mb vram. No problem with that machine.

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 9:54 am
by smiddy
beyond infinity wrote:regarding the amd stuff: from floppy.img it boots up on an amd xp 1700+/asus mobo/512 mb ram/nvidia riva tnt2 32 mb vram. No problem with that machine.
That about kills the AMD thought process...must be something else, eh? What ASUS board? Mine is K7A266...

Re:spoon - 28.02.2005

Posted: Wed Mar 02, 2005 4:20 pm
by durand
Okay. I still suspect it's a CPU feature issue though - specifically related to paging.

So I've uploaded a new floppy image with some long overdue CPU feature detection code for all the features I'm using. If the CPU is missing a feature, then it will complain and halt.

If this isn't the problem, then there's something a bit more serious going on.... :-\

http://www.djm.co.za/spoon/floppy.tar.gz

Anyway, thanks for the help. I really appreciate it.

Interestingly, QEMU doesn't report that it supports SYSENTER/SYSEXIT and yet it does... (or seems to). So many things work because of luck... you never know. But it does.

Re:spoon - 28.02.2005

Posted: Thu Mar 03, 2005 1:31 am
by AR
I let it run in Bochs and it got stuck after GRUB entered it (or it was incredibly slow since I left it for about 10-30 minutes and nothing came up on the screen), but you aren't interested in that.

I tested it on an AMD Duron 800Mhz, 256MB RAM which failed the feature test since it doesn't have SSE. Durons are K7, GCC doesn't feature an optimiser for it though so the closest is probably i586.

Re:spoon - 28.02.2005

Posted: Thu Mar 03, 2005 1:35 am
by distantvoices
Have just tried to test it in qemu - et voila it refuses due to lack of sysenter/sysexit. Gonna check out how it does on my machine at home. :-)

Re:spoon - 28.02.2005

Posted: Thu Mar 03, 2005 1:30 pm
by mystran
AR wrote: I tested it on an AMD Duron 800Mhz, 256MB RAM which failed the feature test since it doesn't have SSE. Durons are K7, GCC doesn't feature an optimiser for it though so the closest is probably i586.
GCC does feature an optimiser for it, in recent versions anyway. The correct -march (or -mcpu) setting is (usually) "athlon". There are also AMD specific settings for "k6", "k6-2", "k6-3", "athlon-tbird", "athlon-4", "athlon-xp" and "athlon-mp".

"i586" is the same as "pentium" and "i686" is the same as "pentiumpro" so if you are using ancient GCC without direct AMD targets (or what more general setting) the correct on is "i686" as Durons are definitely pentiumpro-compatible. :)