====== カーネルの再構築 ======
MA-E210のカーネルをビルドする方法について説明します。
まず、ビルドする作業ディレクトリを作成します。
user1@ma-devel ~ $ mkdir src
user1@ma-devel ~ $ cd src/
user1@ma-devel ~/src $
次に、gitリポジトリからカーネルのソースを取得します。
user1@ma-devel ~/src $ git clone http://133.242.204.151/gitlab/ma-e2xx/linux-2-6-28-x_mae2xx.git
Cloning into 'linux-2-6-28-x_mae2xx'...
remote: Counting objects: 28035, done.
remote: Compressing objects: 100% (11528/11528), done.
remote: Total 28035 (delta 16222), reused 28035 (delta 16222)
Receiving objects: 100% (28035/28035), 77.89 MiB | 5.51 MiB/s, done.
Resolving deltas: 100% (16222/16222), done.
Checking connectivity... done
Checking out files: 100% (26108/26108), done.
user1@ma-devel ~/src $ ls -l
合計 4
drwxr-xr-x 23 user1 users 4096 9月 3 13:32 linux-2-6-28-x_mae2xx
デフォルトのconfigをいくつか用意してありますので、とりあえずは基本の(MA-E210用) "config_Magnolia2_default" を使用してみます。
user1@ma-devel ~/src $ cd linux-2-6-28-x_mae2xx/
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ cp config_Magnolia2_default .config
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $
PC Linuxの場合と同様に、make menuconfig でconfigをカスタマイズすることもできます。
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ make menuconfig
{{:mae_devel:build_kernel:make_menuconfig.png?600|make menuconfig}}
カスタマイズが終了したら、ビルドを行います。
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ make all
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf -s arch/arm/Kconfig
CHK include/linux/version.h
UPD include/linux/version.h
SYMLINK include/asm -> include/asm-arm
Generating include/asm-arm/mach-types.h
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
HOSTCC scripts/kallsyms
〜〜〜 略 〜〜〜
LD [M] net/netfilter/xt_quota.ko
LD [M] net/netfilter/xt_realm.ko
LD [M] net/netfilter/xt_rateest.ko
LD [M] net/netfilter/xt_sctp.ko
LD [M] net/netfilter/xt_recent.ko
LD [M] net/netfilter/xt_socket.ko
LD [M] net/netfilter/xt_statistic.ko
LD [M] net/netfilter/xt_string.ko
LD [M] net/netfilter/xt_tcpmss.ko
LD [M] net/netfilter/xt_u32.ko
LD [M] net/sctp/sctp.ko
LD [M] net/netfilter/xt_time.ko
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ make uImage
CHK include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' は更新済みです
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CALL scripts/checksyscalls.sh
:1097:2: 警告: #warning syscall fadvise64 not implemented
:1265:2: 警告: #warning syscall migrate_pages not implemented
:1321:2: 警告: #warning syscall pselect6 not implemented
:1325:2: 警告: #warning syscall ppoll not implemented
:1365:2: 警告: #warning syscall epoll_pwait not implemented
CHK include/linux/compile.h
dnsdomainname: Unknown host
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.10-Magnolia2
Created: Tue Sep 3 13:46:11 2013
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3143344 Bytes = 3069.67 kB = 3.00 MB
Load Address: 80008000
Entry Point: 80008000
Image arch/arm/boot/uImage is ready
ホスト用にカーネルをビルドする場合は、"make modules_install" でカーネルモジュールのインストールを行いますが、
クロスコンパイルしているためその方法は使用できないため、ターゲットディレクトリを指定してモジュールをインストールします。
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ INSTALL_MOD_PATH=/tmp make modules_install
Warning: you may need to install module-init-tools
See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt
INSTALL crypto/tcrypt.ko
INSTALL drivers/hid/hid-a4tech.ko
INSTALL drivers/hid/hid-apple.ko
INSTALL drivers/hid/hid-belkin.ko
〜〜〜 略 〜〜〜
INSTALL net/netfilter/xt_time.ko
INSTALL net/netfilter/xt_u32.ko
INSTALL net/sctp/sctp.ko
DEPMOD 2.6.28.10-Magnolia2
depmod: WARNING: could not open /tmp/lib/modules/2.6.28.10-Magnolia2/modules.builtin: No such file or directory
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $
/tmp/lib/modules 以下にインストールされました。
さきほどビルドしたカーネル本体(arch/arm/boot/uImage)と、カーネルモジュールをセットで
ターゲットのMA-E210に使用することになります。
user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ cd /tmp/lib/modules/
user1@ma-devel /tmp/lib/modules $ tar cjvf 2.6.28.10-Magnolia2.tar.bz2 2.6.28.10-Magnolia2/
2.6.28.10-Magnolia2/
2.6.28.10-Magnolia2/modules.alias.bin
2.6.28.10-Magnolia2/modules.dep
2.6.28.10-Magnolia2/modules.softdep
2.6.28.10-Magnolia2/kernel/
〜〜〜 略 〜〜〜
2.6.28.10-Magnolia2/modules.symbols
2.6.28.10-Magnolia2/modules.dep.bin
2.6.28.10-Magnolia2/modules.devname
2.6.28.10-Magnolia2/modules.symbols.bin
user1@ma-devel /tmp/lib/modules $