BusyBox 1.00
LinuxZaurusでは、UNIX基本コマンド群はBusyBoxというマルチコール・バイナリ(一つのバイナリで複数の機能を提供する)で提供されており、バージョン0.60.4がプレインストールされています。
このBusyBoxのバージョン1.00がリリースされたので、LinuxZaurus向けにビルドしてみました。
更新履歴
- 2005/05/22 BusyBox/1.00-rc6を公開。
- swap操作関連の挙動がおかしそうなので、swapon,swapoff,mkswapを無効に変更。
- 2005/03/24 BusyBox/1.00-rc5を公開。
- 2004/12/06 BusyBox/1.00-rc4を公開。
- lnコマンドの動作が0.60と違うようなので、lnコマンドのリンクは張らないように変更。(但し、1.00の動作の方が正しい動作の様です。)
- 2004/11/03 BusyBox/1.00-rc3を公開。
ダウンロード
有効になっているコマンド全てのシンボリックリンクが作成されるわけではなく、下記の条件のいずれかを満たしているコマンドのみ/opt/QtPalmtop/bin/以下にシンボリックリンクが作成されます。
- コマンドが存在しない
- busyboxまたはsbusyboxへのシンボリックリンクが存在する
ソフトウェアの追加/削除でインストールした場合に、sbusybox(setuidが必要なプログラムを別バイナリに分離しています)にSUIDビットが立たないので、インストール後にルートユーザーでSUIDビットを立てておいて下さい。
$ su # chmod u+s /opt/QtPalmtop/bin/sbusybox
- 最新バージョン
- 旧バージョン
ビルド内容
下記の内容でビルドを行っています。
パッチ作成
tarのオプションとして--no-same-ownerと--no-same-permissionsが実装されていないために、ソフトウェアの追加/削除(ipkgコマンド)がうまく動かなかったので、このオプションを実装しました。
- patch --> こちら
ビルド設定
busybox、sbusyboxそれぞれの.configの内容
実装コマンド
実装されているコマンドの一覧
- busybox
[, ar, arping, awk, basename, bunzip2, busybox, bzcat, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp, cp, cpio, crond, cut, date, dc, dd, deallocvt, df, dirname, dmesg, dos2unix, dpkg, dpkg-deb, du, dumpkmap, echo, egrep, env, expr, false, fbset, fdflush, fdisk, fgrep, find, fold, free, freeramdisk, fsck.minix, ftpget, ftpput, getopt, grep, gunzip, gzip, head, hexdump, hostid, hostname, hwclock, id, ifconfig, install, ip, ipaddr, ipcalc, iplink, iproute, iptunnel, kill, killall, last, length, ln, loadfont, loadkmap, logger, logname, losetup, ls, makedevs, md5sum, mkdir, mkfifo, mkfs.minix, mknod, mktemp, more, mt, mv, nameif, nc, netstat, nslookup, od, openvt, patch, pidof, pipe_progress, pivot_root, printf, ps, pwd, rdate, readlink, realpath, renice, reset, rm, rmdir, route, rpm, rpm2cpio, run-parts, rx, sed, seq, setkeycodes, sha1sum, sleep, sort, start-stop-daemon, strings, stty, sync, sysctl, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, true, tty, uname, uncompress, uniq, unix2dos, unzip, uptime, usleep, uudecode, uuencode, watch, watchdog, wc, wget, which, who, whoami, xargs, yes, zcat
- sbusybox
busybox, crontab, mount, ping, ping6, traceroute, umount
使用上の注意点等
- コマンドについて
コマンドで使用出来るオプション等はマニュアルを参照して下さい。
- PATH環境変数
元々インストールされているBusyBox0.60.4よりもBusyBox1.00を優先させて使用したい場合には、/opt/QtPalmtop/bin/(/home/QtPalmtop/bin/)をPATH環境変数の最初の方に設定して下さい。
- タイムゾーン
タイムゾーンの設定がないと、時間を使用するコマンドがUTCで動いてしまうので、環境変数TZをJST-9等に設定しておいて下さい。
export TZ=JST-9
- crond
crondは /etc/crontab は参照せず、crontabコマンドで編集したファイルのみを参照して動作します。
crondの起動/停止スクリプトの例 --> こちら
- crontab
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
コメント
コメント等がありましたらこちらへどうぞ。
- 2004-11-03 (Wed) 18:12:11 yakty : とりあえずRC版として公開し、コマンドの要/不要等があればビルドオプションの変更、問題等があればその解消を行い、正式版としてリリースしたいと思っています。
- 2004-11-03 (Wed) 19:15:15 masaya : 早速、使わして頂きます。
- 2004-11-03 (Wed) 22:55:42 ごんた? : 早速いただきました。つかわせていただきます。
- 2004-11-12 (Fri) 22:36:40 wata? : 早速使わせていただいていますが、私の環境(C860)ですと、インストール後に「ソフトウェアの追加と削除」で他のアプリケーションを本体以外にインストールできなくなってしまいます。
- 2004-11-13 (Sat) 00:41:22 yakty : エラーの発生するコマンドを特定する方法を載せたので、どのコマンドがどのような引数で呼ばれた時にエラーが発生しているのかを特定してもらえませんか?よろしくお願いします。
- 2004-11-13 (Sat) 02:01:05 wata? : とりあえず、http://www.linux-solutions.at/projects/zaurus/games-Pipeman.htmlを SDにインストールしようとしましたが、失敗。busybox.logの中身は
[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にインストールできました。
- 2004-11-23 (Tue) 21:20:36 Suguru? : 使わせていただいていますが、wata様同様にC860ですとPC側でzaurusのバックアップとりストアを行う、バックアップ/リストアツールがデータリスト取得時に「データに誤りがある」とエラーを起こしてしまいます。busyboxをアンインストールしますと問題ありません。以上ご報告までに。
- 2004-12-01 (Wed) 14:35:44 雲山? : いつも便利に使わせていただいております。C3000でbusybox_1.00-rc3_arm.ipkを使用していて、下記のような不具合がありましたのでご報告いたします。
現象: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のスワップ領域としてフォーマットされる。
以上です。
- 2004-12-06 (Mon) 23:33:37 yakty : lnコマンドの動作が0.60と違うようなので、リンクを張らないようにしてみました。0.60ではディレクトリへのシンボリックリンクをリンク先に指定した時の動作が-nオプションを指定した時の様な動作になってしまっているようです。1.00での動作の方が正しい動作のようですが(Vine2.6、Debian3.0のlnコマンドで確認)この影響で/home/zaurus/Document、Settings、Applications以下に不要なシンボリックリンクが出来てしまうようです。
- 2004-12-06 (Mon) 23:39:04 yakty : 他にも動作の違うコマンドがあるかもしれませんので、発見した方はご報告をお願いします。
- 2004-12-06 (Mon) 23:43:26 yakty : >雲山さん。表示されていた英文メッセージはどのようなメッセージだったのでしょうか?日本語訳を書かれてもさっぱりなのですが…(^_^;
- 2004-12-07 (Tue) 12:16:12 雲山? : すいません、再度試してみました。エラーメッセージは以下の通りです。
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領域をフォーマットできました。
お騒がせ致しました<(__)>
- 2004-12-07 (Tue) 21:12:44 yakty : どうもありがとうございます。とりあえずmkswapはそのままにしておこうと思います。
- 2004-12-08 (Wed) 22:53:48 yakty : tarコマンドのリンクを外すと、SDへのインストールも正常に動くところまでは突き止められたんですが、何がまずいのか全く分かりません…。tarのリンクを外してしまうという手もあるんですが、gzip圧縮、bzip2展開も使えるようになっているので出来れば使える状態にしておきたいと思っています。どなたか原因をつかめたら教えて下さい。
- 2005-04-10 (Sun) 04:37:21 yocky? : べんりですね。使わせてもらいます。ただ、diffはないのでしょうか?
- 2005-04-10 (Sun) 13:16:27 yakty : busyboxにはdiffは含まれてないようです。
- 2005-05-23 (Mon) 18:22:34 ディジェSE-R? : はじめまして。busybox、インストールして使用したいと思っているんですが、こちらをインストールすると、起動時に大量にエラーのようなメッセージが発生(スペシャルカーネルです)するのと、ホーム画面設定から、プログラムのアイコンの設定を変えようとしても(アイコンのタブ間移動など)うまく変わりません(新規タブにコピーはされるが、旧タブから削除されない感じ)となっています。何か、設定等が必要なのでしょうか?
- 2005-05-24 (Tue) 00:30:31 yakty : おそらく特定のコマンド挙動が、デフォルトで入っている0.60.4と違う事から来ているとは思うのですが、私の方でそれらを全て特定することは不可能なので、原因となっているコマンドを特定していただければそのコマンドを無効にしたバージョンをリリースしたいと思いますので、よろしくお願いします。
- 2005-10-10 (Mon) 13:31:31 SD? : SDカード上でパーミッションの変更はできますか?
- 2005-10-10 (Mon) 17:55:00 えりお? : SDカードの問題ではなくてフォーマットの問題では?
[[#comment]]