「KURO-BOX/T4」タグアーカイブ

snmpdのログレベル変更

snmpdにアクセスすると、その度にsyslogにログを吐いてかなりの量に・・・
ログの出力レベルを変更して、通常のレベルのログを出力しないようにします。

# vi /etc/default/snmpd

SNMPDOPTS=’-Lsd -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid
この行を書き換えます。
※仕様が変わったのか、他と仕様が違うのか、よく書かれている方法ではうまく動きませんでした。

SNMPDOPTS=’-LS3d -Lf /dev/null -u root -I -smux -p /var/run/snmpd.pid

これでsyslogにログが出力されていないのを確認しました。
※ログレベルは3と書いてあるサイトや5と書いてあるサイトがあります。

kernel.hには以下のように書かれているのでerr以上の場合は3、notice以上の場合は5で良いとは思います。

#define KERN_EMERG “<0>” /* system is unusable */
#define KERN_ALERT “<1>” /* action must be taken immediately */
#define KERN_CRIT “<2>” /* critical conditions */
#define KERN_ERR “<3>” /* error conditions */
#define KERN_WARNING “<4>” /* warning conditions */
#define KERN_NOTICE “<5>” /* normal but significant condition */
#define KERN_INFO “<6>” /* informational */
#define KERN_DEBUG “<7>” /* debug-level messages */

USB-LANの交換

LinkStationの時から使用してたIOデータETG-US2があまり調子良くなかったので
BuffaloのLUA2-U2-KGTを購入。

チップはETG-US2と同じでカーネルのソースにはLUA-U2-GTとしてIDの登録もあり。
チップはAX88178です。

既にAsix.cはコンパイルしてmoduleとして入れてあるので差し替えるだけ。

eth1はETG-US2として記録されているのでeth2として認識。
設定を記録してる/etc/udev/rules.d/70-persistent-net.rulesを書き換え。

書き換え後に再起動で無事eth1として認識。

2009/11/08 追記
IOデータETG-US2、Buffalo LUA2-U2-KGT共に
/proc/net/devのパケット情報が全て0で取れていなかったのですが
カーネルのバージョンを2.6.31.5に上げることで、正常動作するようになりました。
(パケットカウントが取れないだけで動きは正常でした)
T4でUSB-LANを使用される方は、カーネルをバージョンアップした方が良いでしょう。

vimの色表示ON

T4のでエディターはvimを使用しているのですが
vi /etc/vim/vimrcでsyntax onにしてもエラーになりました。

Error detected while processing /usr/share/vim/vimrc:
line 20:
E319: Sorry, the command is not available in this version: syntax on

バージョン的には問題ないと思うんですが。

ということでvimをフルでインストール(笑)
(パッケージが多くて結構時間掛かります)

#apt-get install vim-full

途中で設定画面が出て来ますが、変更なしで先へ進めば設定完了。
/etc/vim/vimrcのsyntax onを有効にしてvim起動!

ちゃんと色が付いて表示されました。
(vimに色なんて要らね~っていう方には、全く要らないですね)

ついでにlsコマンドでの表示も色表示をONにします。

ユーザー全員に色付けOKにするには/etc/skel/.bashrcの変更を。
と思ったら、こちらは既に色付けOKな設定でした。

という事は、rootが個別に色無しになっているのか確認。
# vi /root/.bashrc

以下の行が色付けの行なんですが、コメントアウトされていました。
# export LS_OPTIONS=’–color=auto’
# eval “`dircolors`”
# alias ls=’ls $LS_OPTIONS’

コメントを取って、上書きして、logout
export LS_OPTIONS=’–color=auto’
eval “`dircolors`”
alias ls=’ls $LS_OPTIONS’

再度ログインするとlsコマンドでちゃんと色付き表示されました。

mediatombの設定

LinkStationにてmediatombは導入済みでしたので
インストール&設定を行って起動でPS3から検索。
LinkStationでの導入記事

しかしPS3からDLNA機器は見つかりません・・・

