*landisk-toolsの概要 [#hb9e0a00]
(2005/11/10版リリース)~
LANDISKとUSL-5P専用のコマンドを一纏めにしたパッケージです。~
~
-''サポート環境''~
--LANDISKとUSL-5P専用 (LAN Tankでも多分OK)
--linux-2.6.12-sh-landisk.0.6 以上
--debian26
~
~
-''パッケージ内容''~
--ledctrl~
LED/Buzzer制御用コマンド~
~
--gio2~
I/OのRead/Writeを行うコマンド~
~
--%%&color(red){kernelsw.pl}; … SH-Linux Kernel Switcher%%~
%%カーネルのブート(動的変更)を行うコマンド%%~
%%(linux-2.6.12-sh-landisk.0.8以前のカーネルでは kernelsw26-old.pl を使用すること。)%%~
%%(&color(red){重要:linux-2.6.13では本機能は削除されました。kexecをご使用ください。};)%%~
~
--%%landiskpoff%%~
%%電源ボタンの押下をトリガに、シャットダウン行うコマンド。%%~
%%(btnctrlコマンドへ機能統合。廃止の予定)%%


--&color(red){btnctrl … linux-2.6.12-sh-landisk.0.6 以上};~
電源ボタンの押下をトリガに、シャットダウン行うコマンド。~
USL-5Pの各種ボタン制御機能も有す。~


--liloサポート
---/sbin/lilo … スタティックリンク版(ライブラ非依存)~
---/boot/boot.b-selk … LANDISKとUSL-5P統合専用ブートセレクタ~
---/etc/lilo.conf
~
--上記コマンドのソース~
~
-''インストール&セットアップ''~
--パッケージ~
http://eggplant.ddo.jp/www/download/debian26/base/ から、~
landisk-tools-xxxxxxxx.tgzを取得します。~
~
--インストール~
debian26のルート下へ展開します。~
#pre{{
landisk:~# tar vxfzp landisk-tools-xxxxxxxx.tgz -C /
./boot/
./boot/boot.b-selk
./etc/
./etc/lilo.conf
./etc/init.d/
./etc/init.d/btnctrl
./sbin/
./sbin/lilo
./usr/
./usr/local/
./usr/local/lib/
./usr/local/lib/landisk-tools/
./usr/local/lib/landisk-tools/btn_action.conf
./usr/local/src/
./usr/local/src/landisk-tools/
./usr/local/src/landisk-tools/btnctrl.back
./usr/local/src/landisk-tools/gio2.c
./usr/local/src/landisk-tools/sh-lilo-selk.tgz
./usr/local/src/landisk-tools/btnctrl.c
./usr/local/src/landisk-tools/ledctrl.c
./usr/local/sbin/
./usr/local/sbin/gio2
./usr/local/sbin/gio2_unload
./usr/local/sbin/ledctrl
./usr/local/sbin/landisk-tools.setup
./usr/local/sbin/gio2_load
landisk:~#
}}
--設定~
killallコマンドが必要となるため、psmiscパッケージをインストール。~
#pre{{
landisk:~# apt-get install psmisc
}}
その後、landisk-toolsのセットアップを行います。~
#pre{{
landisk:~# /usr/local/sbin/landisk-tools.setup
update-rc.d: /etc/init.d/landiskpoff exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/landiskpoff ...
update-rc.d: /etc/init.d/btnctrl exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/btnctrl ...
 Adding system startup for /etc/init.d/btnctrl ...
   /etc/rc0.d/K00btnctrl -> ../init.d/btnctrl
   /etc/rc1.d/K00btnctrl -> ../init.d/btnctrl
   /etc/rc6.d/K00btnctrl -> ../init.d/btnctrl
   /etc/rc2.d/S99btnctrl -> ../init.d/btnctrl
   /etc/rc3.d/S99btnctrl -> ../init.d/btnctrl
   /etc/rc4.d/S99btnctrl -> ../init.d/btnctrl
   /etc/rc5.d/S99btnctrl -> ../init.d/btnctrl
Starting btnctrl/dev/btnctrl open error...
.
landisk:~#
}}
~
-
以上でインストールと設定はおしまいです。~
*仕様メモ [#b0b8ffcb]
**LED/Buzzer 制御 [#afe81705]
-/dev/ledctrl デバイス(99,21)~
本デバイスを介して、カーネル内のLED/Buzzer制御ルーチンへアクセス。~
~
-制御コマンド … ledctrl~
LED/Buzzerの制御を行う。~
#pre{{
landisk:~# ledctrl --help
LED/Buzzer controller for LANDISK and USL-5P

Usage:
 ledctrl [Options ... ]
 ledctrl -p ledparam
 ledctrl -b buzzerparam
 ledctrl --help

Options:
 pwron pwroff pwrblink pwrfastblink pwrhw
 erron erroff errblink errfastblink errhw
 accon accoff accblink accfastblink acchw
 allon alloff allblink allfastblink
 u1on  u1off  u1blink  u1fastblink
 u2on  u2off  u2blink  u2fastblink
 u3on  u3off  u3blink  u3fastblink
 u4on  u4off  u4blink  u4fastblink
 u5on  u5off  u5blink  u5fastblink
 shutdown

Example:
 ledctrl pwrblink errblink
 ledctrl -p 0x0000a05
 ledctrl -b 0x0005555

- 2005/07/14 - http://eggplant.ddo.jp/www/
}}
-ledparamの仕様~
~
|CENTER:80|CENTER:110|CENTER:110|CENTER:110|CENTER:110|c
|bit|31 - 24|23 - 16|15 - 8|7 - 0|h
|機能|hw(hardware)|fastblink|blink|on|h
|LANDISK|000000**|000000**|000000**|000000**|
|USL-5P |000000!!|0*******|0*******|0*******|

