Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Ongelmia cross-compilerin kanssa

reino [22.07.2013 20:40:26]

#

Olen kääntänyt arm-unknown-linux-uclibeabi toolchainin, jossa on uClibc. Tällä toolchainilla olen kääntänyt kernelin TI DaVinci DM644x alustalle. Käänsin myös busyboxin ja laitoin sen initrd:hen.

Kerneli on virallinen 30.10.1. Kerneli käynnistyy hyvin, käynnistää busyboxin init:in ja tulostaa Please press Enter to activate this console. Inittabissa on console::askfirst:-/bin/hush. Kun painan Enter niin sama viesti tulostuu uudelleen, eikä hush käynnisty. Kun koitan laittaa kernelille parametrin init=/bin/hush niin kerneli käynnistyy hyvin, mutta pysähtyy paniikkiin

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004

CPU: 0 PID: 1 Comm: hush Not tainted 3.10.1 #5
Backtrace:
[<c0011394>] (dump_backtrace+0x0/0x10c) from [<c0011690>] (show_stack+0x18/0x1c)
r6:cf836000 r5:c0443714 r4:c0461528 r3:00000204
[<c0011678>] (show_stack+0x0/0x1c) from [<c0311cd0>] (dump_stack+0x20/0x28)
[<c0311cb0>] (dump_stack+0x0/0x28) from [<c030f8cc>] (panic+0x8c/0x1e4)
[<c030f840>] (panic+0x0/0x1e4) from [<c0022558>] (do_exit+0x44c/0x898)
r3:cf83a000 r2:cf839e48 r1:00000004 r0:c03b41d3
r7:cece4038
[<c002210c>] (do_exit+0x0/0x898) from [<c0022b98>] (do_group_exit+0xb4/0xf0)
r7:ceed4040
[<c0022ae4>] (do_group_exit+0x0/0xf0) from [<c002d95c>] (get_signal_to_deliver+0x4ec/0x564)
r6:cf839ee4 r5:00000004 r4:cf838000 r3:00000000
[<c002d470>] (get_signal_to_deliver+0x0/0x564) from [<c030f348>] (do_signal+0xb0/0x3d4)
[<c030f298>] (do_signal+0x0/0x3d4) from [<c0011198>] (do_work_pending+0x64/0xc0)
[<c0011134>] (do_work_pending+0x0/0xc0) from [<c000eb1c>] (work_pending+0xc/0x20)
r6:cf838050 r5:a0000010 r4:b6f64250 r3:cf836000

Tulkintani mukaan hush poistui koodilla 4 joka tarkoittaa keskeytynyttä syscallia. Voisiko tuota debugata mitenkään?

Kernelin parametrit ovat console=ttyS0,115200n8 initrd=0x87000000,8M root=/dev/ram0 init=/bin/hush

Kernelin .config
uClibc .config
Busybox .config

Sampe [23.07.2013 00:47:02]

#

Suoraan en osaa sanoa, mikä on vikana, mutta mahdollisesti lisää tietoa voisi saada nostamalla kernelin logleveliä. Lisäksi debug-vaiheessa kannattaa yleensä olla early printk päällä. Muistaakseni optio löytyy nimellä CONFIG_EARLY_PRINTK (taisi olla Kernel Hacking valikon alla menuconfigissa). Ehkä kannattaa myös kokeilla jollain muulla shellillä. Esim. bash pitäisi varmaankin toimia sillä optiot CONFIG_ASH=y sekä CONFIG_FEATURE_BASH_IS_ASH=y on asetettu BusyBox konfiguraatiosta.

console=ttyS0,115200n8 loglevel=7 initrd=0x87000000,8M root=/dev/ram0 init=/bin/bash

reino [23.07.2013 10:46:23]

#

Eipä tullut mitään uutta. Vika on varmakin toolchainissa, kun käänsin sen itse. Täytyy koittaa crosstoolia.

reino [23.07.2013 17:16:20]

#

Nyt sain homman toimimaan. Olin ilmeisesti kääntänyt toolchainin väärin, kun toimi emdebianin toolchainilla.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta