LS-GL:debian:電源ボタンによる電源 OFF


shutdown -h による電源断はできるようになったが、 電源ボタンによる電源断ができない。

miconmon が電源断?

白 LinkStation シリーズでは ppc_uartd が AVR から電源断情報を得て shutdown を実行している。
LS-GL なら miconmon がというところだが、、、、
骨折り損として miconmon を debian から 消してしまった。
はやまったか???。でもまたハズレだったら無駄骨。

標準ファームで miconmon を止めて電源断できるか試してみた。

root@UDE:~# ps | grep miconmon
  533 root        500 S   /usr/local/sbin/miconmon -d
  663 root        512 S   grep miconmon
root@UDE:~# kill 533
root@UDE:~# ps | grep miconmon
  665 root        512 S   grep miconmon
root@UDE:~#
電源ボタンを長押しする

ピッっと音がしてシャットダウンシーケンスが始まった。

root@UDE:~#
Starting pid 675, console /dev/ttyS0: '/etc/init.d/rcDown'
--- rcDown ---
	:
Sending SIGTERM to all processes.
The system is halted.
Synchronizing SCSI cache for disk sda:
System halted.
>miconCntl_PowerOff
>miconCntl_ShutdownWait
ということは、miconmon は電源ボタンに無関係。

どのプロセスが電源断?

だれが、/etc/init.d/rcDown を呼んでいる??

inittab?

/etc/inittab に
root@UDE:~# cat /etc/inittab
	:
::shutdown:/etc/init.d/rcDown
::shutdown:/bin/umount -r /
root@UDE:~#
という記述がある。ここから起動されているのかも。
書き換えてみる。エラーになればここ
root@UDE:~# cat /etc/inittab
	:
::shutdown:/xetc/init.d/rcDown
::shutdown:/xbin/umount -r /
root@UDE:~#
電源ボタンを長押ししてみたが、普通に落ちた。
ここではない。

後日談:実は、inittab を再読込みさせていないだけだった。

/usr/local/sbin/kernelmon?

/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 を実行

  • これだ!

    余談
    miconapl -a int_get_switch_status |grep "int=" |sed -e "s/int=//"

    miconapl -a int_get_switch_status |sed -n -e "s/int=//p"
    でいいのでは?

    sed は奥が深い。

    本当にここが実行されるか、/usr/local/bin/shutdown.sh を書き換えて 確かめてみた。

    root@UDE:~# vi /usr/local/bin/shutdown.sh
    	:
    	:
    root@UDE:~# cat /usr/local/bin/shutdown.sh
    #!/bin/sh
    #
    
    if [ "$1" = "error" ] ; then
            echo "shutting down with error"
    fi
    #/sbin/shutdown -h now
    echo kokokok > /tmp/aa
    exit 0
    root@UDE:~# ls -l /tmp/aa
    ls: /tmp/aa: No such file or directory
    root@UDE:~#
    
    電源ボタンを長押し。 /tmp/aa が作成されていれば、ここを通っている
    root@UDE:~# ls -l /tmp/aa
    -rw-r--r--    1 root     root            8 Sep  9 21:34 /tmp/aa
    root@UDE:~#
    
    確かにここで shutdown が実行されている。

    さて、debian にどう取り込もうか。




    LS-GL:debian:シャットダウン
    ハックの記録
    LinkStation/玄箱 をハックしよう

    LS-GL:debian:電源ボタンによる電源 OFF(2)

    Copyright (C) 2006 Yasunari Yamashita. All Rights Reserved.
    yasunari @ yamasita.jp 山下康成@京都府向日市