2013/07/14(日)LInux開発入門(外部URL参照)
初学者のためのLinux起動シーケンス概要
題名はもっともらしいですが、とりあえずURL貼っておくだけで。。。Linux kernelが起動するまで、と、起動してからユーザランドに渡るまで、
ユーザランドの起動処理、くらいに分類できるかな、と思います。
最後のユーザランド起動処理の手前までは、Androidも一緒でしょう。(未確認)
京都マイクロコンピュータ様のblogリンクが多いのは、それを見てまとめておこうと感じたからです(^^;
他にもネタが出てきたら追加しいこうと思います。オレオレメモってやつですね(ぉ
起動シーケンス(uboot/barebox)
ちょうどこの切り替わりに遭遇していました。昔からのマイコンは、外部メモリからbootしていましたよね。
ワンタイムROM、UVEPROM、EEPROM・・・と来ていますね。
昨今は原低のため、外部記憶にSD card/NAND Flashのみという構成を取るようになってきているので、
SoC内のMaskROMに埋め込まれているbootloaderから起動してくれます。
このへんの設定は、SoC次第ですし、boot modeでNORからの起動するようなものもいます。
かならずMaskROMからしか起動しないのもきた気がする。
U-bootのデバッグ
ユーザランドの処理(Linux版)
initrd有効の場合は、initramの/linuxrcから起動したはず。process id=1として、最初に起動されるのは、kernel parameterにinit=で指定したもの、
それがなければ、/sbin/initの順にチェックして、rootfsがmount出来なかったり、init実行ファイルが
なければ、OOPS吐いて止まります。ポーティング作業とか疲れてくるとよく見かけます(謎
ユーザランドの処理(Android版)
Androidのinit処理の流れ。Linuxの普通?のinitとはフローが違うので参考に。いきなり渡されて流用できるとは思っていなかったからなぁ。こちらと別のblogを参考にさせていただいた記憶が…。
Androidのinit
その他紹介したい記事
「組み込みエンジニアのためのLinux入門 仮想メモリ編」kernel documentも見ておきましょう。最後はソースコードが正義です。。