[ 新規 | 編集 | 差分 ] [ 検索 | 一覧 | FrontPage ] [ 履歴 (RSS) | 差分履歴 (RSS) ] [ ログイン ]
【PR】Amazon | SL-C3000 | SL-C1000(3/18発売!) | SL-C860 | SL-6000W | SL-6000L | SL-6000N

LinuxZaurus向けビルド/BusyBox

編集

BusyBox 1.00

編集

LinuxZaurusでは、UNIX基本コマンド群はBusyBoxというマルチコール・バイナリ(一つのバイナリで複数の機能を提供する)で提供されており、バージョン0.60.4がプレインストールされています。
このBusyBoxのバージョン1.00がリリースされたので、LinuxZaurus向けにビルドしてみました。

更新履歴

編集

ダウンロード

編集

有効になっているコマンド全てのシンボリックリンクが作成されるわけではなく、下記の条件のいずれかを満たしているコマンドのみ/opt/QtPalmtop/bin/以下にシンボリックリンクが作成されます。

ソフトウェアの追加/削除でインストールした場合に、sbusybox(setuidが必要なプログラムを別バイナリに分離しています)にSUIDビットが立たないので、インストール後にルートユーザーでSUIDビットを立てておいて下さい。

$ su
# chmod u+s /opt/QtPalmtop/bin/sbusybox

ビルド内容

編集

下記の内容でビルドを行っています。

パッチ作成

編集

tarのオプションとして--no-same-owner--no-same-permissionsが実装されていないために、ソフトウェアの追加/削除(ipkgコマンド)がうまく動かなかったので、このオプションを実装しました。

ビルド設定

編集

busybox、sbusyboxそれぞれの.configの内容

実装コマンド

編集

実装されているコマンドの一覧

使用上の注意点等

編集

コマンドで使用出来るオプション等はマニュアルを参照して下さい。

元々インストールされているBusyBox0.60.4よりもBusyBox1.00を優先させて使用したい場合には、/opt/QtPalmtop/bin/(/home/QtPalmtop/bin/)をPATH環境変数の最初の方に設定して下さい。

タイムゾーンの設定がないと、時間を使用するコマンドがUTCで動いてしまうので、環境変数TZをJST-9等に設定しておいて下さい。

export TZ=JST-9

crondは /etc/crontab は参照せず、crontabコマンドで編集したファイルのみを参照して動作します。

crondの起動/停止スクリプトの例 --> こちら

crontabは実行時に /bin/vi を想定しているため、何も設定しないとエディタが起動しません。
環境変数VISUALにお好みのエディタを設定して下さい。

export VISUAL=vi

デバッグ

編集

エラーの発生するコマンドを特定する。

編集

/tmp/busybox.testとして保存すると仮定。

#!/bin/sh
/opt/QtPalmtop/bin/busybox.orig "$0" "$@"
RET=$?
if [ $RET -ne 0 ]; then
    echo "["$RET"] "$0 >> /tmp/busybox.log
    echo "$@" >> /tmp/busybox.log
fi
exit $RET
/opt/QtPalmtop/bin/busybox

/opt/QtPalmtop/bin/busybox.orig

にリネームしてbusyboxを上記スクリプトに置き換える。

# /bin/mv /opt/QtPalmtop/bin/busybox /opt/QtPalmtop/bin/busybox.orig
# /bin/cp /tmp/busybox.test /opt/QtPalmtop/bin/busybox
# /bin/chmod +x /opt/QtPalmtop/bin/busybox

コマンド実行でエラーが発生すると、コマンド名と引数が

/tmp/busybox.log

に書き込まれます。

元に戻す場合には先程リネームしておいたファイルを元に戻します。

# /bin/mv /opt/QtPalmtop/bin/busybox.orig /opt/QtPalmtop/bin/busybox

コメント

編集

コメント等がありましたらこちらへどうぞ。


[1] /home/QtPalmtop/bin/cp
/home/tmp/ipkg/inst/usr/lib/ipkg/info/pipeman.p* /usr/lib/ipkg/info/
[1] /home/QtPalmtop/bin/rm
/opt
[1] /home/QtPalmtop/bin/mv
/home/tmp/ipkg/inst/opt /opt
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt/QtPalmtop
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt/QtPalmtop/apps
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt/QtPalmtop/help
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt/QtPalmtop
[1] /home/QtPalmtop/bin/rmdir
/home/tmp/ipkg/inst//opt
[1] /home/QtPalmtop/bin/rmdir
///opt
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop/apps
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop/bin
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop/pics
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop/help
[1] /home/QtPalmtop/bin/rmdir
///opt/QtPalmtop/help/html
[1] /home/QtPalmtop/bin/rmdir
///opt


と、なりました。(長くなってすいません。どこが悪いのかわからなかったもので…)
ちなみに、直後にbusyboxをアンインストールして試すと、問題なくSDにインストールできました。

現象:mkswapを実行すると、「SWAPを設定するには最低40(k?)bytes以上の空き領域が必要(実際には英文)」と表示されてフォーマットできません。
経緯:busybox_1.00-rc3_arm.ipkをインストール。"umount /dev/hda"の後、"fdisk /dev/hda"でhda3を削除し、hda3(ID:83 Linux)、hda4(ID:82 Linux swap/40MB)を作成。hda3は"mke2fs -j /dev/hda3"でフォーマット成功。hda4にて"mkswap /dev/hda4"を実行すると上記の症状が出る。
busybox_1.00-rc3_arm.ipkをアンインストールし、"mkswap /dev/hda4"を実行すると正常に40MBのスワップ領域としてフォーマットされる。

以上です。

mkswap: error: swap area needs to be at least 40kB BusyBox v1.00 (2004.11.03-08:39+0000) multi-call binary
Usage: mkswap [-c] [-v0|-v1] device [block-count]
Prepare a disk partition to be used as a swap partition.
Options: -c Check for read-ability. -v0 Make version 0 swap [max 128 Megs]. -v1 Make version 1 swap [big!] (default for kernels > 2.1.117). block-count Number of block to use (default is entire partition).

ただ、どうやらこれは私の操作ミスのようです。
fdiskで領域を確保した後、リブートせずにmkswapしていましたが、リブート後にmkswapしたところ問題無くswap領域をフォーマットできました。
お騒がせ致しました<(__)>


25045