カーネルパッチ(4)2.6.13 LSP 2.1.10 のコンパイル

LS-LGL

LS-LGL のカーネルソースに patch-2.6.13 があたったので、 x86 な Vine 機でクロスコンパイルする。

ソースアーカイブの転送

x86 な Vine 機に linux-2.6.13_lsp2.1.10.tar.gz を ftp で転送する。

ソースアーカイブの展開

linux-2.6.13_lsp2.1.10.tar.gz を展開する。
[yasunari@junk ls-lgl]$ tar zxvf linux-2.6.13_lsp2.1.10.tar.gz
	:
	:

path の設定

[yasunari@junk linux-feroceon_2_1_10]$ PATH=$PATH:/opt/arm-2005q3-2/bin:/opt/arm-2005q3-2/libexec/gcc/arm-none-linux-gnueabi/3.4.4
[yasunari@junk linux-feroceon_2_1_10]$ export PATH
[yasunari@junk linux-feroceon_2_1_10]$

.config のコピー

以前LS-LGL のカーネルソースを コンパイルしたときの .config をコピーする。
[yasunari@junk linux-feroceon_2_1_10]$ cp ../linux-2.6.12.6_feroceon_2_1_10/.config .
[yasunari@junk linux-feroceon_2_1_10]$

make oldconfig

古い .config をコピーしたときの決まり事(?) make oldconfig を実行する。
[yasunari@junk linux-feroceon_2_1_10]$ make oldconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  SHIPPED scripts/kconfig/zconf.tab.h
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/kxgettext.o
  HOSTCC  scripts/kconfig/mconf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/lex.zconf.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -o arch/arm/Kconfig
#
# using defaults found in .config
#
	:
	:
*
* System Type
*
ARM system type
  1. Cirrus-CL-PS7500FE (ARCH_CLPS7500)
  2. CLPS711x/EP721x-based (ARCH_CLPS711X)
  3. Co-EBSA285 (ARCH_CO285)
  4. EBSA-110 (ARCH_EBSA110)
  5. Epxa10db (ARCH_CAMELOT)
  6. FootBridge (ARCH_FOOTBRIDGE)
  7. Integrator (ARCH_INTEGRATOR)
> 8. Feroceon-based (ARCH_FEROCEON)
  9. IOP3xx-based (ARCH_IOP3XX)
  10. IXP4xx-based (ARCH_IXP4XX)
  11. IXP2400/2800-based (ARCH_IXP2000)
  12. LinkUp-L7200 (ARCH_L7200)
  13. PXA2xx-based (ARCH_PXA)
  14. RiscPC (ARCH_RPC)
  15. SA1100-based (ARCH_SA1100)
  16. Samsung S3C2410 (ARCH_S3C2410)
  17. Shark (ARCH_SHARK)
  18. Sharp LH7A40X (ARCH_LH7A40X)
  19. TI OMAP (ARCH_OMAP)
  20. Versatile (ARCH_VERSATILE)
  21. IMX (ARCH_IMX)
  22. Hynix-HMS720x-based (ARCH_H720X)
  23. Agilent AAEC-2000 based (ARCH_AAEC2000) (NEW)
choice[1-23]: 8
あとはずっと Enter 。

make uImage

[yasunari@junk linux-feroceon_2_1_10]$ make uImage
  CHK     include/linux/version.h
  UPD     include/linux/version.h
  SYMLINK include/asm -> include/asm-arm
  SPLIT   include/linux/autoconf.h -> include/config/*
  HOSTCC  scripts/genksyms/genksyms.o
	:
	:
  CC      arch/arm/kernel/asm-offsets.s
In file included from include/linux/mm.h:15,
                 from arch/arm/kernel/asm-offsets.c:14:
include/linux/fs.h:483: error: duplicate member 'inotify_watches'
include/linux/fs.h:484: error: duplicate member 'inotify_sem'
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [arch/arm/kernel/asm-offsets.s] Error 2
[yasunari@junk linux-feroceon_2_1_10]$
あらら。

include/linux/fs.h の修正

duplicate member とのことで見てみたら struct inode {} で見事二重定義。
patch がちゃんと reject してくれなかったようだ。

make uImage 2回目

[yasunari@junk linux-feroceon_2_1_10]$ make uImage
	:
	:
  AS      arch/arm/kernel/entry-armv.o
arch/arm/kernel/entry-armv.S: Assembler messages:
arch/arm/kernel/entry-armv.S:169: Error: bad instruction `irq_handler'
arch/arm/kernel/entry-armv.S:372: Error: bad instruction `irq_handler'
make[1]: *** [arch/arm/kernel/entry-armv.o] Error 1
make: *** [arch/arm/kernel] Error 2
[yasunari@junk linux-feroceon_2_1_10]$
arch/arm/kernel/entry-armv.S をオリジナルを参考に修正

make uImage 3回目

[yasunari@junk linux-feroceon_2_1_10]$ make uImage
  CHK     include/linux/version.h
make[1]: `arch/arm/kernel/asm-offsets.s' is up to date.
make[1]: `include/asm-arm/mach-types.h' is up to date.
  CHK     include/linux/compile.h
  CHK     usr/initramfs_list
  AS      arch/arm/kernel/entry-armv.o
  AS      arch/arm/kernel/entry-common.o
arch/arm/kernel/calls.S: Assembler messages:
arch/arm/kernel/calls.S:338: Error: bad or irreducible absolute expression
arch/arm/kernel/calls.S:336: Error: symbol `__syscall_end' is already defined
arch/arm/kernel/calls.S:338: Error: bad or irreducible absolute expression
make[1]: *** [arch/arm/kernel/entry-common.o] Error 1
make: *** [arch/arm/kernel] Error 2
[yasunari@junk linux-feroceon_2_1_10]$
いつになったら終わることやら
これもオリジナルを参考に entry-common.S, calls.S を修正
	:
	:
	:
あれやこれやと10数時間の格闘。
make uImage の実行は 27 回、ようやく
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-2.6.13
Created:      Sun Jan  6 12:51:35 2008
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1287024 Bytes = 1256.86 kB = 1.23 MB
Load Address: 0x00008000
Entry Point:  0x00008000
  Image arch/arm/boot/uImage is ready
[yasunari@junk linux-feroceon_2_1_10]$
までたどり着いた。
ignored とされていたパッチでも必要なのがあった。ちょっとショック。

コンパイルはできたけど、そう簡単には動かんやろなぁ、、、



LS-L250GL
楽天市場
Amazon
Yahoo! ショッピング
Sofmap
TSUKUMO ネットショップ
ValuMore!
ムラウチドットコム
uWorks
パソQ


カーネルパッチ(3)2.6.13 の reject 修正
ハックの記録
LinkStation/玄箱 をハックしよう

カーネルパッチ(5)2.6.13 LSP 2.1.10 は動くかな?

Copyright (C) 2003-2007 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市