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も見ておきましょう。最後はソースコードが正義です。。