--32bit、16進数で指定する。~
--'*'の部分は'0'か'1'が書き込める。
--'!'の部分に書き込むと、accoffまたは、pwronと同じ動作をする。~
--LANDISKの場合、bit7-0は、順番に0、0、0、0、0、0、ACC、PWRに対応。~
--USL-5Pの場合、bit7-0は、順番に0、USB5、USB4、USB3、USB2、USB1、ACC、PWRに対応。~
--bit31-24、bit23-16、bit15-8もbit7-0と同様。ただしLEDの点灯パターンが異なる。~
-buzzerparam~
--32bit、16進数で指定する。~
--最下位ビットの値が1の場合ブザーが鳴る。~
--約0.5秒毎に、1ビット右シフトされ、変化した最下位ビットの値でブザーが鳴る。~
--右シフトされた際の最上位ビットは変化しない。(signed integer型の右シフト動作そのもの)~
(最上位ビットを立てた場合、ブザーが永遠に鳴り続けることになるが、これは意図した仕様。)~

-引数の優先順位~
同じLEDに対して矛盾した引数が指定された場合、例えば、pwronとpwroff等の場合、~
後ろで指定された引数が優先される(上書きされる)。~
~
-使用例~
/etc/init.d//btnctrl や /usr/local/lib/landisk-tools/btn_action.conf を参照してください。~
**GIO -- General I/O [#z0fdda0d]
-/dev/giodrv デバイス(99,40)~
本デバイスを介して、カーネル内のGIO制御ルーチンへアクセス。~
~
-制御コマンド … gio2~
LANDISKに付属するgioコマンドとほぼ同じ仕様。~
#pre{{
usl5p:~# gio2 -help
GIO Controller for LANDISK and USL-5P

Usage(read)   : gio2 [address] [size]
Usage(write)  : gio2 [address] [size] [data] [re-read]

[address]
  00000000-ffffffff
[size]
  1 or 2 or 4
[data]
 00-ff or 0000-ffff or 00000000-ffffffff
[re-read]
 r

Example(read) : gio2 a0000000 2
Example(write): gio2 a0000000 2 00ff
Example(write): gio2 a0000000 2 00ff r

- 2005/07/14 - http://eggplant.ddo.jp/www/
}}
-gio2_load、gio2_unload~
/dev/giodrvの生成、削除を行うコマンド。~


**Button 制御 (電源ボタンでshutdown) [#y2d60c0b]
&color(red){本コマンドを使用するには、linux-2.6.12-sh-landisk.0.6以上のカーネルが必要です。};~
-/dev/btnctrl デバイス(99,22)~
本デバイスを介して、カーネル内のボタン割り込み制御を行う。

-コマンド … btnctrl~
ボタン押下時に実行させたいコマンドを列挙したファイル、btn_action.confを引数に指定する。~
#pre{{
landisk:~# btnctrl /usr/local/lib/landisk-tools/btn_action.conf &
}}
が、通常は、デーモンとして起動させることになるでしょう。~
#pre{{
landisk:~# /etc/init.d/btnctrl start
}}

