Skip to content

初代玄箱 を使っていたのですが、老朽化してきたので玄箱 PRO を新規購入して、新たにファイルサーバを作り直しました。以下のページを参考に、玄箱 PRO には Debian をインストールすることにしました。

sushi-k さんの Debian 化キットを使う

今回は横着して、sushi-k さんが作成されている Debian 化キットを利用させて頂きました。sushi-k さんのページに記載されている手順のままですが、私が実施した手順を記載しておきます。

まず、sushi-k さんのページ から作業用の Windows 端末へ、以下のファイルをダウンロードしておきます。

  1. ChangeMeDevHDD
  2. ChangeMyUbootEnv
  3. debian_kit.tar.gz
  4. gnutar_kuropro.gz
  5. hddrootfs.tar.gz
  6. uImage.buffalo

次に Windows 端末の IP アドレスが初期状態の玄箱 PRO と同じネットワークになるよう、IP アドレスを「192.168.11.149/24」(第四オクテットは適当)へ変更しておきます。アドレス変更が完了したら、玄箱 PRO と Windows 端末をネットワークケーブルで接続し、玄箱 PRO の電源を ON にします。しばらく(数分)してから玄箱 PRO が起動した頃を見計らい、Windows 端末から玄箱 PRO(初期アドレスは 192.168.11.150)の共有フォルダへアクセス出来ることを確認します。無事、共有フォルダが閲覧出来るようであれば、mtd ディレクトリへアクセスし、sushi-k さんのページからダウンロードしてきたファイル群を全てコピーしておきます。

後は玄箱 PRO 上でコマンドによる操作を実行することになりますから、Windows 端末から玄箱 PRO へユーザ名「root」、パスワード「kuroadmin」で TELNET します。

玄箱 PRO はデフォルトで「BusyBox」という Linux ディストリビューションで起動しているのですが、BusyBox 添付の tar は展開したファイルのパーミッションを引き継いでくれない、という問題があるようですから、BusyBox 添付の tar を予め Windows 端末からコピーしておいた tar と差し替えます。

1
2
3
cd /mnt/mtd
gzip -dc gnutar_kuropro.gz >/bin/tar
chmod a+x /bin/tar 

ここまで準備が出来れば、sushi-k さん作の Debian 化キットを展開します。

1
tar xvzpf debian_kit.tar.gz -C /

展開が終われば、玄箱 PRO 背面に付いている赤い RESET ボタンを 4 〜 5 秒長押しすると、「ピッ」という電子音が鳴り、本体前面の INFO ランプの点滅と共に Debian 化が開始されます。数分 〜 数十分して INFO ランプの点滅が終了したら、TELNET から玄箱 PRO を再起動し、Debian 化は完了です。

1
reboot

Debian 化後の初回ログイン

sushi-k さんのキットで Debian 化が完了すると、玄箱 PRO は以下のような設定で起動してきます。

  • IP アドレスは「192.168.1.81/24」
  • 一般ユーザはユーザ名「kurobox」、パスワード「kurobox」
  • root ユーザはパスワード「kuroadmin」のまま
  • TELNET は停止状態
  • SSH が起動状態

以降は上記の情報を参考に、玄箱へログインします。

スワップ領域の作成

起動直後の状態ではスワップ領域が作成されていません。

1
2
3
4
5
6
$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              2893052    158106   2587952   6% /
tmpfs                    63192         0     63192   0% /lib/init/rw
tmpfs                    63192         0     63192   0% /dev/shm
/dev/sda1                55291      5813     46669  12% /boot

root ユーザへ変更した後、スワップ領域を作成します。作成したスワップ領域は再起動するとマウントされます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# mkswap /dev/sda3
Setting up swapspace version 1, size = 139825 kB
no label, UUID=4a3b829b-9591-4ad6-a958-985ebe3fb559
# reboot
        ・
        ・
        ・
$ cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       136544  0       -1

シャットダウン時に電源が切れるようにする

Debian 化直後の状態ではシャットダウン時に電源が切れません。/etc/default/halt を以下のように修正し、hatl コマンド実行時に電源が落ちるように変更します。

1
2
3
4
$ cat /etc/default/halt
# Default behaviour of shutdown -h / halt. Set to "halt" or "poweroff".
# HALT=poweroff
HALT=halt

IP アドレスの変更 / 名前解決時に参照する DNS サーバの変更

自分自身のネットワークに合わせて、/etc/network/interfaces を書き換えておきます。参考までに初期状態では以下のようになっています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ cat /etc/network/interfaces
# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
# /usr/share/doc/ifupdown/examples for more information.

auto lo
 iface lo inet loopback

auto eth0
 iface eth0 inet static
 address 192.168.1.81
 network 192.168.1.0
 netmask 255.255.255.0
 broadcast 192.168.1.255
 gateway 192.168.1.1

