====== カーネルの再構築 ====== 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 $