カーネルのリコンパイルにチャレンジ
まず、uclibc 用に変更した gcc を元の gcc に戻した。
$ su # mv /usr/local/arm /usr/local/arm-uclib # cd / # tar jxf /mnt/cd-rom/arm-linux-gcc-3.4.1.tar.bz2
ソースは、CDに入っていたLinux 2.6.20.4 を使う
$ mkdir kernel $ cp /mnt/cd-rom/linux\ sources/linux-2.6.20.4.tar.gz kernel/. $ cp /mnt/cd-rom/linux\ sources/linux-2.6.20.4-2db93xx.patch kernel/. $ cd kernel $ tar zxf linux-2.6.20.4.tar.gz $ cd linux-2.6.20.4 $ cat ../linux-2.6.20.4-2db93xx.patch | patch -p1
コンパイルしてみる。(参考)「組み込みLinuxシステム構築」(オライリー)
$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig ... → 変更なし $ make ARCH=arm CROSS_COMPILE=arm-linux- zImage ...
一時間くらいでコンパイル終了。意外と速い。RedBoot でボードのRAMにアップロード
$ kermit Kermit> c ... ← 電源ON & Ctrl+C RedBoot> load -r -b 0x00080000 -m xmodem ← ボードを受信待ちにする CC...
別の端末から
$ sx ./kernel/linux-2.6.20.4/arch/arm/boot/zImage < /dev/ttyS0 > /dev/ttyS0 ← PCからファイル送信する ...
転送は10分くらいで終わる。次にRAMからFLASHに書き込む。再びRedBootの画面から
RedBoot> fis write -f 0x60D40000(*注) -b 0x00080000 -l 0x140000 ...
(*注) -f のアドレスは事前に RedBoot>fis list で確認した zImage のアドレス。間違えると面倒なので注意。
書き込み終了したので、リセット
RedBoot> reset ... RedBoot> exec -r 0x800000 -x 0x800000 -c "console=ttyAM root=/dev/ram" Using base address 0x00080000 and length 0x0013f000 ← 停まった
orz. 動かなかった。