Dear Adam,
On Fri, Sep 26, 2008 at 1:56 AM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
Hi,
On Wed Sep 24, 2008 at 22:13:10 +0800, Tsai, Tung-Chieh wrote:
Thanks for your help. I found that my problem is that I thought I could boot kernel image 'fiasco' independently without other things. Now I make the package under '.../l4/' and use `.../l4/pkg/bootstrap` to pack kernel image, run it on qemu, it has the following assertion failed message :
Hello from Startup::stage2
Assertion failed: 'prev_next' in /path/to/tuods/source/snapshot/kernel/fiasco/src/kern/buddy_alloc.cpp:34 at f0004da8
Could you please tell me what does this means ?
That likely means that the system memory size is not configured properly. The l4-config system contains a parameter to configure the platform memory size. It's called RAM_SIZE_MB. Is that set properly?
Thanks your help, I found I use default QEMU setting of integratorcp, which is not the same to what l4 set.
Besides, I have a few question :
- What's your building environment ? I use gcc-4.2.2 build by buildroot, it will has some strange problem on gcc itself. And then I test some corss-compiler I have, some works but some failed. gcc-3.4.4-glibc-2.3.5 build by crosstool works but gcc-3.4.5-glibc-2.3.5 failed on the PRE_LOAD test of `make -C l4 config`. Is there any recommend version of cross-compiler ?
I use 4.2, and that works (most of the time ;). If the failure is something that could be a bug in the build system it would be good to know.
I found gcc build by buildroot failed seems because it use uclibc, and pre-build gcc built on 32-bit x86 won't pass the PRE_LOAD test on 64-bit environment, but they could build fiasco kernel successfully.
- I guess what bootstrap do is just packing sigma0, roottask, and so on, then do what a boot-loader do. So, if I can put them on correct position, for examples, by some tools or another boot loader, is the bootstrap still necessary ?
Bootstrap also fills out memory information and sets up a bit multi-boot structures, so yes, it's necessary.
- Since all packages in '.../l4/pkg' are not necessary to build a hello test, is there a way to build just only what I need, not the whole package under `.../l4/pkg` ?
Admittedly you need quite a few packages to just build the hello target. The repomgr hello target should just contain the packages that are needed. But if you're just interested in the kernel, you should not need to recompile pkg/ very often?!
Adam
Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
I found it strange if I don't change the value of DEFAULT_RELOC_arm to other value, the hello example won't work, but other examples, such as log, work fine in original setting.
And then I try to run l4linux, but get the following trouble on `names` server :
oottask: Loading 13 modules. #05: loading "names" from [02072000-020841a4] to [00148000-00150cec][00151000-0015b000] entry at 00050060 via trampoline page code #06: loading "log" from [02085000-020962fc] to [00160000-00168aec][00169000-001966c0] entry at 0005105c via trampoline page code #07: loading "dm_phys -v" from [02097000-020b81a4] to [001a0000-001b7928][001b8000-001c1000] entry at 00052064 via trampoline page code #08: loading "simple_ts -t 10" from [020b9000-020cd2fc] to [001f0000-001fb9b4][001fc000-0020a480] entry at 00053068 via trampoline page code #09: loading "l4io" from [020ce000-020f91a4] to [02000000-02021ef0][02022000-0203c000] entry at 00054060 via trampoline page code #0a: loading "bmodfs" from [020fa000-021231a4] to [00210000-0022fb38][00230000-00247000] passing module libloader.s.so [ 02124000-02152f40 ] passing module libld-l4.s.so [ 02153000-02167540 ] passing module shared_test [ 02168000-0216a468 ] passing module vmlinuz [ 0216b000-023a2240 ] passing module rd [ 023a3000-033a3000 ] passing module l4linux.cfg [ 033a3000-033a307e ] entry at 00055104 via trampoline page code #0b: loading "loader l4linux.cfg" from [033a4000-033de1a4] to [002c0000-002ef720][002f0000-0030f000] entry at 0005606c via trampoline page code
log | [6.0] log/server/src/logserver.c:288:main(): log | Error: Cannot register at nameserver, falling asleep log | log | log | Exiting with 1
ROOT: task 7.00 at 001a6eb0 is trying to get page 00000000 allocated by task 0
--double page fault----------------------------------------PC: 00087680
It's strange since there is no problem on running 'log' with all test. Could you please give me some advice about it ?