Hi,
I'm currently evaluating using the L4ka:Pistachio kernel on the x86
architecture as the core of an operating system project I am part of.

I'm building from the latest sources on the Mercury repository system with
GCC 4.4.1 and Binutils 2.19.1.20090418 on Arch Linux (Linux 2.6.x). The
build process completes flawlessly. I am trying to boot into the kernel
through GRUB (I'm testing on VMware Workstation 6.5.2), by loading kickstart
at the kernel, followed by the modules x86-kernel, sigma0, then one of the
sample applications (pingpong, grabmem. l4test). Kickstart boots into the
system, but once the kernel has loaded the system appears nonoperational:

[pasted below]
KickStart 0.13.06
Detected multiboot compliant loader
_kernel    (0x00816000-0x00840995)   => 0x001444a0
  (0x00816000-0x00829192) -> 0x00100000-0x00113192
  (0x0082a000-0x0082a4b8) -> 0x00115000-0x001154b8
  (0x0082b000-0x0083500e) -> 0x00116000-0x0012000e
  (0x00836000-0x00839fe8) -> 0x00141000-0x00144fe8
 sigma0    (0x00841000-0x00857a8d)   => 0x00020000
  (0x00842000-0x0084a410) -> 0x00020000-0x00028410
 roottask  (0x00858000-0x0085ee02)   => 0x00300000
  (0x008f9000-0x0085d040) -> 0x00300000-0x00304040
Launching kernel ...
[/paste end]

But nothing more.

When I built the kernel will spin wheels enabled, I noticed it was animating
as if the kernel was still functioning. I also attempted building with other
kernel configurations enabled and disabled - all resulting in the same
outcome. I then attempted to modify one of the sample applications
(grabmem), and I discovered that I could write directly to the screen buffer
(0xb8000), which shows the application does load (but it is strange since as
far as I know, printf also writes directly to the screen buffer, but printf
does not appear to be doing anything). Also at the same time I discovered
the system hangs during any attempt to communicate with sigma0 (through the
functions provided in l4/sigma0.h).

I also noticed, in the kernel's build directory there is an include
directory. However I don't see these files being referenced anywhere by the
user code.

( The prebuild 0.4 image functions correctly under VMWare. )

I don't understand what I am doing wrong, and if I may have missed any steps
to get the system functioning?

Also, I could write directly to 0xb8000 from the roottask. From my
understanding, only sigma0 was suppose to have all physical memory allocated
to it at boot, therefore for my roottask (or any other thread) to access the
physical memory at this location I would need it mapped into the thread's
local address space. So could some one please explain the memory protection
and clear this up? Also, I'm unsure of at what location in virtual memory
the kernel has been mapped.

Thanks for all your help,
Andrew

Reply via email to