2014/06/29
BeagleBoard-xM の USER ボタンでシャットダウンさせる方法

私は、BeagleBoard-xM を MPD サーバとして使用しているのですが、キーボードもディスプレイも外してしまっています。
そのため、シャットダウンするためにはキーボードとディスプレイをつなぐか、SSH でログインしないといけません。
どっちにせよ、結構面倒くさいです。
というわけで、普段使われていない USER ボタンをシャットダウンボタンに変更してみました。
![]() |
USER ボタン |
/etc/init.d/user_button_shutdown.pl を作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/usr/bin/perl my $pid = fork ; die "$!" unless defined $pid ; my $comm = $ARGV [0]; if ( $pid ) { exit 0; } print $comm ; if ( $comm ne "start" ) { exit 0; } open (INPUT, '/dev/input/event0' ) or die "$!" ; my $inp = 0; while ( !( $inp ) ){ read (INPUT, $inp , 1); } close (INPUT); exec ( "poweroff" ); exit 0; |
起動時に実行されるようにする。
$ sudo chown root:root $ sudo chmod 744 $ sudo update-rc.d user_button_shutdown.pl defaults update-rc.d: warning: /etc/init.d/user_button_shutdown.pl missing LSB information update-rc.d: see <http: wiki.debian.org= "" lsbinitscripts= "" > Adding system startup for /etc/init.d/user_button_shutdown.pl ... /etc/rc0.d/K20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc1.d/K20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc6.d/K20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc2.d/S20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc3.d/S20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc4.d/S20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl /etc/rc5.d/S20user_button_shutdown.pl -> ../init.d/user_button_shutdown.pl </http:> |
問題点
すごく雑に作ったので、 missing LSB information が出ちゃうけど、現実的には問題ないから放置しております…あと、キーボード等がつながっていると、USR Switch が /dev/input/event1 や event2 に割り当てられてしまう問題が。
動的に確認する方法はないものだろうか?