LINUX.ORG.RU

Не запускается ядро

 , ,


0

2

Пытаюсь запустить линуксовое ядро на qemu, которое в свою очередь изображает из себя Versatile Express-а15. Делаю вот по этому мануалу http://balau82.wordpress.com/2012/03/31/compile-linux-kernel-3-2-for-arm-and-... Ядро 3.8.9. Launch-скрипт выглядит следующим образом

#! /bin/sh
# filename: launch-no-bridge
# Set environment variables to make it easier to change
export ROOTFS=rootfs-buildroot.ext2
export NETWORK="-net nic -net user"
export KERNEL="-kernel ./zImage "
export DTB="-dtb vexpress-v2p-ca15_a7.dtb"

qemu-system-arm -append "root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0" -M vexpress-a15 $DTB $KERNEL -sd $ROOTFS  $NETWORK -nographic
Собственно выхлоп запуска выглядит следующим образом
$ ./launch 
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
Booting Linux on physical CPU 0x0
Initializing cgroup subsys cpuset
Linux version 3.8.9+ (likan@localhost) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.03 - Linaro GCC 2014.03) ) #2 SMP Sat Apr 19 02:09:42 UTC 2014
CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine: ARM-Versatile Express, model: V2P-CA15_CA7
Memory policy: ECC disabled, Data cache writealloc
------------[ cut here ]------------
WARNING: at arch/arm/kernel/devtree.c:144 arm_dt_init_cpu_maps+0x118/0x198()
DT /cpu 5 nodes greater than max cores 4, capping them
Modules linked in:
[<8001463c>] (unwind_backtrace+0x0/0xf4) from [<80020244>] (warn_slowpath_common+0x54/0x64)
[<80020244>] (warn_slowpath_common+0x54/0x64) from [<80020284>] (warn_slowpath_fmt+0x30/0x40)
[<80020284>] (warn_slowpath_fmt+0x30/0x40) from [<80478a70>] (arm_dt_init_cpu_maps+0x118/0x198)
[<80478a70>] (arm_dt_init_cpu_maps+0x118/0x198) from [<80478080>] (setup_arch+0x5fc/0x688)
[<80478080>] (setup_arch+0x5fc/0x688) from [<804755a0>] (start_kernel+0x94/0x2fc)
[<804755a0>] (start_kernel+0x94/0x2fc) from [<80008078>] (0x80008078)
---[ end trace 1b75b31a2719ed1c ]---
SMP: 5 cores greater than maximum (4), clipping
------------[ cut here ]------------
WARNING: at arch/arm/mach-vexpress/v2m.c:431 v2m_dt_init_early+0x5c/0x78()
Modules linked in:
[<8001463c>] (unwind_backtrace+0x0/0xf4) from [<80020244>] (warn_slowpath_common+0x54/0x64)
[<80020244>] (warn_slowpath_common+0x54/0x64) from [<800202f0>] (warn_slowpath_null+0x1c/0x24)
[<800202f0>] (warn_slowpath_null+0x1c/0x24) from [<8047c1a8>] (v2m_dt_init_early+0x5c/0x78)
[<8047c1a8>] (v2m_dt_init_early+0x5c/0x78) from [<804755a0>] (start_kernel+0x94/0x2fc)
[<804755a0>] (start_kernel+0x94/0x2fc) from [<80008078>] (0x80008078)
---[ end trace 1b75b31a2719ed1d ]---
vexpress: DT HBI (249) is not matching hardware (237)!
PERCPU: Embedded 7 pages/cpu @805f6000 s6592 r8192 d13888 u32768
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
__ex_table already sorted, skipping sort
Memory: 128MB = 128MB total
Memory: 124700k/124700k available, 6372k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0x88800000 - 0xff000000   (1896 MB)
    lowmem  : 0x80000000 - 0x88000000   ( 128 MB)
    modules : 0x7f000000 - 0x80000000   (  16 MB)
      .text : 0x80008000 - 0x8047455c   (4530 kB)
      .init : 0x80475000 - 0x804a59c0   ( 195 kB)
      .data : 0x804a6000 - 0x804cdce0   ( 160 kB)
       .bss : 0x804cdce0 - 0x804ed928   ( 128 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:16 nr_irqs:16 16
GIC CPU mask not found - kernel will fail to boot.
GIC CPU mask not found - kernel will fail to boot.
Using SP804 '/smb/motherboard/iofpga@3,00000000/timer@110000' as a clock & events source
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
Console: colour dummy device 80x30
Calibrating delay loop... 680.75 BogoMIPS (lpj=3403776)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
/cpus/cpu@0 missing clock-frequency property
/cpus/cpu@1 missing clock-frequency property
/cpus/cpu@2 missing clock-frequency property
/cpus/cpu@3 missing clock-frequency property
/cpus/cpu@4 missing clock-frequency property
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x8035f260 - 0x8035f2b8
CPU1: failed to boot: -38
CPU2: failed to boot: -38
CPU3: failed to boot: -38
Brought up 1 CPUs
SMP: Total of 1 processors activated (680.75 BogoMIPS).
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
hw-breakpoint: debug architecture 0x0 unsupported.
Serial: AMBA PL011 UART driver
1c090000.uart: ttyAMA0 at MMIO 0x1c090000 (irq = 37) is a PL011 rev1
console [ttyAMA0] enabled
1c0a0000.uart: ttyAMA1 at MMIO 0x1c0a0000 (irq = 38) is a PL011 rev1
1c0b0000.uart: ttyAMA2 at MMIO 0x1c0b0000 (irq = 39) is a PL011 rev1
1c0c0000.uart: ttyAMA3 at MMIO 0x1c0c0000 (irq = 40) is a PL011 rev1
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Initialized.
Switching to clocksource v2m-timer1
Unable to handle kernel paging request at virtual address 00fe0000
pgd = 80004000
[00fe0000] *pgd=00000000
Internal error: Oops: 5 [#1] SMP ARM
Modules linked in:
CPU: 0    Tainted: G        W     (3.8.9+ #2)
PC is at set_inverse_trans_unicode.isra.4+0x64/0xe8
LR is at 0xff80
pc : [<801cce3c>]    lr : [<0000ff80>]    psr: 20000153
sp : 8783be80  ip : 00000000  fp : 00000001
r10: 000000ff  r9 : 878ac1fc  r8 : 0000001f
r7 : 0000f800  r6 : 879526f8  r5 : 0000001e  r4 : 879c9800
r3 : 00000000  r2 : 000001f8  r1 : 00fdfffe  r0 : 0000f83f
Flags: nzCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 8000406a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0x8783a238)
Stack: (0x8783be80 to 0x8783c000)
be80: 804e5b58 00000000 00000004 878ac180 87804000 804bd262 804bd262 801cda8c
bea0: 804bd264 804e5580 87804000 878041f4 00000136 00000001 00000014 804e57a4
bec0: 804cdd00 804cdd00 8049aa54 8048ab14 00000000 8048a384 00000000 804e5680
bee0: 00000001 8048a870 80412178 804e51ac 804e51ac 00000000 804cdd00 80489cdc
bf00: 803f688c 804cdd00 804a2d6c 804a2d6c 00000005 80008758 0000008b 8003af88
bf20: 00000000 8783a018 804033f0 80455ab0 00000005 00000005 8003a7f4 8003a84c
bf40: 00000000 804a2d6c 00000005 804cdd00 804cdd00 80475278 8049aa54 0000008b
bf60: 8049aa44 804759d8 00000005 00000005 80475278 00000000 00000000 00000000
bf80: 0000dd00 00000000 00000000 00000000 00000000 00000000 00000000 80354970
bfa0: 00000000 00000000 80354964 8000ddd8 00000000 00000000 00000000 00000000
bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[<801cce3c>] (set_inverse_trans_unicode.isra.4+0x64/0xe8) from [<801cda8c>] (con_set_default_unimap+0x15c/0x184)
[<801cda8c>] (con_set_default_unimap+0x15c/0x184) from [<8048a384>] (console_map_init+0x44/0x50)
[<8048a384>] (console_map_init+0x44/0x50) from [<8048a870>] (vty_init+0x190/0x1a4)
[<8048a870>] (vty_init+0x190/0x1a4) from [<80489cdc>] (tty_init+0x12c/0x144)
[<80489cdc>] (tty_init+0x12c/0x144) from [<80008758>] (do_one_initcall+0x11c/0x174)
[<80008758>] (do_one_initcall+0x11c/0x174) from [<804759d8>] (kernel_init_freeable+0x1d0/0x270)
[<804759d8>] (kernel_init_freeable+0x1d0/0x270) from [<80354970>] (kernel_init+0xc/0x160)
[<80354970>] (kernel_init+0xc/0x160) from [<8000ddd8>] (ret_from_fork+0x14/0x3c)
Code: e087e305 e2411002 e3a03000 e6ffe07e (e1f120b2) 
---[ end trace 1b75b31a2719ed1e ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

★★★

Ответ на: комментарий от LIKAN

dts ? Там вроде dtb

Без разницы.

WARNING: at arch/arm/kernel/devtree.c:144 arm_dt_init_cpu_maps+0x118/0x198()
DT /cpu 5 nodes greater than max cores 4, capping them

и это тоже может объясняться кривым dts:

vexpress: DT HBI (249) is not matching hardware (237)!
tailgunner ★★★★★ ()
Ответ на: комментарий от LIKAN

Обычно dts раздается производителями плат. Возможно, что иеющийся у тебя dts правильный, но описанное в нем железо не совпадает с тем, что эмулируется qemu. Хотя... что за странное количество ядер 5? Поищи dts по инетам или хотя бы перекомпилируй имеющийся dts.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Ну файл этот собрался вместе с ядром, которое я собственно собрал и запускаю, так что тупо пересобирать бестолку. Просто тут такое дело, что один мануал (заточен под реальное железо) советует использовать вот это vexpress-v2p-ca15_a7.dtb, от него выхлоп я как раз выше показал, а вот другой ман, заточенный под qemu другой файл vexpress-v2p-ca15-tc1.dtb, от него выхлоп уже вот так вот выглядит.

$ ./launch 
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
Booting Linux on physical CPU 0x0
Initializing cgroup subsys cpuset
Linux version 3.8.9+ (likan@localhost) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.03 - Linaro GCC 2014.03) ) #2 SMP Sat Apr 19 02:09:42 UTC 2014
CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
Machine: ARM-Versatile Express, model: V2P-CA15
Memory policy: ECC disabled, Data cache writealloc
PERCPU: Embedded 7 pages/cpu @805f5000 s6592 r8192 d13888 u32768
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
__ex_table already sorted, skipping sort
Memory: 128MB = 128MB total
Memory: 124768k/124768k available, 6304k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0x88800000 - 0xff000000   (1896 MB)
    lowmem  : 0x80000000 - 0x88000000   ( 128 MB)
    modules : 0x7f000000 - 0x80000000   (  16 MB)
      .text : 0x80008000 - 0x8047455c   (4530 kB)
      .init : 0x80475000 - 0x804a59c0   ( 195 kB)
      .data : 0x804a6000 - 0x804cdce0   ( 160 kB)
       .bss : 0x804cdce0 - 0x804ed928   ( 128 kB)
SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Hierarchical RCU implementation.
	RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
NR_IRQS:16 nr_irqs:16 16
GIC CPU mask not found - kernel will fail to boot.
GIC CPU mask not found - kernel will fail to boot.
Using SP804 '/smb/motherboard/iofpga@3,00000000/timer@110000' as a clock & events source
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
Console: colour dummy device 80x30
Calibrating delay loop... 686.48 BogoMIPS (lpj=3432448)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
/cpus/cpu@0 missing clock-frequency property
/cpus/cpu@1 missing clock-frequency property
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x8035f260 - 0x8035f2b8
CPU1: failed to boot: -38
Brought up 1 CPUs
SMP: Total of 1 processors activated (686.48 BogoMIPS).
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
hw-breakpoint: debug architecture 0x0 unsupported.
Serial: AMBA PL011 UART driver
1c090000.uart: ttyAMA0 at MMIO 0x1c090000 (irq = 37) is a PL011 rev1
console [ttyAMA0] enabled
1c0a0000.uart: ttyAMA1 at MMIO 0x1c0a0000 (irq = 38) is a PL011 rev1
1c0b0000.uart: ttyAMA2 at MMIO 0x1c0b0000 (irq = 39) is a PL011 rev1
1c0c0000.uart: ttyAMA3 at MMIO 0x1c0c0000 (irq = 40) is a PL011 rev1
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Initialized.
Switching to clocksource v2m-timer1
Unable to handle kernel paging request at virtual address 00001100
pgd = 80004000
[00001100] *pgd=00000000
Internal error: Oops: 5 [#1] SMP ARM
Modules linked in:
CPU: 0    Not tainted  (3.8.9+ #2)
PC is at kmem_cache_alloc+0x2c/0xe0
LR is at con_insert_unipair+0xb8/0x104
pc : [<800b6e64>]    lr : [<801ccd8c>]    psr: 20000153
sp : 87839e68  ip : 00151000  fp : 00000002
r10: 000000fe  r9 : 804bd25c  r8 : 000000d0
r7 : 879360fc  r6 : 000000fe  r5 : 00001100  r4 : 87801200
r3 : 00000000  r2 : 0000085f  r1 : 000000d0  r0 : 804a7a00
Flags: nzCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c53c7d  Table: 8000406a  DAC: 00000015
Process swapper/0 (pid: 1, stack limit = 0x87838238)
Stack: (0x87839e68 to 0x8783a000)
9e60:                   804d8b90 0000fffd 87914600 000000fe 879360fc 804bd260
9e80: 804bd25c 801ccd8c 804bd264 00000000 00000001 87914600 000000fe 801cda2c
9ea0: 804bd264 804e5580 87804000 878041f4 00000136 00000001 00000014 804e57a4
9ec0: 804cdd00 804cdd00 8049aa54 8048ab14 00000000 8048a384 00000000 804e5680
9ee0: 00000001 8048a870 80412178 804e51ac 804e51ac 00000000 804cdd00 80489cdc
9f00: 803f688c 804cdd00 804a2d6c 804a2d6c 00000005 80008758 0000008b 8003af88
9f20: 00000000 87838018 804033f0 80455ab0 00000005 00000005 8003a7f4 8003a84c
9f40: 00000000 804a2d6c 00000005 804cdd00 804cdd00 80475278 8049aa54 0000008b
9f60: 8049aa44 804759d8 00000005 00000005 80475278 00000000 00000000 00000000
9f80: 0000dd00 00000000 00000000 00000000 00000000 00000000 00000000 80354970
9fa0: 00000000 00000000 80354964 8000ddd8 00000000 00000000 00000000 00000000
9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[<800b6e64>] (kmem_cache_alloc+0x2c/0xe0) from [<801ccd8c>] (con_insert_unipair+0xb8/0x104)
[<801ccd8c>] (con_insert_unipair+0xb8/0x104) from [<801cda2c>] (con_set_default_unimap+0xfc/0x184)
[<801cda2c>] (con_set_default_unimap+0xfc/0x184) from [<8048a384>] (console_map_init+0x44/0x50)
[<8048a384>] (console_map_init+0x44/0x50) from [<8048a870>] (vty_init+0x190/0x1a4)
[<8048a870>] (vty_init+0x190/0x1a4) from [<80489cdc>] (tty_init+0x12c/0x144)
[<80489cdc>] (tty_init+0x12c/0x144) from [<80008758>] (do_one_initcall+0x11c/0x174)
[<80008758>] (do_one_initcall+0x11c/0x174) from [<804759d8>] (kernel_init_freeable+0x1d0/0x270)
[<804759d8>] (kernel_init_freeable+0x1d0/0x270) from [<80354970>] (kernel_init+0xc/0x160)
[<80354970>] (kernel_init+0xc/0x160) from [<8000ddd8>] (ret_from_fork+0x14/0x3c)
Code: e79c5000 e3550000 0a00001e e5943014 (e7956003) 
---[ end trace 02abb00b26b31cdb ]---
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

LIKAN ★★★ ()
Ответ на: комментарий от LIKAN

Что конкретно значит сообщение - ХЗ, я ввобще мало знаю об ARM. GIC - Generic Interrupt Controller, в dts должен быть соответствующий узел.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от LIKAN

А можно глупый вопрос, а где в меню menuconfig его найти (отрубить) ?

Я думаю, опции ядра хватит. Сначала попробуй с nosmp, потом с maxcpus=1.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

так, для вот такого вот команды

qemu-system-arm -append "nosmp root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0" -M vexpress-a15 $DTB $KERNEL -sd $ROOTFS  $NETWORK -nographic
Выхлоп выглядит вот так http://pastebin.com/pP5Cnk7e Уже чуть-чуть получше, такой вот строки уже нет
CPU1: failed to boot: -38
А вот если сделать так
qemu-system-arm -append "maxcpus=1 root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0" -M vexpress-a15 $DTB $KERNEL -sd $ROOTFS  $NETWORK -nographic
то выхлоп уже такой http://pastebin.com/dRHuGd9Y Различия конечно есть, только вот строка
Internal error: Oops: 5 [#1] SMP ARM
присутсвует в обоих логах.

LIKAN ★★★ ()
Ответ на: комментарий от LIKAN

Выхлоп выглядит вот так http://pastebin.com/pP5Cnk7e Уже чуть-чуть получше

Но та же ошибка в той же функции - какая-то проблема при инициализации консоли. Боюсь, дальше только вставлять printk в код ядра. Или отключить эмуляцию SMP в самом qemu (или включить ее, если она отключена).

tailgunner ★★★★★ ()

http://balau82.wordpress.com

Интересно, что если собирать 3.8.9 по этому мануалу и не указывать ему дерево устройств то оно запускается, но тебе, видимо, важно именно с dtb.

tlx ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.