Boot Fiasco at ARM on QEMU
tsaitungchieh at gmail.com
Wed Oct 8 19:47:42 CEST 2008
On Fri, Sep 26, 2008 at 1:56 AM, Adam Lackorzynski
<adam at os.inf.tu-dresden.de> wrote:
> 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'
>> 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
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 at os.inf.tu-dresden.de
> Lackorzynski http://os.inf.tu-dresden.de/~adam/
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
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 | 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 ?
More information about the l4-hackers