不況で倒産寸前のベンチャー企業(?)でプログラマー歴2年になった 新米プログラマーの日記のような雑記です。
welcome 猫並プログラマーの奮闘日記 !
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
category : スポンサー広告 

SH4A(7780)搭載ボードにLinuxを移植する(やっと動いたbusybox編)
やっと動きましたよー。∩(´∀`)∩busyboxだけど。
開発中のボードなんでログは省略して書いときます。
いままで発生していた問題はinitプロセスが途中で終了してpanicになったいたこと。

Kernel panic - not syncing: Attempted to kill init!
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pc = 88032492
*pde = 00000000
Oops: 0000 [#1]
Modules linked in:

こんな感じでした。これが全然、原因不明でして・・・かなり頭が痛かったです。
ライブラリがおかしいのかと思いuClibcをためしたり、ツールチェインが悪いのかとも思いました。
散々調べた結果…カーネルのMMUの設定でしたorz
MMUの項目にAdd LRU list to track non-evictable pages UNEVICTABLE_LRUというのを有効にしたら直りました・・・。
UNEVICTABLE_LRUというのはページ空間を解放するときに解放させない領域のリスト(UNEVICTABLEリストというらしい)を持っていてスキップさせるらしいです。
主に64bit対応のためみたいなことが書いてあったので、気にしてなかったのですがリストの対象に
ramfsが入ってたのでもしやと思い有効にしたら動きました。

動いたのですが次に起きたのが以下
Freeing unused kernel memory: 96k freed

Please press Enter to activate this console.

これはすぐに解決しました。
仙石先生の日記
のなかに見つけまして。
おそらくこれだ!と思いました。
で、まずデバイスを以下のように作成。
mknod ttySC0 c 204 8
mknod zero c 1 5
mknod ram0 b 1 0
ln -s ttySC0 ttyS0(<-これ重要)

initramfsのinitスクリプトにexec /bin/cttyhack /bin/shを追加したら
Freeing unused kernel memory: 96k freed
/bin/sh urned off
# ls
Segmentation fault
# echo hello world
hello world

動いたー!わぁいヽ(゚ー゚*ヽ)(ノ*゚ー゚)ノわぁい
これのおかげで、しばらく0時帰りだったので嬉しさが半端無かったですw
「シェル動いたくらいではしゃぐなよ」目線を無視して叫んじゃいました(・・。)ゞ テヘ

しかし、これで気づいた勘違いがあってinitramfsをマウントしたときカーネルはinitスクリプトをinit扱いするんですね。/sbin/initじゃなかったんだ・・・。
なのでinitスクリプトが終わるとpanicになります(・・;)
まぁ動いたのでよしとしようw

これで心おきなくシルバーウィークに入れます。
・・・まぁ、実家で稲刈りを手伝わされるんですけどねっ(・・;)
スポンサーサイト
category : Linux移植  comment : 0  track back : 0

thema:Linux - genre:コンピュータ















 

trackback URL
http://nekohara348.blog99.fc2.com/tb.php/68-2a594fdf
trackback
プロフィール

猫原

Author:猫原
猫でもわかる程度の能力な新米プログラマーです。

扱える言語:
アセンブラ(intel系,SH系),C/C++,C#,
java,PHP,etc...

趣味
アニメとかゲームとかプログラムとか
ようするにオタク
(特にガンダム大好きです)

最近のマイブームはニコ動でアイマス架空戦記見ること
(千早かわいいよ千早)

フリーエリア
検索フォーム
ブロとも申請フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。