landisk-toolsの概要 Edit

(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を行うコマンド

    • kernelsw.pl … SH-Linux Kernel Switcher
      カーネルのブート(動的変更)を行うコマンド
      (linux-2.6.12-sh-landisk.0.8以前のカーネルでは kernelsw26-old.pl を使用すること。)
      (重要:linux-2.6.13では本機能は削除されました。kexecをご使用ください。)

    • landiskpoff
      電源ボタンの押下をトリガに、シャットダウン行うコマンド。
      (btnctrlコマンドへ機能統合。廃止の予定)
  • 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のルート下へ展開します。
      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パッケージをインストール。
      landisk:~# apt-get install psmisc
      
      その後、landisk-toolsのセットアップを行います。
      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:~#
      

    以上でインストールと設定はおしまいです。

仕様メモ Edit

LED/Buzzer 制御 Edit

  • /dev/ledctrl デバイス(99,21)
    本デバイスを介して、カーネル内のLED/Buzzer制御ルーチンへアクセス。

  • 制御コマンド … ledctrl
    LED/Buzzerの制御を行う。
    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の仕様

    bit31 - 2423 - 1615 - 87 - 0
    機能hw(hardware)fastblinkblinkon
    LANDISK000000**000000**000000**000000**
    USL-5P000000!!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 Edit

  • /dev/giodrv デバイス(99,40)
    本デバイスを介して、カーネル内のGIO制御ルーチンへアクセス。

  • 制御コマンド … gio2
    LANDISKに付属するgioコマンドとほぼ同じ仕様。
    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) Edit

本コマンドを使用するには、linux-2.6.12-sh-landisk.0.6以上のカーネルが必要です。

  • /dev/btnctrl デバイス(99,22)
    本デバイスを介して、カーネル内のボタン割り込み制御を行う。
  • コマンド … btnctrl
    ボタン押下時に実行させたいコマンドを列挙したファイル、btn_action.confを引数に指定する。
    landisk:~# btnctrl /usr/local/lib/landisk-tools/btn_action.conf &
    
    が、通常は、デーモンとして起動させることになるでしょう。
    landisk:~# /etc/init.d/btnctrl start
    
  • btn_action.confファイルの仕様
    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サポート … ブートセレクタ対応 Edit

  • /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カーネル対応版 Edit

  • はじめに
    まず、さらっと次のページに読んで、本ツールの概要を理解してください。
  • /dev/kernelsw デバイス(99,30)
    本デバイスを介して、SH-Linux Kernel Switcherの制御を行います。

  • 設定
    特に設定すべきことはありません。
    (2.6カーネル版では、haltやrebootコマンドのラッピング(置き換え)は必要ありません。)

  • 使用例
    • confファイルの用意
      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を実行すると、カーネルのイメージがメモリ内へロードされます。
      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オプション付で)を実行するとカーネルのスイッチ動作が開始されます。
      landisk:~# shutdown -h now
      
    • 補足
      shutdown -hコマンド実行後、最終的にはOS内のあるルーチンへ制御が移ります。
      その部分をフックしてカーネルのスイッチ制御を行っています。

電源ボタンでshutdown … 旧仕様 Edit

  • 電源ボタンの状態取得方法
    LANDISKのカーネルには、元々電源ボタンの割り込み制御ルーチンが組み込まれており、割り込みの有無を、
    次の2つの方法で取得可能。
    • 方法1
      デバイス(99,1)を読むことで割り込みの状態を取得可能。
      電源ボタンがONの場合はEOF(End of File)が、OFFになると、'1'が出力されます。

    • 方法2
      cat /proc/interrupts で 電源ボタンの割り込み発生回数が取得できます。
       11:          0      Julian IRQ  SHUTDOWNSWITCH
      

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-13 (火) 20:02:27 (6526d)