telnet でアクセスはできるようになったので、
次は電源SW周りを見る。
手動で shutdown -h now を実行してみる。
root@LS-QVLF42:~# shutdown -h nowPOWER LED が点滅、普通に落ちた。
Linux 2.6.31.8 (x60l.yamasita.jp) (pts/0) qvl login: guest Password: Last login: Sun Jun 17 22:25:30 JST 2012 from qube.yamasita.jp on pts/0 Linux qvl 2.6.31.8 #2 Tue Mar 13 13:10:42 JST 2012 armv5tel The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. No directory, logging in with HOME=/ guest@qvl:/$ su - root Password: root@qvl:~#
root@qvl:~# shutdown -h nowリブートしてきた。
この違いは何??
/usr/local/sbin/kernelmon は、
/proc/buffalo/kernevnt に何かが出力されたら、
/usr/local/bin/kernelmon_exec.sh にそれを渡す
/usr/local/sbin/kernelmon を kill して、
電源SWを長押しした時に
/proc/buffalo/kernevnt に何が出力されるかを見てみる。
root@LS-QVLF42:/etc/init.d# ps | grep /usr/local/sbin/kernelmon 1749 root 2204 S /bin/sh /usr/local/sbin/kernelmon root@LS-QVLF42:/etc/init.d# kill 1749 root@LS-QVLF42:/etc/init.d# !ps ps | grep /usr/local/sbin/kernelmon 1749 root 2204 S /bin/sh /usr/local/sbin/kernelmon root@LS-QVLF42:/etc/init.d# kill -9 1749 root@LS-QVLF42:/etc/init.d# ps | grep /usr/local/sbin/kernelmon root@LS-QVLF42:/etc/init.d# cat /proc/buffalo/kernevnt電源SWを長押しする
PSW_short_pushedroot@LS-QVLF42:/etc/init.d#PSW_short_pushed が出力される。
PSW_short_pushedroot@LS-QVLF42:/etc/init.d# cat /proc/buffalo/kernevnt PSW_pushedroot@LS-QVLF42:/etc/init.d#PSW_pushed が出力される。
/usr/local/sbin/kernelmon を kill したので、reboot
長押しの時点で、引数として PSW_pushed が渡される。
kernelmon_exec.sh は、引数として PSW_pushed が渡されると、
/proc/buffalo/power_sw が 1 であれば、
/usr/local/bin/shutdown.sh normal
が実行される。
/proc/buffalo/power_sw が 1 かどうかわからないが、 多分1で実行されるであろう。
ここまで、何な小細工はないように思う。
節穴なだけ?
: : ::shutdown:/etc/init.d/rcDownと書いてあるので、/etc/init.d/rcDown も見てみる。
通常のモードで UPS が繋がっていないときは、
/etc/init.d/shutdown_start.sh stop
/etc/init.d/shutdown_proc.sh stop
/etc/init.d/umount_disk.sh stop
を実行している。
それぞれを見ていく。
root@LS-QVLF42:~# miconapl -a bz_on button err: root@LS-QVLF42:~#?
root@LS-QVLF42:~# miconapl -a shutdown_wait root@LS-QVLF42:~#POWER LED が点滅を始めた
うーん、多すぎて見きれない。
でも、電源SWは関係無さそう、、、
節穴なだけ?
root@LS-QVLF42:~# file /usr/local/sbin/miconapl /usr/local/sbin/miconapl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), stripped root@LS-QVLF42:~#バイナリファイル。
root@LS-QVLF42:~# ldd /usr/local/sbin/miconapl libbuffalo_bin.so => /usr/local/lib/libbuffalo_bin.so (0x40026000) libc.so.6 => /lib/libc.so.6 (0x4004a000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x40179000) /lib/ld-linux.so.3 (0x40000000) root@LS-QVLF42:~# ls -l /usr/local/lib/libbuffalo_bin* lrwxrwxrwx 1 root root 19 Jul 2 2012 /usr/local/lib/libbuffalo_bin.so -> libbuffalo_bin.so.1* root@LS-QVLF42:~#/usr/local/lib/libbuffalo_bin.so, libbuffalo_bin.so.1 も 持って行かないといけなさそう。
root@LS-QVLF42:/# tar zcvf /tmp/miconapl.tar.gz usr/local/sbin/miconapl usr/local/lib/libbuffalo_bin* usr/local/sbin/miconapl usr/local/lib/libbuffalo_bin.so usr/local/lib/libbuffalo_bin.so.1 root@LS-QVLF42:/#ftp で別のマシンに転送
root@LS-QVLF42:/# cd /tmp root@LS-QVLF42:/tmp# ftp sil -bash: ftp: command not found root@LS-QVLF42:/tmp#しようかと思ったら ftp コマンドがない。
root@LS-QVLF42:/tmp# mv miconapl.tar.gz /mnt/disk1/share/ root@LS-QVLF42:/tmp#このあと、Windowsのエクスプローラで別マシンへ転送。
root@qvl:/# tar zxvf /tmp/miconapl.tar.gz usr/local/sbin/miconapl usr/local/lib/libbuffalo_bin.so usr/local/lib/libbuffalo_bin.so.1 root@qvl:/#
root@qvl:/# miconapl -a shutdown_wait miconapl: error while loading shared libraries: libbuffalo_bin.so: cannot open shared object file: No such file or directory root@qvl:/# ldconfig root@qvl:/# miconapl -a shutdown_wait root@qvl:/#POWER LED が点滅。
シャットダウンしてみる
root@qvl:/# shutdown -h now電源が落ちた。再起動してこない。OK!
再起動、miconapl -a shutdown_wait を実行。
今度は電源ボタンの長押し。
こちらも電源が落ちた。
root@qvl:~# cd root@qvl:~# cd /etc/init.d/ root@qvl:/etc/init.d# mv miconapl{,.orig} root@qvl:/etc/init.d# cp miconapl.orig miconapl root@qvl:/etc/init.d# vi miconapl : root@qvl:/etc/init.d# diff -u miconapl.orig miconapl --- miconapl.orig 2012-06-17 17:59:26.000000000 +0900 +++ miconapl 2012-07-01 15:46:11.000000000 +0900 @@ -25,7 +25,8 @@ echo on > $LED/eth ;; stop) - echo on > $LED/power_blink + # echo on > $LED/power_blink + /usr/local/sbin/miconapl -a shutdown_wait ;; *) echo "Usage: $0 {start|stop}" root@qvl:/etc/init.d#電源ボタンを長押しすると、、、落ちた。
done!
そのうちもう少し詳しく調べよう。
今はバイナリをそのまま使う方法で先に進む
◎:
動作確認
○:X を動かす
△:ハックキットに反映する
|
← ハックキットのインストール(2) |
ハックの記録 LinkStation/玄箱 をハックしよう |
→ 動作確認 |
Copyright (C) 2003-2013 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市