Hi, I tried to use oskit-mach instead of gnumach. With following things I have (had) my problems (on linux): * oskit-mach could only compiled when oskit was installed in the way oskit-mach expected it. First I installed oskit in /usr/local/ and started the configure script from oskit-mach. Unfortunately oskit-mach couldn't detected the libraries, though the PATH were setted (/etc/ld.so.conf and LD_LIBRARY_PATH). Therefore in the Makefile was 'OSKIT_LIBDIR = oskit' Calling configure this way helped: OSKIT_LIBDIR=/usr/local/lib/oskit ../../oskit-mach/configure It may be a good idea to mention this in the README file. Since if it is not setted correctly make says: make: *** No rule to make target `kernel', needed by `all'. Stop. which have many others reported and didn't know how this was triggered. After this it compiles nicely through up to the linking: gcc -O -nostdlib -nostartfiles -r -o kernel.o \ -Wl,-\( /usr/local/lib/oskit/multiboot.o ipc_entry.o ipc_hash.o ipc_init.o ipc_kmsg.o ipc_marequest.o ipc_mqueue.o ipc_notify.o ipc_object.o ipc_port.o ipc_pset.o ipc_right.o ipc_space.o ipc_splay.o ipc_table.o ipc_target.o ipc_thread.o mach_msg.o mach_port.o mach_rpc.o mach_debug.o fipc.o act.o ast.o bootstrap.o counters.o eventcount.o exception.o host.o ipc_host.o ipc_kobject.o ipc_mig.o ipc_sched.o ipc_tt.o kalloc.o lock.o lock_mon.o mach_clock.o mach_factor.o machine.o pc_sample.o priority.o processor.o profile.o queue.o sched_prim.o startup.o strings.o syscall_emulation.o syscall_subr.o syscall_sw.o task.o thread.o thread_swap.o time_stamp.o timer.o zalloc.o vm_debug.o vm_external.o vm_fault.o vm_init.o vm_kern.o vm_map.o vm_object.o vm_pageout.o vm_resident.o vm_user.o memory_object.o device_init.o dev_pager.o net_io.o osenv_mem.o osenv_log.o osenv_irq.o osenv_sleep.o osenv_synch.o osenv_timer.o osenv_bell.o main.o ds_osenv.o ds_request.o ds_routines.o kmsg.o ds_block.o ds_partition.o ds_mem.o ds_bus.o ds_net.o ds_stream.o ds_asyncio.o smp-glue.o version.o memory_object_user_user.o memory_object_default_user.o memory_object_reply_user.o device_reply_user.o device_error_reply_user.o device_server.o device_pager_server.o mach_port_server.o mach_server.o mach4_server.o mach_debug_server.o mach_host_server.o int_init.o pic_isa.o ast_check.o fpu.o gdt.o idt.o ldt.o mp_desc.o pcb.o phys.o pic.o pit.o trap.o user_ldt.o hardclock.o pmap.o read_fault.o interrupt.o cswitch.o idt_inittab.o locore.o spl.o mach_i386_server.o -loskit_kern -loskit_lmm -loskit_com -loskit_smp -loskit_exec -loskit_unsupp -loskit_dev -loskit_linux_dev -loskit_diskpart -Wl,-\) -lgcc /usr/bin/ld: cannot find -loskit_kern collect2: ld returned 1 exit status make: *** [kernel.o] Error 1 Adding '-L/usr/local/lib' to OSKIT_LIBS in the Makefile fixed this error. I'm not sure why the linker couldn't find the oskit libraries since all environment values are pointing to /usr/local/lib. The '--with-debug' flag is not supported. I had to add '-g' in the Makefile in order to get debugging symbols. * I load the oskit-mach kernel over the local net on a different machine started it. The kernel hangs when it tries to detect the partition tables: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: Maxtor 90871U2, 8297MB w/512kB Cache, CHS=1057/255/63 Partition check: hda: To be sure oskit itselfs works I tried a example kernel (linux_fs_com) which tests the filesystem. This kernel runs without hanging. I still investigated the problem but I'd like to know if someone else had the same problem? * When the oskit-mach kernel all kernel messages are written like this hda: IRQ probe failed (0) hdb: IRQ probe failed (0) hdb: IRQ probe failed (0) It was quite difficult to read the output, therefore I searched what it causes. I found that in oskit-mach/oskit/ds_osenv.c following: if (getenv ("BOGUS_CONSOLE")) { extern oskit_stream_t *console; ds_console_stream = console; printf("using bogus console!\n"); rc = 0; } else if (serial_console) { char *p = getenv ("COM_CONS"); int port = p ? atoi(p) : 1; struct termios param = base_cooked_termios; puts ("serial console found"); param.c_lflag &= ~ECHO; param.c_iflag &= ~ICRNL; param.c_oflag &= ~OPOST; rc = cq_com_console_init (port, ¶m, oskit_create_osenv_irq (), oskit_create_osenv_intr (), oskit_create_osenv_sleep (), &ds_console_stream); } else { rc = cq_direct_console_init (oskit_create_osenv_irq (), oskit_create_osenv_intr (), oskit_create_osenv_sleep (), &ds_console_stream); direct_cons_set_flags (DC_NO_ONLCR); } Commenting the last line out helped. Is this flag needed? * Another nasty thing is that serial line debugging is only working up to certain point. Adding gdb_pc_com_init(1,NULL); gdb_breakpoint(); at the begining in oskit-mach/oskit/x86/main.c works fine. But if a step through the code, the kernel crashes when 'idt_init ()' has been called (the machine reboots immediately). Yesterday the kernel terminated with the messages, that INT 3 is not supported. Unfortunately I can't reproduce it today. So this information is a bit vague. sorry. wagi -- Daniel Wagner email: wagi@gmx.ch GnuPG: 1024D/DCDE890A (public key available on any keyserver)