Tweet

HDL-GXR 対応 linux カーネルパッチの使い方

先日の日記でカーネルパッチを晒したので,使い方をもう少し詳しく説明してみる.

用意するもの

LANTANK 用シリアル接続ケーブル
今回は必須です. 挑戦者で SERIAL-KIT として売られていたもの. もしくはその相当品.
ARM コンパイル環境
セルフコンパイルでもクロスコンパイルでも可.
シリアル端末
LANDISK の接続先
rootfs
とりあえずは http://jr0bak.homelinux.net/~imai/linux/HDL-GXR/install_kit/sda2.tar.gz でいいかな. debian の lenny-armel (EABI) でも動作しております. lenny が正式リリースされたらインストールキットにまとめてみようかと思ってます.
USB-SATA 変換ケーブル
HDD にカーネルと rootfs を書き込むのに使います.
x86 linux マシン
同上

mkimage プログラム

u-boot 形式のバイナリを作るプログラムです. u-boot のソースの中にあります. ARM コンパイル環境上でビルドしてパスの通った場所に置いておきましょう.

カーネルのコンパイル

  1. linux-2.6.27.tar.bz2 と patch-2.6.28-rc6.bz2 を kernel.org から入手します.
  2. 先日のパッチを当てます.
  3. カーネルをビルドします.linux/.config ファイルをここに上げておくので,設定の参考に. 設定を変更しない場合は
    $ cd linux-2.6.28-rc6
    $ cp どこか/dot.config .config
    $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make oldconfig
    $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make uImage
    でコンパイルできます. CROSS_COMPILE= の部分はクロスコンパイラの名前によって変更してください. この例はクロスコンパイラが arm-linux-gnueabi-gcc の場合です.

linux-2.6.28-rc6/arch/arm/boot/uImage が目的のブツです.

rootfs の作成

SATA HDD にパーティションを切って sda2.tar.gz を展開します. このページと同じ要領でいいでしょう.

カーネルのコピー

先ほど作成した uImage を 1 番めのパーティションにコピーします. 名前は何でもいいのですが,説明のためここでは uImage-2.6.28-rc6.gxr としときます.

HDD を LANDISK に装着

T/O

シリアルの接続

UART0 というシルク(基板上の文字)があるところにシリアルケーブルを接続します. 文字のあるほうが 1 番ピンです. 向きを間違えないように.

シリアルの通信パラメータは

  • 115200 bps
  • 8 bit
  • パリティなし
  • ハードフロー・ソフトフローなし

です.

電源投入

=========================================
    HDL-GXR series Initial boot loader

 Copyright (C) 2006 I-O DATA DEVICE,INC.
========================================= ** LOADER **
 ** MARVELL BOARD: DB_MV88F5182_HDL_GT LE
                                                                                
U-Boot 1.1.1 (Oct  5 2006 - 13:58:33) MV : 1.7.3 (I-O DATA 0.9(GX))

DRAM CS[0] base 0x00000000   size 128MB
DRAM Total size 128MB
MX AM29LV400B (4 Mbit, bottom boot sect)
Size: 512 kB,Bus Width: 2, device Width: 2.
Flash base: 0xfff80000,Number of Sectors: 11 Type: BOTTOM.
[512kB@fff80000] Flash: 512 kB
Addresses 20M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (20M - 16M): Done

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

USB 0: host mode
USB 1: host mode
PCI 0: PCI Express Root Complex Interface
Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  0
HDL-GXR>>

電源を入れるとシリアル端末上にベロベロっとメッセージが出てきます. このままだと自動ブートシーケンスに入ってしまうので,何かキーを押してシーケンスを中止させます. HDL-GXR>> というプロンプトが出てきます.

そこで,以下のように入力します.

ide reset                                                         ← SATA ドライブのリセット
ext2load ide 0:1 0x02000000 /uImage-2.6.28-rc6.gxr                ← カーネルのロード
setenv bootargs console=ttyS0,115200 root=/dev/sda2 ro mem=128M   ← カーネルコマンドラインの指定
bootm                                                             ← 起動

linux が起動しましたね.

tips

自動起動するようにする

下記のようにすればできるはずですが,未確認です.

  1. 1 番目のパーティションのカーネルの名前を uImage.gxr にします.
    • 別の名前にするとブートシーケンスのほうも書き換えないといけないので,面倒です.
  2. カーネルコマンドラインを上記の値に設定します.
  3. u-boot 環境変数を保存します.
    saveenv
  4. 再起動して,動作を確認してください.

tftp でのカーネルのロード

u-boot 上で以下のようにすれば tftp 経由でカーネルをロードできます.

set ipaddr 192.168.0.200                          ← LANDISK の IP アドレス
set serverip 192.168.0.1                          ← tftp サーバの IP アドレス
tftpboot 0x02000000 どこか/uImage-2.6.28-rc6.gxr  ← tftp でのカーネルのロード
setenv bootargs console=...(略)                 ← カーネルコマンドライン
bootm                                             ← linux の起動

添付ファイル: filedot.config 1541件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-12-11 (木) 19:58:19 (3210d)