仕事でLinuxと戯れているのだが、 相当はまったのがbusybox。これ、スクリプトで #!/bin/sh とかやって shとして起動すると、自分がなりきれるコマンドは内部コマンドとして扱うような 動きをする。
Debianにある busyboxには modprobeも含まれているが、これは2.4用。/sbin/modprobe は2.6用なので、 shell Scriptでmodprobeと書くと /bin/sh の実体によって 2.4が対象だったり2.6が対象だったりすることになる。
ということに気付くのにほぼ1日。busyboxを /bin/sh として起動しているときに、 PATHにないコマンドが実行できることから気が付いた。 /sbin/modprobe や /sbin/insmod を他の名前にして回避。manには載っていないような 気がしたけど、当たり前のことなのかな?
busyboxを作り直せば問題は解決するし、サイズも小さくなるであろうからベスト なんだろうけど。配布するときの手間を考えて、ここいらで妥協。動けばいいのです。