-btn_action.confファイルの仕様~
#pre{{
PWO:/sbin/shutdown -h now
PWB:/usr/local/sbin/ledctrl shutdown -b 00000001
SEL:/usr/local/sbin/ledctrl -b 00000005
DEL:/usr/local/sbin/ledctrl -b 00000015
CPY:/usr/local/sbin/ledctrl -b 00000055
}}
各ボタン押下イベントに対応するラベル、PWO:、PWD:、SEL:、DEL:、CPY:に続き、~
コマンドを指定する。~
--PWO: 電源ボタン押下時にexecするコマンドを指定。~
--PWB: 電源ボタン押下時に実行するコマンドを指定。~
PWOで指定したコマンドの前に実行される。~
--SEL: 選択ボタン押下時に実行するコマンドを指定。~
--DEL: 取外しボタン押下時に実するコマンドを指定。~
--CPY: コピーボタン押下時に実行するコマンドを指定。~
~
-
例では、電源ボタン押下時、LEDを点滅させ、ブザーを1回鳴らし、その後、shutdown -h now コマンドを実行する。~
選択、取外し、コピーボタン押下時、ブザーが、2回、3回、4回鳴ります。~
~
-補足~
言うまでもないですが、LANDISKでは、PWOとPWBのみ有効です。(ブザーも鳴りません。)~
**liloサポート … ブートセレクタ対応 [#c91bcac4]
-/boot/boot.b-selk~
mizore wikiさんのページで公開されているsh-lilo-selをベースに、~
ボタンでブートラベルの選択を行えるように改造したboot.b。~
boot.b-selkを使用するとシリアルコンソールが無い環境でもブートラベルの選択が可能になる。~
LANDISKとUSL-5P両対応。~
~
-LANDISKで使う場合~
--電源ボタンでブート選択~
次のような手順で2種類のブートラベルから起動可能~
---電源ボタンをONにして5秒経過すると、1番目のラベルから起動。~
---電源ボタンをON→OFF、そしてHDDの回転が安定したころ再度ONすると2番目のラベルから起動。~
パチ(ON)パチ(OFF)、10秒程度待ってパチ(ON)てな感じで。~
~
-USL-5P用で使う場合~
--USL-5P専用ブートセレクタの仕様~
---電源ボタン … ブートラベル1から起動~
---電源ボタン+コピー … ブートラベル2から起動~
---電源ボタン+取消し … ブートラベル3から起動~
---電源ボタン+選択  … ブートラベル4から起動~
--
ボタンを離すタイミングは、まず、ブザーが鳴ったら電源をボタンを離す。~
2〜3秒後、ブートラベル番号に対応したUSBポートのLEDが光るので、そのタイミングでもう片方のボタンを離せばOKです。~
光っているLEDを見れば、選択したブートラベルが分かるようなっています。~
~
-
**%% SH-Linux Kernel Swither 2.6カーネル対応版%% [#yfea557c]
-はじめに~
まず、さらっと次のページに読んで、本ツールの概要を理解してください。
--[[SH-Linux Kernel Switcher]] … 2.4カーネル用
~
~
-/dev/kernelsw デバイス(99,30)~
本デバイスを介して、SH-Linux Kernel Switcherの制御を行います。~
~
-設定~
特に設定すべきことはありません。~
(2.6カーネル版では、haltやrebootコマンドのラッピング(置き換え)は必要ありません。)~
~

-使用例~
--confファイルの用意~
#pre{{
linear
boot=/dev/hda
disk=/dev/hda
bios=0x80
timeout=50
default=linux
image=/boot/vmlinuz-2.6.12-sh
        label=linux
        root=/dev/hda3
        read-only
append="mem=64M console=ttySC1,9600 root=/dev/hda3 fastboot"
}}
--kernelの起動準備~
confファイルを引数にkernelsw.plを実行すると、カーネルのイメージがメモリ内へロードされます。~
#pre{{
landisk:~# kernelsw.pl /boot/kernelsw.conf
Loading .... done.
==============================================
        SH-Linux Kernel Switcher V3.2
----------------------------------------------
 image  = /boot/vmlinuz-2.6.12-sh (size:1302528,page:319)
 root   = /dev/hda3 (read-only)
 append = "mem=64M console=ttySC1,9600 root=/dev/hda3 fastboot"
 offset_address = 0x00210000
----------------------------------------------
 kernel boot parameter details
  0 : 0x1 # read-only root file system
  1 : 0x0 # RAMDISK Flags
  2 : 0x303 # Root device (/dev/hda3)
  3 : 0x1 # Loader type (LILO = 1)
  4 : 0x0 # Initrd start
  5 : 0x0 # Initrd size
  6 : 0x0 # Not defined yet
  7 : 0x0 # Not defined yet
==============================================
landisk:~# shutdown -h now
}}
--カーネルの起動~
シャットダウンコマンド(-hオプション付で)を実行するとカーネルのスイッチ動作が開始されます。~
#pre{{
landisk:~# shutdown -h now
}}
--補足~
shutdown -hコマンド実行後、最終的にはOS内のあるルーチンへ制御が移ります。~
その部分をフックしてカーネルのスイッチ制御を行っています。~

**%%電源ボタンでshutdown … 旧仕様%%[#i0a4e2c5]
-電源ボタンの状態取得方法~
LANDISKのカーネルには、元々電源ボタンの割り込み制御ルーチンが組み込まれており、割り込みの有無を、~
次の2つの方法で取得可能。~
--方法1~
デバイス(99,1)を読むことで割り込みの状態を取得可能。~
電源ボタンがONの場合はEOF(End of File)が、OFFになると、'1'が出力されます。~
~
--方法2~
cat /proc/interrupts で 電源ボタンの割り込み発生回数が取得できます。~
#pre{{
 11:          &color(red){0};      Julian IRQ  SHUTDOWNSWITCH
}}
~

-電源ボタン監視デーモン、landiskpoff~
前者の手段を用いて電源ボタンの割り込み検出を行う。~
「デーモンプロセスとして常駐し、デバイス(99,1)を5秒後毎に1byteリードし、~
その結果がEOFかそうでないかで、電源ボタンの割り込み判定を行い、~
割り込みが検出された場合、引数で指定されたコマンドを実行する。」コマンド。~
(起動時に自動的に実行されるようinit.dスクリプトも用意)~
#pre{{
landisk:~# /usr/local/sbin/landiskpoff /sbin/shutdown -h now &
}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS