[Zaurus-ja-list 7] カーネルのアップデート方法

アーカイブの一覧に戻る

Hiroaki Sengoku sengo****@mn*****
2004年 11月 23日 (火) 01:19:32 JST


仙石です。

Zaurus のカーネルのアップデート方法というと、Sharp 推奨の方法とか、
サービスメニューを使う方法などが Web 等で紹介されていますが、
要は Flash の決められた番地に書込めばいいだけなので、
簡単な sh スクリプト (実質一行かも ^^;) を書いてみました。

  kernel_update zImage

みたいな感じで実行すると、カーネルイメージを Flash に書込みます。
書き込みのための再起動が必要ないのでお手軽です。

(1) クロスコンパイル環境で make zImage
(2) できた zImage を scp で zaurus へ転送
(3) kernel_update スクリプトで Flash へ書込み
(4) あとは再起動するだけ

ただし添付したスクリプトは SL-C750 用です。他の機種の場合は 0x000E0000 
を適切な値に変更する必要があると思います。また、nandlogical コマンドを使っ
ているので、メンテナンス用カーネルで使われる root fs からコピーしてきて
ください。nandlogical があると Flash の読み書きが手軽にできるので、/sbin 
あたりに置いておくと便利。

注意: カーネル書き換えは、失敗すると zaurus が起動しなくなります。
      起動しなくなっても対処できる人のみ、お試し下さい。


#8961.								仙石 浩明
http://www.gcd.org/sengoku/		Hiroaki Sengoku <sengo****@gcd*****>

----- ここから -----
#!/bin/sh
KERNEL=$1
PATH=/sbin:/usr/sbin:/bin:/usr/bin

if [ -f $KERNEL ]; then
    DATASIZE=`wc -c $KERNEL | sed -e 's/^ *\([0-9][0-9]*\) .*/\1/'`
    if [ $DATASIZE -lt 890000 ]; then
	echo "Too small: $KERNEL ($DATASIZE bytes)"
	exit 1
    fi
    if [ $DATASIZE -gt 1294336 ]; then
	echo "Too large: $KERNEL ($DATASIZE bytes)"
	exit 1
    fi
    echo -n "Write kernel image: $KERNEL ($DATASIZE bytes) ? "
    read ans
    if [ "$ans" = "y" ]; then
	echo "updating... "
    else
	exit 1
    fi
else
    echo "Can't found kernel image: $KERNEL"
    exit 1
fi

LOGOCAL_MTD=/dev/mtd1
nandlogical $LOGOCAL_MTD WRITE 0x000E0000 $DATASIZE $KERNEL
echo "done"
exit 0



Zaurus-ja-list メーリングリストの案内
アーカイブの一覧に戻る