再度、設定を見直しました。

# vi /etc/default/mediatomb

この中の以下の行が問題でした。

変更前:INTERFACE=””
変更後:INTERFACE=”eth0″

インターフェースをちゃんと指定しないとダメなようです。
mediatombを再起動後にPS3からちゃんと見えるようになりました。

ブラウザからDLNAに登録するディレクトリを選択できますが
設定を間違うとサーバーに非常に負担が掛かります。

mediatomb

各設定の意味は以下のようになります。
Scan Mode:
None スキャンしない
Timed 決められた時間でスキャンを行う
Inotify カーネルからファイル変更(追加、削除等)の通知を受けてDB登録する

Initial Scan:
Basic 単純にファイルの追加・削除の変更のみで更新を行う
Full 最後に登録されている情報と相違が無いかチェックして更新を行う

Recursive:
チェックを入れると再帰的に下位のディレクトリも検索の対象とします。

Include hidden files/directories:
チェックを入れると隠しファイルも検索の対象となります。

お勧めの設定は、上の画像の通りです。
Scan Mode:Timed + Initial Scan:Full + Recursive:チェックの設定にすると
ファイル数が多かったり、ディレクトリの階層が深いと、かなりの数の検索を行うことになり、サーバーに非常に負荷が掛かります。

LCD制御スクリプト

KURO-BOX/T4には、TeraStationと同様のLCDディスプレイが付いています。
標準でのインストールでは機能しないので、これを機能するようにスクリプトを作成しました。
私が実際に使っているスクリプトファイルを、一番下でダウンロード出来ます。

LCD表示スクリプト(LANリンク速度、ディスク容量、ホスト名、IP、日付、ファン回転数、ケース内温度)

#!/bin/sh

PATH=$PATH:/usr/local/sbin
export PATH

# lcd back light bright {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
BACK_LIGHT_BRIGHT="70"

miconapl -a lcd_set_bright $BACK_LIGHT_BRIGHT

hostname=`cat /etc/hostname`
miconapl -a lcd_set_hostname $hostname
miconapl -a lcd_disp_hostname

miconapl -a lcd_disp_fanspeed_on
miconapl -a lcd_disp_temp_on

#私の場合は固定IPなので、ここにリンク速度のスクリプトへのパスを書いています。(IP取得も同様に1回しか呼んでいません)

#ここにディスク容量取得スクリプトのパス

#ここにディスクRAID設定スクリプトのパス

miconapl -a lcd_set_dispitem linkspeed hostname ipaddress date buffer0 buffer1

miconapl -a lcd_changemode_auto

idx=1
while :
do
sleep 60

dispdatetime=`date '+%y %m %d %k %M %S'`
miconapl -a lcd_set_date $dispdatetime

idx=`expr $idx + 1`
if [ $idx -ge 10 ]; then
idx=1;
#ここにディスク容量取得スクリプトのパス

#ここにディスクRAID設定スクリプトのパス
fi
done

NICリンクアップ時スクリプト(DHCPなどでIPが変更になる人は/etc/network/if-up.dなどの下にスクリプトとして書いてください)

#!/bin/sh

PATH=$PATH:/usr/local/sbin
export LANG=C
export PATH

ipaddress=`ifconfig | grep "inet addr" | awk '{print $2}' | awk -F: 'NR==1 {print $2}'`

miconapl -a lcd_set_ipaddress $ipaddress

リンク速度設定スクリプト

#!/bin/bash

PATH=$PATH:/usr/local/sbin
export PATH

eth_dev="eth0"

link_nolink="nolink"
link_10h="10h"
link_10f="10f"
link_100h="100h"
link_100f="100f"
link_1000="1000"

mii_result=`mii-tool $eth_dev`

case $mii_result in
*"10baseT-HD"*) set_link_speed=$link_10h;;
*"10baseT-FD"*) set_link_speed=$link_10f;;
*"10baseT-HD"*) set_link_speed=$link_100h;;
*"10baseT-HD"*) set_link_speed=$link_100f;;
*"1000baseT-FD"*) set_link_speed=$link_1000;;
*) set_link_speed=$link_nolink
esac

