カーネルのコンパイル
気を取り直して、カーネルをコンパイルする。
クロスコンパイルから、セルフコンパイルに変更
入手したソースのままでは、ppc_82xx-gcc を使うなど、
クロスコンパイル環境になっている。
Makefile を見ると、.hhl_cross_compile が存在すると、
そこに書いてある文字列(ppc_82xx-)を prefix に使うようだ。
kurobakoVine# mv .hhl_cross_compile .hhl_cross_compile.orig
改行コードの変更
昨日コンパイルエラーになったソースを見ていたのだが、
まったくエラーになる要因が見つからない。
ためしに、file melco_serial.h してみたら、
melco_serial.h: ASCII C program text, with CRLF line terminators
といわれた。
改行コードが CRLF では、\ で継続行としているコードがエラーになる。
Buffalo が作成した/手を入れた
linux-2.4.17_kuro-box/arch/ppc/boot/common/misc-simple.c
linux-2.4.17_kuro-box/arch/ppc/boot/sandpoint/head.S
linux-2.4.17_kuro-box/include/melco/bootinfo.h
linux-2.4.17_kuro-box/include/melco/firminfo.h
linux-2.4.17_kuro-box/include/melco/flashd.h
linux-2.4.17_kuro-box/include/melco/melco_hwctl.h
linux-2.4.17_kuro-box/include/melco/melco_rtc.h
linux-2.4.17_kuro-box/include/melco/melco_serial.h
以上のファイルの改行コードを LF のみに変更する。
ソース提供にあたり、Windows で手を入れたのは、ほぼ確実。
玄箱付属の CD-ROM には
手を入れる前のソースが付いているようなので、
また後で比較してみよう
デフォルトコンフィギュレーション
どういうコンフィギュレーションでカーネルがコンパイルされているのか、
まったく不明。
linux-2.4.17_kuro-box/arch/ppc/configs/sandpoint_defconfig が
あったので、
これを linux-2.4.17_kuro-box/arch/ppc/defconfig にコピーする
kurobakoVine# cd arch/ppc
kurobakoVine# mv defconfig defconfig.orig
kurobakoVine# cp configs/sandpoint_defconfig defconfig
コンパイル
とりあえず、make config ですべてデフォルト(Enter のみ)にする。
make dep; make zImage 実行
45分ほどして、
ld -T arch/ppc/vmlinux.lds -Ttext 0xc0000000 -Bstatic arch/ppc/kernel/head.o init/main.o init/version.o \
--start-group \
arch/ppc/kernel/kernel.o arch/ppc/platforms/platform.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o kernel/kernel.o mm/mm.o f
s/fs.o ipc/ipc.o \
drivers/char/char.o drivers/block/block.o drivers/misc/misc.o drivers/net/net.o drivers/media/media.o drivers/ide/i
dedriver.o drivers/cdrom/driver.o drivers/pci/driver.o drivers/macintosh/macintosh.o \
net/network.o \
/mnt/home/HD-H120LAN/buffalo/kurobako/linux-2.4.17_kuro-box/lib/lib.a \
--end-group \
-o vmlinux
init/main.o: In function `write_flash':
init/main.o(.text+0x31c): undefined reference to `flash_st_compt_erase'
init/main.o(.text+0x31c): relocation truncated to fit: R_PPC_REL24 flash_st_compt_erase
init/main.o(.text+0x360): undefined reference to `flash_toshiba_write'
init/main.o(.text+0x360): relocation truncated to fit: R_PPC_REL24 flash_toshiba_write
make: *** [vmlinux] エラー 1
もう少し解析が必要。今日はここまで
←
玄人志向 玄箱をハックしよう
→ カーネルのコンパイル(2)
Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
山下康成@京都府向日市