と、クリーンインストールしたら、
電源ボタン長押しで電源が落ちなくなった。
ファームウェア 1.11 は何か変った?
/usr/local/sbin/kernelmon は /proc/driver/kernevnt を監視し、
その内容を /usr/local/bin/kernelmon_exec.sh に渡している。
kernelmon_exec.sh は、 
・/proc/driver/kernevnt の第一フィールドが micon_interrupts であれば、
・miconapl -a int_get_switch_status |grep "int=" |sed -e "s/int=//" を実行し、
・その結果が power_sw なら /usr/local/bin/shutdown.sh normal を実行
・/usr/local/bin/shutdown.sh は shutdown -h now を実行
一つ一つトレースしていく
まずは、kernelmon_exec.sh のコピー
ude:/usr/local/bin# cd ude:~# cd /usr/local/bin ude:/usr/local/bin# ls kernelmon_exec.sh ude:/usr/local/bin# mv kernelmon_exec.sh kernelmon_exec.sh.orig ude:/usr/local/bin# cp kernelmon_exec.sh.orig kernelmon_exec.sh ude:/usr/local/bin# ls -l kernelmon_exec.sh* -rwxr-xr-x 1 root staff 1889 Aug 15 08:17 kernelmon_exec.sh -rwxr-xr-x 1 root staff 1889 Aug 14 16:54 kernelmon_exec.sh.orig ude:/usr/local/bin#引数を /tmp/kernelmon.log に出力するよう kernelmon_exec.sh を修正する。
ude:/usr/local/bin# vi kernelmon_exec.sh
	:
	:
ude:/usr/local/bin# diff -c kernelmon_exec.sh.orig kernelmon_exec.sh
*** kernelmon_exec.sh.orig      Tue Aug 14 16:54:53 2007
--- kernelmon_exec.sh   Wed Aug 15 08:19:23 2007
***************
*** 3,8 ****
--- 3,10 ----
  # called from kernelmon
  #
+ echo $1 >> /tmp/kernelmon.log
+
  if [ "$1" = "" ]; then
    exit 1
  fi
ude:/usr/local/bin# ls -l /tmp
total 0
ude:/usr/local/bin#
/tmp にファイルはない。
電源ボタンを押してみる。
4秒程押してみたが、、、
ude:/usr/local/bin# ls -l /tmp total 0 ude:/usr/local/bin#ログは出力されない。
ude:/usr/local/bin# cd /usr/local/sbin/
ude:/usr/local/sbin# ls
fancontrol  kernelmon  miconapl  mkimage
ude:/usr/local/sbin# mv kernelmon kernelmon.orig
ude:/usr/local/sbin# cp kernelmon.orig kernelmon
ude:/usr/local/sbin# ls -l kernelmon*
-rwxr-xr-x 1 root staff 165 Aug 15 08:23 kernelmon
-rwxr-xr-x 1 root root  165 Dec  6  2006 kernelmon.orig
ude:/usr/local/sbin# vi kernelmon
	:
ude:/usr/local/sbin# diff -c kernelmon.orig kernelmon
*** kernelmon.orig      Wed Dec  6 19:47:08 2006
--- kernelmon   Wed Aug 15 08:24:40 2007
***************
*** 6,12 ****
     while :
     do
       LINE=`cat /proc/buffalo/kernevnt`
!      #echo "line [$LINE]"
       /usr/local/bin/kernelmon_exec.sh $LINE
     done
  done
--- 6,12 ----
     while :
     do
       LINE=`cat /proc/buffalo/kernevnt`
!      echo "line [$LINE]"
       /usr/local/bin/kernelmon_exec.sh $LINE
     done
  done
ude:/usr/local/sbin#
kernelmon を再起動する。
ude:/usr/local/sbin# /etc/init.d/kernelmon stop Stop kernelmon:/etc/init.d/kernelmon: line 20: killall: command not found done. ude:/usr/local/sbin#がー。
ude:/usr/local/sbin# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.4 0.4 1896 624 ? S 08:06 0:04 init [2] : : root 576 0.0 0.9 2656 1180 ? S 08:06 0:00 /bin/sh /usr/local/sbin/kernelmon : : root 719 0.0 0.2 1436 360 ? S 08:07 0:00 cat /proc/buffalo/kernevnt : : root 826 0.0 0.6 2220 868 pts/0 R+ 08:26 0:00 ps aux ude:/usr/local/sbin# kill 576 719 ude:/usr/local/sbin# sh kernelmon電源ボタンを押してみる。。。。。
 
 | 
楽天市場
 Amazon  | 
| 
← LS-GL ハックキット 2.0 最初の設定  | 
ハックの記録 LinkStation/玄箱 をハックしよう  | 
→ LS-GL ハックキット 2.0 電源が落ちない(2)  |