miconapl -a lcd_set_linkspeed $set_link_speed

exit

※リンク速度を表示する場合は
miconapl -a lcd_set_dispitem にlinkspeedを追加してください。
(リンク速度を設定することにより、本体のLinkActランプが自動的に点灯、点滅します)

ディスク容量セットスクリプト

#!/bin/bash

PATH=$PATH:/usr/local/sbin
export PATH

device1="/dev/sda"
device2="/dev/sdb"
device3="/dev/sdc"
device4="/dev/sdd"

d1=`df -m | grep $device1 | awk 'BEGIN {use=0; total=0} // {use+=$3; total+=$2} END{printf "%d", use/total*100}'`
d2=`df -m | grep $device2 | awk 'BEGIN {use=0; total=0} // {use+=$3; total+=$2} END{printf "%d", use/total*100}'`
d3=`df -m | grep $device3 | awk 'BEGIN {use=0; total=0} // {use+=$3; total+=$2} END{printf "%d", use/total*100}'`
d4=`df -m | grep $device4 | awk 'BEGIN {use=0; total=0} // {use+=$3; total+=$2} END{printf "%d", use/total*100}'`

if [ $d1 -lt 0 ]; then
d1=0;
fi
if [ $d2 -lt 0 ]; then
d2=0;
fi
if [ $d3 -lt 0 ]; then
d3=0;
fi
if [ $d4 -lt 0 ]; then
d4=0;
fi

miconapl -a lcd_set_disk_capacity $d1 $d2 $d3 $d4

exit

※ディスク容量を表示する場合は
miconapl -a lcd_set_dispitem にhostnameを追加してください。
(T4のマイコン仕様書ではLinkSpeedと同じバッファを使ってるように読み取れましたが、miconaplではhostnameで表示されました)
ディスク容量セットスクリプトを定期的に動かすことで容量を再セットしてください。
また、ディスクの容量はマイコン仕様書では16進でセットしますが
miconaplが内部で変換しているようで0~100の値をセットで問題ありません。
(100まで行かなくても、95でFull表示になりました)

尚、raidを組んでいる場合はsdaやsdbの文字では正常に値が取得できませんので、md0などraidのデバイスとして登録してある文字f列をセットしてあげてください。
(一つのディスクに複数のraid用タイプfdを作成し,raidを複数組んでる場合は、このスクリプトは使用できません)
私の場合は、Disk2、Disk3、Disk3の3台をRaid5で運用していますので
device2=”/dev/md0″とし
d3=とd4=をコメントにし
miconapl -a lcd_set_disk_capacity $d1 $d2 $d2 $d2
としています。

電源ボタン監視スクリプト

#!/bin/sh

GET_SW="/usr/local/sbin/miconapl -a int_get_switch_status"
BEEP="/usr/local/sbin/miconapl -a bz_on button"
BEEP2="/usr/local/sbin/miconapl -a bz_on boot"
LCD_OFF="/usr/local/sbin/miconapl -a lcd_changemode_button"
LCD_FAN_OFF="/usr/local/sbin/miconapl -a lcd_disp_fanspeed_off"
LCD_TEMP_OFF="/usr/local/sbin/miconapl -a lcd_disp_temp_off"
LCD_BUF2_ON="/usr/local/sbin/miconapl -a lcd_disp_buffer2"
LCD_BRIGHT_ZERO="/usr/local/sbin/miconapl -a lcd_set_bright 0"
COUNT=4

while :
do
SW=`$GET_SW |grep "int=" |sed -e "s/int=//"`
case ${SW} in
power_sw)
COUNT=`expr ${COUNT} - 1`
if [ ${COUNT} -eq 0 ]
then
${BEEP2}
${LCD_OFF}
${LCD_FAN_OFF}
${LCD_TEMP_OFF}
${LCD_BUF2_ON}
${LCD_BRIGHT_ZERO}
/sbin/shutdown -hP now
else
${BEEP}
fi
sleep 1
;;
init_sw_front)
;;
*)
COUNT=4
sleep 2
;;
esac
done