同様に、名前解決時に参照する DNS サーバの設定も変更しておきます。設定変更対象は /etc/resolv.conf です。参考までに初期状態では以下のようになっています。

1
2
3
$ cat /etc/resolv.conf
search localnet.mda.or.jp
nameserver 192.168.1.1

killall をインストールする

Debian 化直後の状態だと kill コマンドはインストール済みなのですが、killall コマンドがインストールされていません。killall コマンドを使うと対象プロセスをプログラム名で指定して終了や再起動などのシグナル送信を実施出来るようになります(参考: killとkillallの違いはなに? - ITmedia エンタープライズ )。killall は psmisc というパッケージに含まれている為、apt-get で簡単にインストールすることが出来ます。

1
apt-get install psmisc

ファンコントロールなど、玄箱 PRO 独自の機能を使う

ファンコントロールなど、玄箱 PRO 独自の機能を利用する為、まずは Flash に内蔵されているファイル群を HDD に書き出しておきます。

1
2
3
4
5
mkdir /mnt/tmp
mkdir /usr/local/buffalo/
mount /dev/mtd2 /mnt/tmp
cd /mnt/tmp
tar cf - . |(cd /usr/local/buffalo/; tar xvf -)

コピーした Flash 内のファイルを Debian 環境から利用出来るように、/usr/local/sbin/miconapl として以下の内容のファイルを作成しておきます。

1
chroot /usr/local/buffalo $0 $*

続いて、以下の内容で起動スクリプト /etc/init.d/miconapl を作成しておきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh

case "$1" in
  start)
        chroot /usr/local/buffalo mount -t proc proc /proc
        chroot /usr/local/buffalo /etc/init.d/checkroot.sh start
        chroot /usr/local/buffalo /usr/local/sbin/miconapl -b -a boot_end
        chroot /usr/local/buffalo /etc/init.d/FanController.sh start
        ;;
  stop)
        chroot /usr/local/buffalo /etc/init.d/FanController.sh stop
        chroot /usr/local/buffalo umount /proc
        ;;
  *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit 0

作成したファイルに実行権を付与しておきます。

1
chmod a+x miconapl

次に、Flash 環境からコピーしたシェルスクリプトを適切な位置へコピーします(後ほど、スクリプトの内容を一部、変更します)。

1
2
3
cp /usr/local/buffalo/etc/init.d/Kevent.sh /etc/init.d
cp /usr/local/buffalo/usr/local/sbin/Keventd /usr/local/sbin
cp /usr/local/buffalo/usr/local/bin/KeventHandller.sh /usr/local/bin

シェルスクリプトの一部を編集します。/usr/local/sbin/Keventd のうち、6 行目をコメントアウトし、7 行目に「KERNEL_EVENT 〜」を挿入します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# vi /usr/local/sbin/Keventd

#!/bin/sh


#. /usr/local/bin/kuro_lib
KERNEL_EVENT_TAIL=/proc/buffalo/kernevnt

if [ ! -e ${KERNEL_EVENT_TAIL} ] ; then
        exit 0
fi

while :
do
        while :
        do
                LINE=`cat ${KERNEL_EVENT_TAIL}`
                /usr/local/bin/KeventHandller.sh ${LINE}
        done
done

次に /usr/local/bin/KeventHandller.sh についても以下の部分について編集します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/sh

case $1 in
micon_interrupts)
        INT_DETAIL=`/usr/local/sbin/miconapl -a int_get_switch_status |sed -n -e "s/int=//p"`
        case ${INT_DETAIL} in
        power_sw)
                shutdown -h now
                ;;
        esac
        ;;
esac

次に /usr/local/bufflao/etc/init.d/FanController.sh の以下の部分を編集します。

1
2
3
4
5
start(){
if [ -x /usr/local/sbin/Fand ] ; then
        /usr/local/sbin/Fand &
fi
}

次に /usr/local/buffalo/usr/local/sbin/Fand の以下の部分を変更します。

1
2
3
4
5
6
#!/bin/sh

PATH=$PATH:/usr/local/sbin
export PATH
CONF_FILE=/etc/fan.prof
miconapl -a fan_set_speed full

最後に、自動起動用のシンボリックリンクを作成します。

1
2
3
4
5
6
7
ln -s /etc/init.d/miconapl /etc/rc0.d/K10miconapl
ln -s /etc/init.d/miconapl /etc/rc6.d/K10miconapl
ln -s /etc/init.d/miconapl /etc/rcS.d/S80miconapl

ln -s /etc/init.d/Kevent.sh /etc/rc0.d/K10Kevent.sh
ln -s /etc/init.d/Kevent.sh /etc/rc6.d/K10Kevent.sh
ln -s /etc/init.d/Kevent.sh /etc/rcS.d/S81Kevent.sh