Dear All,
I'm try to boot fiasco kernel which is compiled to integrator(arm926) on QMEU. I see this thread :
http://osdir.com/ml/micro-kernel.l4.devel/2007/msg00303.html
So I guess it should be worked. But I got some problem, when I use the following command :
qemu-system-arm -kernel fiasco.image -serial stdio -d in_asm
there is no output on QEMU. I watch the log of QEMU, find that it fails to go to '_start_kernel' in 0xf0003000 from 'bootstrap_main' because there is nothing in 0xf0003000.
As I know, there is no physical memory in QEMU's integratorcp emulation. It only put memory on 0x0 and 0x80000000. So I guess the way I try is wrong, there must be something I lost. Do I have to use some kind of bootloader like grub in ia32 or putting some file by initrd, mtdblock, etc... And couold anyone give some advice about how to run it on QEMU.
Best Regards, Tsai, Tung-chieh
On Sat Sep 20, 2008 at 17:01:04 +0800, Tsai, Tung-Chieh wrote:
Dear All,
I'm try to boot fiasco kernel which is compiled to integrator(arm926) on QMEU. I see this thread :
http://osdir.com/ml/micro-kernel.l4.devel/2007/msg00303.html
So I guess it should be worked. But I got some problem, when I use the following command :
qemu-system-arm -kernel fiasco.image -serial stdio -d in_asm
there is no output on QEMU. I watch the log of QEMU, find that it fails to go to '_start_kernel' in 0xf0003000 from 'bootstrap_main' because there is nothing in 0xf0003000.
As I know, there is no physical memory in QEMU's integratorcp emulation. It only put memory on 0x0 and 0x80000000. So I guess the way I try is wrong, there must be something I lost. Do I have to use some kind of bootloader like grub in ia32 or putting some file by initrd, mtdblock, etc... And couold anyone give some advice about how to run it on QEMU.
bootstrap is the initial bootstrapper which loads Fiasco, sigma0, roottask and all the other programs. Go to l4/pkg/bootstrap/server/src, possibly edit modules.list, and call 'make E=entryname' (like E=hello) and a bootstrap.image file will be generated in the object directory of bootstrap. See also the README is this directory, the most important thing is the setting of the BOOTSTRAP_SEARCH_PATH to enable bootstrap to find the right Fiasco image. The bootstrap.image file is the one to be loaded by QEmu, like: qemu-system-arm -kernel bootstrap.image -serial stdio ...
Adam
Dear Adam,
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 ?
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 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 ? * 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` ?
On Sun, Sep 21, 2008 at 08:32:43PM +0200, Adam Lackorzynski wrote:
On Sat Sep 20, 2008 at 17:01:04 +0800, Tsai, Tung-Chieh wrote:
Dear All,
I'm try to boot fiasco kernel which is compiled to integrator(arm926) on QMEU. I see this thread :
http://osdir.com/ml/micro-kernel.l4.devel/2007/msg00303.html
So I guess it should be worked. But I got some problem, when I use the following command :
qemu-system-arm -kernel fiasco.image -serial stdio -d in_asm
there is no output on QEMU. I watch the log of QEMU, find that it fails to go to '_start_kernel' in 0xf0003000 from 'bootstrap_main' because there is nothing in 0xf0003000.
As I know, there is no physical memory in QEMU's integratorcp emulation. It only put memory on 0x0 and 0x80000000. So I guess the way I try is wrong, there must be something I lost. Do I have to use some kind of bootloader like grub in ia32 or putting some file by initrd, mtdblock, etc... And couold anyone give some advice about how to run it on QEMU.
bootstrap is the initial bootstrapper which loads Fiasco, sigma0, roottask and all the other programs. Go to l4/pkg/bootstrap/server/src, possibly edit modules.list, and call 'make E=entryname' (like E=hello) and a bootstrap.image file will be generated in the object directory of bootstrap. See also the README is this directory, the most important thing is the setting of the BOOTSTRAP_SEARCH_PATH to enable bootstrap to find the right Fiasco image. The bootstrap.image file is the one to be loaded by QEmu, like: qemu-system-arm -kernel bootstrap.image -serial stdio ...
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
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?
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 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
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 ?
Hi,
On Thu Oct 09, 2008 at 01:47:42 +0800, Tsai, Tung-Chieh wrote:
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.
Yes, those must be compatible.
- 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?!
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.
The DEFAULT_RELOC of hello? Was the error an overlap?
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.
What do you mean 'log with all test'?
Could you please give me some advice about it ?
Does something change if you leave out programs from the end, e.g. loader, bmodfs include its modules, l4io?
Adam
Dear Adam,
On Fri, Oct 10, 2008 at 5:34 AM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
The DEFAULT_RELOC of hello? Was the error an overlap?
The DEFAULT_RELOC of roottask, an overlap error as follow :
#05: loading "hello" from [0206e000-0207b268] to [00140000-00144474] Roottask: cannot load binary because address at 00140000 not free for unkown reason
What do you mean 'log with all test'?
I build with `E=log`, the entry describe in `.../l4/pkg/bootstrap/server/src/modules.list `
Than I run it on qemu, execute all the test on it.
It's why I feel strange, since the test on `E=log` passed, why does logserver fail to register nameserver ?
Does something change if you leave out programs from the end, e.g. loader, bmodfs include its modules, l4io?
I didn't see any other output about loader, bmodfs, etc ... , is there any other way to observe it, e.g using jdb ?
Dear Adam,
Beside, the whole output on running l4linux on qemu are :
$ qemu-system-arm -kernel /path/build/l4/bin/arm_int/bootstrap.image -M integratorcp -nographic -serial stdio -m 256
L4 Bootstrapper Memory size is 256MB mod00: 0140d000-0144bb78: fiasco mod01: 0144c000-0145c174: sigma0 mod02: 0145d000-0147e6ac: roottask mod03: 0147f000-014911a4: names mod04: 01492000-014a32fc: log mod05: 014a4000-014c51a4: dm_phys mod06: 014c6000-014da2fc: simple_ts mod07: 014db000-015061a4: l4io mod08: 01507000-015301a4: bmodfs mod09: 01531000-0155ff40: libloader.s.so mod10: 01560000-01574540: libld-l4.s.so mod11: 01575000-01577468: shared_test mod12: 01578000-017af240: vmlinuz mod13: 017b0000-027b0000: rd mod14: 027b0000-027b007e: l4linux.cfg mod15: 027b1000-027eb1a4: loader move modules to 2000000 with offset bf3000 move module 16 start 27b1000 -> 33a4000 move module 15 start 27b0000 -> 33a3000 move module 14 start 17b0000 -> 23a3000 move module 13 start 1578000 -> 216b000 move module 12 start 1575000 -> 2168000 move module 11 start 1560000 -> 2153000 move module 10 start 1531000 -> 2124000 move module 9 start 1507000 -> 20fa000 move module 8 start 14db000 -> 20ce000 move module 7 start 14c6000 -> 20b9000 move module 6 start 14a4000 -> 2097000 move module 5 start 1492000 -> 2085000 move module 4 start 147f000 -> 2072000 move module 3 start 145d000 -> 2050000 move module 2 start 144c000 -> 203f000 move module 1 start 140d000 -> 2000000 Scanning fiasco Scanning sigma0 Scanning roottask task modname "bmodfs" module module module module module module Relocated mbi to [0x4f000-0x4f233] Loading fiasco Loading sigma0 Loading roottask find kernel info page... found kernel info page at 0x2000 [ 1000, 19bf] Kern fiasco [ 2000, 4efff] Kern fiasco [ 4f000, 4f330] Root Multiboot info [ 68000, 7335b] Sigma0 sigma0 [ 78000, 13ffff] Root roottask [ 1400000, 140cf5b] Boot bootstrap [ 2072000, 33de1a3] Root Modules Memory API Version: (87) experimental Sigma0 config ip:00068000 sp:0140cb1c Roottask config ip:00078000 sp:00000000 Starting kernel fiasco at 00001000 Hello from Startup::stage2 Initialize page table Vmem_alloc::init() Vmem_alloc::TEST allocate zero-filled page... [0xefc01000] done free zero-filled page... done allocate no-zero-filled page... [0xefc02000] done free no-zero-filled page... done SERIAL ESC: allocated IRQ 1 for serial uart Not using serial hack in slow timer handler. Welcome to Fiasco(arm)! DD-L4(v2)/arm microkernel (C) 1998-2008 TU Dresden Rev: r394 compiled with gcc 3.4.4 for Integrator []
--init-----------------------------------------------------PC: f0003290 (0.00) jdb: g
Calibrating timer loop... done. SIGMA0: Hello! KIP @ 2000 allocated 4KB for maintenance structures
Roottask. Command line found: "roottask task modname "bmodfs" module module module module module module"
0kB ( 0MB) total RAM (reported by bootloader) 251332kB ( 246MB) received RAM from Sigma0 20696kB ( 21MB) reserved RAM for RMGR
Roottask: Parsing command line config. configured task 0x00 (bmodfs): vm_offs:0 irq:3ffff lmcp:ffff allow_cli:0 mcp:ff prio:10 small:ff mods:6
Roottask: 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 [root.pager] (4.00) jdb:
On Tue Oct 14, 2008 at 10:57:07 +0800, Tsai, Tung-Chieh wrote:
Dear Adam,
On Fri, Oct 10, 2008 at 5:34 AM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
The DEFAULT_RELOC of hello? Was the error an overlap?
The DEFAULT_RELOC of roottask, an overlap error as follow :
#05: loading "hello" from [0206e000-0207b268] to [00140000-00144474] Roottask: cannot load binary because address at 00140000 not free for unkown reason
Ok, thanks, I had a change sitting in this Makefile for some time, I've committed it now.
What do you mean 'log with all test'?
I build with `E=log`, the entry describe in `.../l4/pkg/bootstrap/server/src/modules.list `
Than I run it on qemu, execute all the test on it.
It's why I feel strange, since the test on `E=log` passed, why does logserver fail to register nameserver ?
Can't say without looking further into it.
Does something change if you leave out programs from the end, e.g. loader, bmodfs include its modules, l4io?
I didn't see any other output about loader, bmodfs, etc ... , is there any other way to observe it, e.g using jdb ?
You could enable IPC logging to see why task 6 can't properly talk to task 5. E.g. if task 5 (names) is called at all, more generally what's a more detailed error message than what we have now.
Roottask. Command line found: "roottask task modname "bmodfs" module module module module module module"
0kB ( 0MB) total RAM (reported by bootloader)
251332kB ( 246MB) received RAM from Sigma0 20696kB ( 21MB) reserved RAM for RMGR
How much memory did you configure? (RAM_SIZE_MB)
Adam
Dear Adam,
On Thu, Oct 16, 2008 at 4:56 AM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
You could enable IPC logging to see why task 6 can't properly talk to task 5. E.g. if task 5 (names) is called at all, more generally what's a more detailed error message than what we have now.
How to enable IPC logging ?
How much memory did you configure? (RAM_SIZE_MB)
256 MB
And I found that if I build l4 by :
make -C l4 O=/my/build/dir/
It build fiasco kernel on `.../kernel/fiasco/build/` with ia32 architecture no matter what architecture I set in :
make -C l4 O=/my/build/dir/ config
So there's a problem if I do not choose BID_BUILD_L4DIR_ONLY=y on any architecture except ia32.
I guess this is because in `.../l4/Makefile` line 88 :
tool ../kernel/fiasco pkg: ../dice $(VERBOSE)if [ -r $@/Makefile ]; then PWD=$(PWD)/$@ $(MAKE) -C $@; fi
It won't give any setting to build `../kernel/fiasco` , and then by default, it set DFL_TEMPLATE:=ia32-short in `.../kernel/fiasco/Makefile`, so it will build ia32 architecture fiasco kernel.
I've try to fixed it, but I don't found any variable could be used to set DFL_TEMPLATE in `.../l4/Makefile` match the globalconfig.out template file in `.../kernel/fiasco/src/templates/` such as 'arm-int1'.
I think why not let `.../l4/Makefile` unable to build fiasco kernel ? Or is there any package unless bootstrap need fiasco kernel image ?
Cheers,
On Tue, Oct 21, 2008 at 08:52:20PM +0800, Tsai, Tung-Chieh wrote:
How to enable IPC logging ?
There are two ways to enable IPC logging (into trace buffer) under Fiasco:
1) Start Fiasco with "-wait" and enter "I*" into the jdb prompt. 2) Activate trace buffer logging on the commmand line with "-jdb_cmd=I*"
In both cases ensure that you enable the debugging features during Fiasco configuration. In the kernel debugger you can browse the trace buffer by entering "T" at the prompt.
Another useful jdb feature is "IR+", which logs IPC results into the trace buffer. Have a look at the jdb manual or hit "h" at the debugger prompt for more features.
Have fun
Hi,
On Tue Oct 21, 2008 at 20:52:20 +0800, Tsai, Tung-Chieh wrote:
On Thu, Oct 16, 2008 at 4:56 AM, Adam Lackorzynski adam@os.inf.tu-dresden.de wrote:
You could enable IPC logging to see why task 6 can't properly talk to task 5. E.g. if task 5 (names) is called at all, more generally what's a more detailed error message than what we have now.
How much memory did you configure? (RAM_SIZE_MB)
256 MB
And I found that if I build l4 by :
make -C l4 O=/my/build/dir/
It build fiasco kernel on `.../kernel/fiasco/build/` with ia32 architecture no matter what architecture I set in :
make -C l4 O=/my/build/dir/ config
So there's a problem if I do not choose BID_BUILD_L4DIR_ONLY=y on any architecture except ia32.
I guess this is because in `.../l4/Makefile` line 88 :
tool ../kernel/fiasco pkg: ../dice $(VERBOSE)if [ -r $@/Makefile ]; then PWD=$(PWD)/$@ $(MAKE) -C $@; fi
It won't give any setting to build `../kernel/fiasco` , and then by default, it set DFL_TEMPLATE:=ia32-short in `.../kernel/fiasco/Makefile`, so it will build ia32 architecture fiasco kernel.
I've try to fixed it, but I don't found any variable could be used to set DFL_TEMPLATE in `.../l4/Makefile` match the globalconfig.out template file in `.../kernel/fiasco/src/templates/` such as 'arm-int1'.
It's on purpose that when doing 'make' in the l4 directory everything is built (user-space, dice, kernel). If you just want to build the packages, go to l4/pkg and do make there. If you just want to build the kernel, go to the kernel build directory and do make there. And there's also the option to disable building anything outside l4 as you already found out.
I think why not let `.../l4/Makefile` unable to build fiasco kernel ? Or is there any package unless bootstrap need fiasco kernel image ?
Of course some kernel needs to be there when doing a real bootstrap.image. bootstrap builds some build-only image on default so it won't fail.
Adam
l4-hackers@os.inf.tu-dresden.de