busyboxは入れておいたほうがいいという話

先日、手がすべって(自宅のマシンで)coreutilsをばっさり削除してしまいました。

coreutilsとはなにかというと、CUIでなにかしらのオペレーションを行うときに必要になるコマンドのセットです。

/bin/cat
/bin/tac
/bin/cp
/bin/dd
/bin/echo
/bin/false
/bin/ln
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mv
/bin/rm
(snip)

なのでこれを消してしまうと、ファイルを消したりディレクトリを作ったりできないけどFirefoxは動くというよくわからない状態になります。

ホホホーなんてひとしきり遊んでから、さて直すかと思ったんですが、件のマシンはソースからコンパイルするタイプのパッケージシステムなんで、バイナリがありませぬ。ではではとコンパイルするにもcoreutilsなコマンド使いまくりのconfigureが完了するわけもなくー

結局、他のマシンの busybox (Debian etchbusybox-static) をもってきて、それを使ってcoreutilsをインストールしなおして復旧。


busyboxは、coreutilsを含むGNUの*utilsシリーズのコマンドのサブセット(的なもの)。リソースの少ない環境での使用を念頭においているので、FDで起動するLinux(なつい)とかLinuxベースのPDAとかで使われてるのを見た人も多いんじゃないかと思います。

で、一式コマンドが揃っているので、こっそりインストールしておくとこういうときに役に立つわけです。

あとレスキュー目的で入れるんなら、busyboxはstatic版の方がいいんじゃないかと思います:

  • /lib/*が消失してもstaticなら使えるのでまだ戦える
  • ディストリとか違っても他のマシンにコピーして助けてあげられる

そんなわけで、staticなbusyboxを入れて、

$ ls -l /static/
lrwxrwxrwx 1 root root 12 Apr 20 14:40 [ -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 [[ -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 addgroup -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 adduser -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 adjtimex -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 ar -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 arp -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 arping -> /bin/busybox
lrwxrwxrwx 1 root root 12 Apr 20 14:40 ash -> /bin/busybox
(snip)

なんていうsymlinkをはりまくりました。多分、3年後ぐらいに同じヘマをやって「あの日にbusyboxインストールしたオレに感謝!」なエントリを書くことになると思います。


最後に1つ(以前、師匠に教わった)TIPSを。

  • ls が使えなくても、echo * でファイルの一覧は見られる