yama42326
2014年5月2日 20時47分
yamaokaと申します。
Armadillo440ボードを参考にカスタムでボードを起こしてlinux-2.6.35-at-alpha4を動作させようとしています。
ブートローダはRedbootをカスタマイズして使用しています。
Redbootのカーネルオプションを色々試しているのですが、romfs.imgのマウントまでは成功するのですが、
実際にsbin/initを実行するときにエラーで止まってしまうようです。
これはオプションの与え方に問題があるような気がするのですが、もし問題がわかれば教えていただけないでしょうか?
フラッシュはMicronのNANDフラッシュ:MT29F8G08ABABAで、armadillo400.cはNANDを読めるように変更して
います。
Redboot起動時のオプションは以下になります。
exec -c "noinitrd console=ttymxc0 115200 root=/dev/mtdblock3 rw rootfstype=ext2 init=/sbin/init"
Linux起動時のログは以下になります。
MXC MTD nand Driver 3.0
NAND device: Manufacturer ID: 0x2c, Chip ID: 0x38 (Micron ONFI NAND 3,3V 8-bit)
Searching for RedBoot partition table in ONFI NAND 3,3V 8-bit at offset 0x100000
5 RedBoot partitions found on MTD device ONFI NAND 3,3V 8-bit
Creating 5 MTD partitions on "ONFI NAND 3,3V 8-bit":
0x000000000000-0x000000080000 : "RedBoot"
0x000000100000-0x00000017f000 : "FIS directory"
mtd: partition "FIS directory" doesn't end on an erase block -- force read-only
0x00000017f000-0x000000180000 : "RedBoot config"
mtd: partition "RedBoot config" doesn't start on an erase block boundary -- force read-only
0x000000180000-0x000002180000 : "romfs"
0x000002180000-0x000002380000 : "zImage"
(中略)
VFS: Mounted root (ext2 filesystem) on device 31:3.
Freeing init memory: 132K
Kernel panic - not syncing: Attempted to kill init!
Backtrace:
[] (dump_backtrace+0x0/0x108) from [] (dump_stack+0x18/0x1c)
r6:00000004 r5:c03e4880 r4:c03cb81c
[] (dump_stack+0x0/0x1c) from [] (panic+0x5c/0xf0)
[] (panic+0x0/0xf0) from [] (do_exit+0x5d8/0x6f4)
r3:c03cb81c r2:c3c17e40 r1:c3c16000 r0:c03702a0
[] (do_exit+0x0/0x6f4) from [] (do_group_exit+0x44/0xe4)
[] (do_group_exit+0x0/0xe4) from [] (get_signal_to_deliver+0x1f8/0x46c)
r6:c3c16000 r5:c3d885a0 r4:00000004
[] (get_signal_to_deliver+0x0/0x46c) from [] (do_notify_resume+0xa4/0x5d4)
[] (do_notify_resume+0x0/0x5d4) from [] (work_pending+0x1c/0x20)
よろしくお願いいたします。
at_yashi
2014年5月13日 18時32分
a410 + カスタムボードということでしょうか?
それとも、Armadillo 以外の i.mx のカスタムボードでしょうか?
もし
/sbin/init
が正しく動作しているなら[1]、とは、ならないはずです。
linux/init/main.c
または、linux/kernel/exit.c
を読んでみると分るかもしれません。[1] デフォルトでも
/sbin/init
なので、カーネルパラメーターとして渡す意味は無いはずですが...。