« 2006年01月 | メイン | 2006年03月 »
2006年02月14日
温度+ファン回転数+電源電圧
TeraStation
TeraStationでは以下コマンドを実行することでファンの回転数、温度、電源電圧が判ります。
# cat /proc/driver/fan
+2.5V=2.473 (2.5V電圧)
+1.8V=1.788 (1.8V電圧)
+3.3V=3.297 (3.3V電圧)
+5V=5.077 (5V電圧)
+12V=11.984 (12V電圧)
rpm=410 (回転数)
temp.=28 (温度)
Webブラウザからこれら情報を見ることが出来るようにするパッチがここにあります。
結構便利です。
2006年02月13日
HDDスタンバイ
TeraStation
HDDの表面温度と経年数からHDDの故障する確率を算出するHDD故障確率測定器というサイトを見つけました。
・・・うちのTeraStationは使ってないときでも全開でHDDが回っているのでかなり不安です。
とりあえず使ってないときはHDDを停止してもらうことにしました。
以下内容を/etc/init.d/hdparmとして保存します。
#!/bin/sh
# set stop time for hdd spindle moter
if [ -x /sbin/hdparm ] ; then
/sbin/hdparm -S 800 /dev/hda > /dev/null
/sbin/hdparm -S 800 /dev/hdc > /dev/null
/sbin/hdparm -S 800 /dev/hde > /dev/null
/sbin/hdparm -S 800 /dev/hdg > /dev/null
fi
echo "40 500 0 0 1000000 1000 60 20 0" > /proc/sys/vm/bdflush
で、スーパーユーザーにて以下コマンドを実行します。
cd /etc/rc.d/rc3.d/;ln -s ../init.d/hdparm S99hdparm
cronにて各プログラムが分散して起動するように設定されていますので、0時頃に集中して起動するように/etc/crontabを以下のように変更します。
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
00 0 * * * root /etc/cron.d/mailnotice
01 0 * * * root /etc/cron.d/logrotate
02 0 * * * root /etc/cron.d/calib_time.sh
03 0 * * * root /etc/cron.d/ntpdate
04 0 * * * root /etc/cron.d/scheduler
#* * * * * root /etc/cron.d/progchk
これで40分アクセスが無ければHDDの回転が止まります。
。。。。が、しばらくすると動き始めてしまいます。
どうやらprint daemonが原因のようです。
もしプリンタを接続していない場合は以下コマンドによりprint daemonを停止してください
cd /etc/rc.d/rc3.d/;rm S60lprng
プリンタを接続している場合は以下ファイルにて/mnt/array1/spool以下ディレクトリをスプールとして使うように設定されているので/var以下のramdiskなどを使用するように修正してください。
- /etc/printcap
- /etc/smb.conf
もっと厳密にHDDを停止する場合は/etc/init.d/checkroot.shを太字のように修正するとHDDの停止する期間が長くなります。但し立ち上げるたびにログがクリアされます。
#
# checkroot.sh Check to root file system.
#
# Version: @(#)checkroot.sh 2.78-4 25-Jun-2000 miquels@cistron.nl
#
# chkconfig: S 10 0
#
. /etc/default/rcS
#
# Set SULOGIN in /etc/default/rcS to yes if you want a sulogin to be spawned
# from this script *before anything else* with a timeout, like SCO does.
#
[ "$SULOGIN" = yes ] && sulogin -t 30 $CONSOLE
#
# Activate the swap device(s) in /etc/fstab. This needs to be done
# before fsck, since fsck can be quite memory-hungry.
#
if [ "$FSCKSWAP" != no ]
then
if [ -x /sbin/swapon ]
then
mount -n /proc
if ! grep -qs resync /proc/mdstat
then
[ "$VERBOSE" != no ] && echo "Activating swap..."
swapon -a 2> /dev/null
fi
umount -n /proc
fi
fi
#
# Ensure that bdflush (update) is running before any major I/O is
# performed (the following fsck is a good example of such activity :).
#
[ -x /sbin/update ] && update
#
# Read /etc/fstab.
#
exec 9>&0 rootmode=rw
rootopts=rw
rootcheck=yes
devfs=
while read fs mnt type opts dump pass junk
do
case "$fs" in
""|\#*)
continue;
;;
esac
[ "$type" = devfs ] && devfs="$fs"
[ "$mnt" != / ] && continue
rootopts="$opts"
[ "$pass" = 0 ] && rootcheck=no
case "$opts" in
ro|ro,*|*,ro|*,ro,*)
rootmode=ro
;;
esac
done
exec 0>&9 9>&-
#
# Check the root file system.
#
if [ -f /fastboot ] || [ $rootcheck = no ]
then
[ $rootcheck = yes ] && echo "Fast boot, no file system check"
else
#
# Ensure that root is quiescent and read-only before fsck'ing.
#
mount -n -o remount,ro /
if [ $? = 0 ]
then
if [ -f /forcefsck ]
then
force="-f"
else
force=""
fi
if [ "$FSCKFIX" = yes ]
then
fix="-y"
else
fix="-a"
fi
echo "Checking root file system..."
fsck -C $force $fix /
#
# If there was a failure, drop into single-user mode.
#
# NOTE: "failure" is defined as exiting with a return code of
# 2 or larger. A return code of 1 indicates that file system
# errors were corrected but that the boot may proceed.
#
if [ $? -gt 1 ]
then
# Surprise! Re-directing from a HERE document (as in
# "cat << EOF") won't work, because the root is read-only.
echo
echo "fsck failed. Please repair manually and reboot. Please note"
echo "that the root file system is currently mounted read-only. To"
echo "remount it read-write:"
echo
echo " # mount -n -o remount,rw /"
echo
echo "CONTROL-D will exit from this shell and REBOOT the system."
echo
# Start a single user shell on the console
/sbin/sulogin $CONSOLE
reboot -f
fi
else
echo "*** ERROR! Cannot fsck root fs because it is not mounted read-only!"
echo
fi
fi
#
# If the root filesystem was not marked as read-only in /etc/fstab,
# remount the rootfs rw but do not try to change mtab because it
# is on a ro fs until the remount succeeded. Then clean up old mtabs
# and finally write the new mtab.
#
mount -n -o remount,$rootopts /
if [ "$rootmode" = rw ]
then
rm -f /etc/mtab~ /etc/nologin
: > /etc/mtab
mount -f -o remount,$rootopts /
mount /proc
[ "$devfs" ] && grep -q '^devfs /dev' /proc/mounts && mount -f "$devfs"
else
mount -n /proc
fi
#
# Make ramdisk, and mount /mnt2/ram.
# extract /var directory.
#
#mkfs.ext2 /dev/ram0 > /dev/null 2>&1
#mount -t ext2 /dev/ram0 /mnt/ram
#sync
mount -t tmpfs -o mode=1777,size=15m /dev/shm /mnt/ram
tar xvpzf /root/.files/ramdiskimg.tar.gz -C /mnt/ram > /dev/null 2>&1
sync
## VAR/log is symbolic link
#rm -rf /var/log
#ln -s /usr/log /var/log
#[ -d /usr/log ] || mkdir -p /usr/log
[ -d /var/log ] || mkdir -p /var/log
[ -d /var/spool/lp ] || mkdir -p /var/spool/lp
chmod 777 /var/spool/lp
#
# clear ifstate files
#
cat /dev/null > /etc/network/ifstate
これで今年の夏は乗り切ってくれるでしょうか。
2006年02月11日
samba3.0+libiconvパッチ
TeraStation
samba3.0(というかiconv)には'〜'とか正常に見えなくなる問題があるようです。
パッチを当ててコンパイルしなおしました。
2006年02月09日
samba3.0
TeraStation
TeraStationに入っているsambaは2.2なので3.0をコンパイルしてみました。
あまり速度は変わった気がしませんが機能はいくらか増えているようなので良しとします。
以下に生成物を置いておきます。保証は出来ませんので各自バックアップを取るなどしてください。
実行ファイル+ライブラリ
必ずすること
・上記ファイルをルートディレクトリにて展開してください。
cd /;tar xzvpf /mnt/array1/share/samba3_all.taz
・/etc/smbは適当に設定してください。
特にcharsetの設定を追加するのを忘れないでください。
私は以下のようにしています。
[global]
dos charset = cp932
unix charset = cp932
display charset = cp932
netbios name = HD-HTGL8A9
server string = TeraStation
socket options = TCP_NODELAY SO_SNDBUF=32768 SO_RCVBUF=32768
os level = 1
wins server =
workgroup = WORKGROUP
security = user
encrypt passwords = Yes
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
unix password sync = yes
guest account = nobody
null passwords = yes
guest only = no
password level = 14
map to guest = Bad User
veto files = /.AppleDesktop/Network Trash Folder/TheVolumeSettingsFolder/.AppleDouble/.AppleDB/
delete veto files = yes
deadtime = 15
invalid users = mail, deamon
admin users = root
username map = /etc/samba/smbusers
log level = 1
max log size = 10
printcap name = /etc/printcap
load printers = yes
printing = lprng
[lp]
comment = Network Printer for Windows
path = /mnt/array1/spool/samba
print command = /usr/bin/lpr -Plp -r %s
printer admin = admin
browsable = yes
printable = yes
public = yes
[info]
comment = TeraStation utilities
path = /mnt/info
browsable = yes
printable = no
writable = no
guest ok = yes
[usbdisk1]
comment = USB Disk1
path = /mnt/usbdisk1
browsable = yes
printable = no
writable = yes
valid users = ryu,@local
force create mode = 777
force directory mode = 777
[share]
comment = TeraStation folder
path = /mnt/array1/share
browsable = yes
printable = no
writable = yes
valid users = ryu,@local
force create mode = 777
force directory mode = 777
###share###
#####END#####
・/etc/init.d/smbを修正して起動するフォルダを変更してください。
#!/bin/sh
#
# chkconfig: - 91 35
# description: Starts and stops the Samba smbd and nmbd daemons \
# used to provide SMB network services.
#
# pidfile: /var/run/smbd.pid
# pidfile: /var/run/nmbd.pid
# config: /etc/samba/smb.conf
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# Avoid using root's TMPDIR
unset TMPDIR
tag=terastation
facility=user.info
# Check that smb.conf exists.
[ -f /etc/samba/smb.conf ] || exit 0
# Check that info exists.
[ -f /etc/melco/info ] || exit 0
. /etc/melco/info > /dev/null 2>&1
start()
{
if [ -f /var/run/smbd.pid ] ; then
rm -f /var/run/smbd.pid
fi
if [ -f /var/run/nmbd.pid ] ; then
rm -f /var/run/nmbd.pid
fi
if [ -f /var/run/winbindd.pid ] ; then
rm -f /var/run/winbindd.pid
fi
if [ $domain = on ] ; then
echo "Start services: smbd nmbd winbindd"
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
/usr/local/samba/sbin/winbindd
logger -t ${tag} -p ${facility} -i 'Started smbd nmbd winbindd'
else
echo "Start services: smbd nmbd"
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
logger -t ${tag} -p ${facility} -i 'Started smbd nmbd'
fi
}
stop()
{
if [ $domain = on ] ; then
echo "Stop services: smbd nmbd winbindd"
else
echo "Stop services: smbd nmbd"
fi
/usr/bin/killall "smbd" > /dev/null 2>&1
/usr/bin/killall "nmbd" > /dev/null 2>&1
/usr/bin/killall "winbindd" > /dev/null 2>&1
if [ -f /var/run/smbd.pid ] ; then
rm -f /var/run/smbd.pid
fi
if [ -f /var/run/nmbd.pid ] ; then
rm -f /var/run/nmbd.pid
fi
if [ -f /var/run/winbindd.pid ] ; then
rm -f /var/run/winbindd.pid
fi
logger -t ${tag} -p ${facility} -i 'Stopped smbd nmbd winbindd'
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: /etc/init.d/smb {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
必要に応じてすること
・swatも同胞してありますので使いたい人は適切に設定してください。(未確認)
・webからの制御と同期を取りたい場合は/www/modules以下を適切に設定してください。(私は使ってないので。。)