Raspberry PiのLinuxの起動プロセスをぐぐったらStack Exchangeでトピック「How does Raspberry Pi boot?」があったのでメモ
「how-the-raspberry-pi-boots-up」と「Raspberry PI bare metal Part 1: The Boot Process」も参考に。
これによるとカーネルが起動するまでのブートプロセスは3段階に分かれている。
- Raspberry Piに電源が入った時はGPUが起動しARM coreはoff、SDRAMもdisabledな状態
- GPUは1段階のブートローダーを起動。このブートローダーはSoCのROMにある。ブートローダーはSDカードを読み込んで2段階目のブートローダー(bootcode.bin)をL2キャッシュに読み込みと実行をする
- bootcode.binはSDRAMを有効にし、3段階目のブートローダー(loader.bin)をSDカードからRAMへ読み込んで実行する
- loader.binはGPU firmware(start.elf)を読み込む
- start.elfはconfig.txt、cmdline.txtとkernel.imgを読み込む。kernel.imgはSDRAMのアドレス0x8000に置かれる。
- start.elfはARM coreをリセットしてkernel.imgのある0x8000から実行を開始する
Arch LinuxのRaspberry Pi版のconfig.txtでコメントアウトされていない箇所は以下のように設定されてる。
gpu_mem_512=316 gpu_mem_256=128 cma_lwm=16 cma_hwm=32 cma_offline_start=16
Model Bの場合、GPUがメモリが316MB使用し、CPUが196MBを使用するという感じの設定。その他の設定は「RPiconfig」を参照。
/boot/cmdline.txtはこのような感じ。
ipv6.disable=1 avoid_safe_mode=1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p5 rootfstype=ext4 elevator=noop rootwait
- 作者: 出村成和
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2013/06/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る