この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
mae_devel:build_kernel:start [2013/09/03 13:47] admin |
mae_devel:build_kernel:start [2013/09/03 13:52] (現在) admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== カーネルの再構築 ====== | ||
+ | |||
+ | MA-E210のカーネルをビルドする方法について説明します。 | ||
+ | |||
+ | まず、ビルドする作業ディレクトリを作成します。 | ||
+ | |||
+ | <code> | ||
+ | user1@ma-devel ~ $ mkdir src | ||
+ | user1@ma-devel ~ $ cd src/ | ||
+ | user1@ma-devel ~/src $ | ||
+ | </code> | ||
+ | |||
+ | 次に、gitリポジトリからカーネルのソースを取得します。 | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | デフォルトのconfigをいくつか用意してありますので、とりあえずは基本の(MA-E210用) "config_Magnolia2_default" を使用してみます。 | ||
+ | |||
+ | <code> | ||
+ | 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 $ | ||
+ | </code> | ||
+ | |||
+ | PC Linuxの場合と同様に、make menuconfig でconfigをカスタマイズすることもできます。 | ||
+ | |||
+ | <code> | ||
+ | user1@ma-devel ~/src/linux-2-6-28-x_mae2xx $ make menuconfig | ||
+ | </code> | ||
+ | |||
+ | {{:mae_devel:build_kernel:make_menuconfig.png?600|make menuconfig}} | ||
+ | |||
+ | カスタマイズが終了したら、ビルドを行います。 | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | <stdin>:1097:2: 警告: #warning syscall fadvise64 not implemented | ||
+ | <stdin>:1265:2: 警告: #warning syscall migrate_pages not implemented | ||
+ | <stdin>:1321:2: 警告: #warning syscall pselect6 not implemented | ||
+ | <stdin>:1325:2: 警告: #warning syscall ppoll not implemented | ||
+ | <stdin>: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 | ||
+ | </code> | ||
+ | |||
+ | ホスト用にカーネルをビルドする場合は、"make modules_install" でカーネルモジュールのインストールを行いますが、 | ||
+ | クロスコンパイルしているためその方法は使用できないため、ターゲットディレクトリを指定してモジュールをインストールします。 | ||
+ | |||
+ | <code> | ||
+ | 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 $ | ||
+ | </code> | ||
+ | |||
+ | /tmp/lib/modules 以下にインストールされました。 | ||
+ | |||
+ | さきほどビルドしたカーネル本体(arch/arm/boot/uImage)と、カーネルモジュールをセットで | ||
+ | ターゲットのMA-E210に使用することになります。 | ||
+ | |||
+ | <code> | ||
+ | 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 $ | ||
+ | </code> | ||