After a few weeks of porting 五OS to 64bits and finally managed to get it running on QEmu, I tried running the resulting OS image on a real piece of hardware: my Panasonic CF-R6 from GeekStuff4U.
Of course as I don’t want to bother yet with USB drivers (that’s next in line in the TODO list, but for now we can somewhat survive without), I decided to use our blkdev/bios driver (legacy 16bits driver via BIOS interrupts, using core/x86emu 16bits emulator).
Same with graphics mode, don’t have a Intel driver yet, so we’ll use display/vesa_legacy 16bits driver (which also makes use of core/x86emu 16bits emulator to get graphics adapter’s bios working).
At first, I found out that the new compact bootloader wasn’t working properly. This was fixed by enabling Unreal Mode (a way of tricking the CPU into thinking ds and es segments are really mapped in 32bits mode while still being in 16bits mode).
The next problem I encountered was when the “hard disk” (the usb drive, in fact) was detected, we couldn’t display the size. I tracked this to some weird bug in our current printf() implementation that makes a real system freeze when displaying a float (it works seamlessly on virtual system). Removing the display of detected disk size fixed this problem too, but it’s not a permanent fix.
Once those two points were fixed, everything else worked. I could access our marvelous “shell”, type commands (I issued “lsmod”, “cat sample.txt” and “modp misc/helloworld”) and see that it was good.
My RTL-8139 network controller was detected and module nic/rtl8139 loaded, IPv4 enabled, and most things were working. I believe the next step will be to test the scheduler, optimize it, and start working on the TCP stack. At the same time, a cache system at VFS level and another at block device level should be implemented using a kernel generic cache allocator (that will automatically free physical pages when memory is needed), process switching should make use of CR0.TS to know when we need to switch MMX/SSE2 context, and the keyboard input should be improved.
At the same time, a generic HCI stack is needed for USB, and OHCI/EHCI/UHCI should be implemented (something has been started, but it’s far from complete).
Thanks for everyone who has been providing support to the project, I hope to be able to provide more impressive news soon !






#1 by Choupidou on 2009/05/17 - 00:30
Quote
Hey! Oh! Lets Go (OS)!
It’s really cool that this project still runs.
Good luck to you!