2009/11/13 輝度制御スクリプトの追加
輝度制御設定ファイル(/etc/lcd_control.confで保存してください)

###################################################################
#
# LCD&LED輝度コントロール設定ファイル
#
###################################################################

# LED輝度通常時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
NORMAL_LED=100

# LCD輝度通常時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
NORMAL_LCD=70

# 時刻連動使用 {true | false}
TIME_LINKED=true

# LED輝度減光時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
DOWN_LED=50

# LCD輝度減光時 {0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100}
DOWN_LCD=50

# LED輝度通常時刻 {0 - 23} step 1
NORMAL_START_TIME=7

# LED輝度減光時刻 {0 - 23} step 1
DOWN_START_TIME=23

輝度制御スクリプト

#!/bin/sh

PATH=$PATH:/usr/local/sbin
export PATH
# 設定ファイル
CONF_FILE=/etc/lcd_control.conf

if [[ -f "$CONF_FILE" ]]
then
. $CONF_FILE
else
echo "LCD輝度制御設定ファイル $CONF_FILE が見つかりません。"
exit 1
fi

if [ $TIME_LINKED = 'false' ]; then
exit
fi

while :
do
sleep 60

now_lcd=`miconapl -a lcd_set_bright|grep lcd_bright=|sed -n -e "s/.*=//p"`
now_led=`miconapl -a led_set_bright|grep led_bright=|sed -n -e "s/.*=//p"`

temphour=`date '+%k'`

if [ $NORMAL_START_TIME -eq $DOWN_START_TIME ]; then
# 通常時と減光時の時刻が同じ場合は、常に通常扱い
mode='normal'
elif [ $NORMAL_START_TIME -lt $DOWN_START_TIME ]; then
# 通常時が減光時より小さい場合
if [ $NORMAL_START_TIME -le $temphour -a $DOWN_START_TIME -gt $temphour ]; then
# 通常時の範囲
mode='normal'
else
# 減光時の範囲
mode='down'
fi
else
# 減光時が通常時より小さい場合
if [ $DOWN_START_TIME -le $temphour -a $NORMAL_START_TIME -gt $temphour ]; then
# 減光時の範囲
mode='down'
else
# 通常時の範囲
mode='normal'
fi
fi

if [ $mode = 'normal' ]; then
# 通常時
lcd_set_num=$NORMAL_LCD
led_set_num=$NORMAL_LED
else
# 減光時
lcd_set_num=$DOWN_LCD
led_set_num=$DOWN_LED
fi

# 現在の設定と違う場合は設定変更
if [ $now_lcd -ne $lcd_set_num ]; then
miconapl -a lcd_set_bright $lcd_set_num
fi
if [ $now_led -ne $led_set_num ]; then
miconapl -a led_set_bright $led_set_num
fi
done

2009/11/13 RAID設定スクリプトの追加
※¥は全角で書いていますので、半角に書き換えてください。(blognの制約上)
表示形式は以下の通りです。
LCD下段はRAIDの状態で表示が変わります。
RAIDなし(/proc/partitionsにmdの文字が見つからない場合)
上段:Operation MODE
下段:Normal
RAID0~6
上段:HD 2-3-4
下段:RAID○ [UUUU]
上段はmd○のArrayに使用されているドライブ番号が表示されます。
例:1,2,3,4ドライブでRAID利用=1-2-3-4
下段のUUUUの部分は/proc/mdstatで取得出来るディスクのディスクの動作状況です。
以下はエラー系です。
/proc/mdstatからRAIDの状態を取得出来なかった場合:RAID GET ERROR
/proc/mdstatからディスクの動作状況を取得出来なかった場合:RAID○

#!/bin/sh

PATH=$PATH:/usr/local/sbin
export PATH

