SheevaPlug のカーネルを 2.6.30-rc5 にする

前のエントリに書いた通り SheevaPlug の SDHC の Read/Write 性能が非常に遅い。カーネルのバージョンを上げることで解消できるとの話があり、カーネルバージョンアップを試してみることにした。
Linux kernel 2.6.30-rc1 から SheevaPlug を使うことができる。今回は kernel.org で公開されている最新版 2.6.30-rc5 を使うことにした。

カーネルのコンパイル方法については以下にまとめられている。基本的にはこれに従ってコンパイルすれば良い:

http://plugcomputer.org/plugwiki/index.php/Compiling_Linux_Kernel_for_the_Plug_Computer

$ make ARCH=arm kirkwood_defconfig
$ make ARCH=arm menuconfig

SDIO 関係の patch を当てておく:
$ patch -p1  < mvsdio.patch

この patch は現時点で以下から手に入る:

http://svn.nslu2-linux.org/svnroot/optware/trunk/sources/kernel-modules/kirkwood/mvsdio.patch

せっかくなので ext4 や btrfs など色々と入れてみた。カーネル本体が大きくなりすぎると uImage 領域のパーティションを拡張する必要が出てくるのでモジュールを多めにした。

$ make ARCH=arm CROSS_COMPILE=~/SheevaPlug_tools/LinuxHost/gcc/bin/arm-none-linux-gnueabi- uImage
$ make ARCH=arm CROSS_COMPILE=~/SheevaPlug_tools/LinuxHost/gcc/bin/arm-none-linux-gnueabi- modules

ARCH や CROSS_COMPILE を指定するところが重要。

u-boot で以下の設定をする:

Marvell>> setenv mainlineLinux yes

SheevaPlug の標準カーネルで立ち上げるときにこれが yes になっていると立ち上がらないので注意。

Marvell>> setenv arcNumber 2097
Marvell>> saveenv
Marvell>> reset

添付のカーネルでは mtdparts で nand_mtd を使ってパーティションを指定していたが、2.6.30 では orion_nand になっているので注意。rootfstype も指定しておく。u-boot のコマンドラインで変更:

Marvell>> set bootargs ‘console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)rw root=/dev/mtdblock1 rootfstype=jffs2’
Marvell>> saveenv
Marvell>> reset

uname -m の結果が armv5tel になっている。

SDIO の性能が改善されたか確認してみた。
オリジナルのカーネルから 2.6.30 に変更することで、シーケンシャル write 6.9 MB/s (変更前は 600 KB/s)、シーケンシャル read 19.1 MB/s (変更前は 9.4 MB/s) となった。TS4GSDHC6 の性能から考えて問題なさそう。SheevaPlug の標準カーネルはやはり SDIO 関係に問題を抱えているようだ。
SheevaPlug を手に入れたらカーネル 2.6.30-rc1 以降にした方が良さそう。

広告

タグ: ,

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。