クロスコンパイルで、BeagleBoard 用カーネルの vmlinux まで生成できたのですが、やはり mkimage がないと uImage を生成できないことが分かりました。(当たり前か)
ということで、U-Boot をインストールしています。バージョンは u-boot-2009.08 です。今、ビルド中。。。こんな感じです。
$ export PATH=クロスコンパイラの入ったパス:$PATH
$ make CROSS_COMPILE=arm-unknown-linux-gnu- omap3_beagle_config
$ make CROSS_COMPILE=arm-unknown-linux-gnu- dep
$ make CROSS_COMPILE=arm-unknown-linux-gnu-
とりあえず、ビルドはできました。(しかし、なんで make install が無いんだ?)
さて、make uImage です。
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-2.6.28-00008-g7f78d9f
Created: Mon Oct 5 23:15:42 2009
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2702880 Bytes = 2639.53 kB = 2.58 MB
Load Address: 80008000
Entry Point: 80008000
Image arch/arm/boot/uImage is ready
じゃかじゃーん。果たして、これで BeagleBoard はちゃんと起動するのでしょうか?
後記
無事にカーネルをブートできました。偶然かも知れませんが、元々動かしていたカーネルも、今回生成したカーネルも、GCC 4.3.2 によるものでした。以下に、ブートメッセージの一部を示します。
Linux version 2.6.28-00008-g7f78d9f (yokoyama@hogehoge) (gcc version 4.3.2 (crosstool-NG-1.4.2) ) #1 Mon Oct 5 22:38:50 JST 2009
CPU: ARMv7 Processor [411fc082] revision 2 (ARMv7), cr=10c5387f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: OMAP3 Beagle Board
Memory policy: ECC disabled, Data cache writeback
OMAP3430 ES2.1
SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000
Reserving 15728640 bytes SDRAM for VRAM
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro
Clocking rate (Crystal/DPLL/ARM core): 26.0/332/500 MHz
これで、カーネル周りの開発も行けそうです。ちょっと嬉しい。
ところで udev
BeagleBoard の Debian に dosfstools を入れて、mkdosfs をできるようにしたのですが、なんと /dev/sda1 がありません。udev のマニュアルとか眺めて頭を抱えていたのですが、実は /dev/mmcblk0p1 という名前で参照できることが分かりました。かなり時代に取り残されている私です。