#md?のパーティションがあるかチェック
first_md_char=`cat /proc/partitions|grep md|sed -n -e "s/.*md//p"`

raid_mode="Operation MODE  "
if [ $first_md_char = "" ]; then
#md?が見つからない(ノーマルモード)
raid_mode="${raid_mode}Normal          "
else
#md?が見つかった場合
proc_mdstat=`cat /proc/mdstat`

#RAIDのドライブ構成を調べる
raid_mode="HD "
raid_info=""
idx=0
while [ $idx -ne 4 ]
do
drive=`echo "$proc_mdstat"|grep ¥[${idx}]|sed -n -e "s/.¥[${idx}].*//p"|sed -n -e "s/.*sd//p"`
case $drive in
a)drive="1";;
b)drive="2";;
c)drive="3";;
d)drive="4";;
*)drive="";;
esac

#ドライブ構成文字の作成
if [ ! $drive = "" ]; then
if [ ! $raid_info = "" ]; then
raid_info="${raid_info}-${drive}"
else
raid_info="${drive}"
fi
fi
idx=`expr $idx + 1`
done

#RAID表示文字(上段)の作成
raid_mode="${raid_mode}${raid_info}"
#16バイトになるまで空白で埋める
idx=`expr length "$raid_mode"`
while [ $idx -lt 16 ]
do
raid_mode="${raid_mode} "
idx=`expr $idx + 1`
done

#RAIDモード、ドライブ動作状況の取得
raid_mode_num=`echo "$proc_mdstat"|grep md${first_md_char}|sed -n -e "s/ sd.*//p"|sed -n -e"s/.*raid//p"`
if [ $raid_mode_num = "" ]; then
#情報取得エラー
raid_mode="${raid_mode}RAID GET ERROR"
else
#モード取得
raid_state=`echo "$proc_mdstat"|grep '] ¥['|tr -d '¥012'|sed -n -e"s/.*] //p"`
#動作状況取得
raid_mode="${raid_mode}RAID${raid_mode_num} $raid_state"
fi
fi
#miconに文字列をセット
miconapl -a lcd_set_raidmode32 "$raid_mode"

※RAID設定を表示する場合は
miconapl -a lcd_set_dispitem にraidmodeを追加してください。
※表示するRIADの情報は/proc/partitionsにて最初に取得出来るmd○のArrayとなります。

※ケース内温度によるファン回転数制御スクリプトは、ネットなどで転がっている物が使えると思いますので省略します。

2009/11/16 追記
以下は私が使っているスクリプトです。
環境に合わせて書き換えてください。
lcd_scripts.tar.bz2
/usr/loca/sbin に解凍して実行権限を与えてください。

lcd_scripts_conf.tar.bz2
このファイルはスクリプトの設定ファイルになります。
/etc に解凍して、設定を行ってください。

またこれらのスクリプトを実行するために/etc/rc.local に以下の記述を行い、起動時に実行しています。

# init LCD display
if [ -x /usr/local/sbin/Keventd ] ; then
/usr/local/sbin/Keventd &
fi

if [ -x /usr/local/sbin/Fand ] ; then
/usr/local/sbin/Fand &
fi

if [ -x /usr/local/sbin/Displayd ] ; then
/usr/local/sbin/Displayd &
fi

if [ -x /usr/local/sbin/lcd_control.sh ] ; then
/usr/local/sbin/lcd_control.sh &
fi

モニター当選

KURO-BOX/T4のモニターを募集していたので、応募したら当選しました!
モニターの条件は、予め申告した内容をレポートする事。
当選者は抽選ではなく、その申告内容で決まるというものでした。
※HDDは商品に含まれていないので、自分で準備する必要があります。

レポートは提出し終わったので、blogの方にも情報を書こうかと思ってます。

構成はHDD1に標準インストール、HDD2、3、4でRaid5を構築。
WebServer、DHCPサーバー、DLNAサーバー、USB-LAN使用のルータ、ファイルサーバーなど
スペックが高くないのにテンコ盛りです(笑)

KURO-NAS/T4