2013年1月26日土曜日

DVAP on Raspberry Pi (2013/01版)をチューニングしてみよう

Back


ここでご紹介している D-STAR ネットワークへの接続ツール(各種ノード・DVAPなど)の運用においては 免許申請について(安田OMサイト)をご参照ください。 (2013年8月 ガイドラインが示されました。)
  1. Windows側に、VNC接続するためのVNC Viewerをインストール

  2.  サーバとビューワがセットになった「VNC」も選択できますがサーバ用無償ライセンスの取得など面倒なのでビューワのみダウンロードします。
    名前とE-Mailを記入すれば、後は「I have read and accept these terms and conditions」にチェックしてダウンロード出来ます。
     初期バージョン(display:1)と違ってdisplay:0に接続しますので、HDMI端子に接続したモニターと同じ画面が見えます。
     図のようにIPアドレスのみでも、[192.168.10.11:0]あるいは明示的にポートを指定した[192.168.10.11 :5900]でも構いません。
    Connect]を押すとパスワードを聞いてきますのでraspberryを入力します。
     ここで「ウォーキングDVAP」 が可能なパソコンレス環境を参考に「dvapnode」「ircddbgateway」および「WiFi」を着けた場合はその設定を済ませてください。
     (チューニングをしないで使用するにはここまでで完成です。)
    =MEMO=
     VNCやsshを使用するときIPアドレスがDHCPであるため、ルータなどでも確認できない場合は、直接モニターを着けて起動し「LXTerminal」を立ち上げて次のコマンドで確認してください。(スマートフォン向けアプリ「Fing」などもとても便利です。)
    $ ifconfig


  3. Windowsからsshでアクセス(専用ディスプレイ不要)

  4. PuTTYのオリジナルサイトPuTTYの日本語化サイトから「PuTTY」をダウンロードしてインストールします。
     日本語の場合は「puttyjp.exe」を起動します。

     使い方は簡単です。Raspberryの[IPアドレス]を指定し、ポートが[22]であることと[ssh]が選択されていることを確認したら[開く]をクリックします。初めての時のみ暗号化キーの承認を求められますので「OK」します。
    login as:pi
    pi@192.168.10.11's password:raspberry


  5. ユーザーpi のパスワードの変更
  6. $ passwd
    Changing password for pi.
    (current) UNIX password:paspberry
    Enter new UNIX password:new password
    Retype new UNIX password:new password
    passwd: password updated successfully


  7. VNC使用時のパスワードを設定
  8. $ sudo x11vnc -storepasswd /home/pi/.x11vnc/passwd
    Enter VNC password:new password
    Verify password:new password
    Write password to /home/pi/.x11vnc/passwd? [y]/n y
    Password written to: /home/pi/.x11vnc/passwd


  9. 不要なデーモンをOFFする
  10.  ここで、デーモンとして登録されているもののリストを表示したりupdate-rc.d 同様ON/OFFするためのコマンドをインストールします。(RasのようなDebian系には rcconfsysv-rc-confもあります。)
    $ sudo apt-get install chkconfig

    $ sudo chkconfig cron off
    $ sudo chkconfig dbus off       # *1
    $ sudo chkconfig triggerhappy off
    $ sudo chkconfig pulseaudio off
    $ sudo chkconfig plymouth off
    $ sudo chkconfig motd off
    $ sudo chkconfig lightdm off     # *1
    $ sudo chkconfig rmnologin off

     ファイルごと(*1は後で必須)削除してしまいたい場合はsudo apt-get remove [service name]を使用してください。(2012/11版参照)  autoremoveは残骸ファイルをまとめて削除してくれます。

  11. デーモン(daemon)dvapnoded と ircddbgatewayd をサービス登録し自動立ち上げ
  12.  新規ファイルを作成します。(ファイル名:dvap)
    $ sudo nano /etc/init.d/dvap

     この内容をコピー&ペーストしてください。
     GNU nano 2.2.6          File: /etc/init.d/dvap
    #!/bin/bash
    ### BEGIN INIT INFO
    #Provides: dvap
    #Required-Start: $syslog
    #Required-Stop: $syslog
    #Default-Start: 2 3 4 5
    #Default-Stop: 0 1 6
    #Short-Description: DVAP
    #Description:
    #
    ### END INIT INFO
    #!/bin/sh
    # /etc/init.d/dvap
    #
    
    case "$1" in
     start)
      /usr/local/bin/dvapnoded -daemon
      /usr/local/bin/ircddbgatewayd -daemon
      echo "Starting DVAP... "
      ;;
     stop)
      pkill ircddbgatewayd
      pkill dvapnoded
      echo "DVAP has been stopped "
      ;;
     restart)
      pkill ircddbgatewayd
      pkill dvapnoded
      /usr/local/bin/dvapnoded -daemon
      /usr/local/bin/ircddbgatewayd -daemon
      echo "Restarting DVAP... "
      ;;
     *)
      echo "Usage: sudo service dvap {start|stop|restart}"
      exit 1
      ;;
    esac
    
    exit 0

    Ctrl]+[o]で書き出し、ファイル名の確認で[Enter]して、[Ctrl]+[x]で終了します。
    $ sudo chmod a+x /etc/init.d/dvap
    このコマンドでファイル「dvap」の属性を「Excutable」立ち上げ可に変更します。
     そして、立ち上げ時自動起動するように設定します。
    $ sudo chkconfig dvap on

    $ chkconfig --list
    alsa-utils                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    bootlogs                  0:off  1:on   2:on   3:on   4:on   5:on   6:off
    bootmisc.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    checkfs.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    checkroot-bootclean.sh    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    checkroot.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    console-setup             0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    cron                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
    dbus                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
    dphys-swapfile            0:off  1:off  2:on   3:on   4:on   5:on   6:off
    dvap                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
    fake-hwclock              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    hostname.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    hwclock.sh                0:off  1:off  2:off  3:off  4:off  5:off  6:off
    ifplugd                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
    kbd                       0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    keyboard-setup            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    killprocs                 0:off  1:on   2:off  3:off  4:off  5:off  6:off
    kmod                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    lightdm                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
    motd                      0:off  1:off  2:off  3:off  4:off  5:off  6:off
    mountall-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mountall.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mountdevsubfs.sh          0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mountkernfs.sh            0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mountnfs-bootclean.sh     0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mountnfs.sh               0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    mtab.sh                   0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    networking                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    nfs-common                0:off  1:off  2:off  3:off  4:off  5:off  6:off
    ntp                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
    plymouth                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
    plymouth-log              0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    procps                    0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    pulseaudio                0:off  1:off  2:off  3:off  4:off  5:off  6:off
    rc.local                  0:off  1:off  2:on   3:on   4:on   5:on   6:off
    rcS                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
    rmnologin                 0:off  1:off  2:off  3:off  4:off  5:off  6:off
    rpcbind                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
    rsyslog                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
    sendsigs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
    ssh                       0:off  1:off  2:on   3:on   4:on   5:on   6:off
    sudo                      0:off  1:off  2:on   3:on   4:on   5:on   6:off
    triggerhappy              0:off  1:off  2:off  3:off  4:off  5:off  6:off
    udev                      0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    udev-mtab                 0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    umountfs                  0:off  1:off  2:off  3:off  4:off  5:off  6:off
    umountnfs.sh              0:off  1:off  2:off  3:off  4:off  5:off  6:off
    umountroot                0:off  1:off  2:off  3:off  4:off  5:off  6:off
    unattended-upgrades       0:off  1:off  2:off  3:off  4:off  5:off  6:off
    urandom                   0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    x11-common                0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on
    x11vncserver              0:off  1:off  2:off  3:off  4:off  5:off  6:off
    

     これで、起動時自動的に立ち上げられるデーモン(サービス)として登録できましたので[sudo reboot]します。再度sshで接続、ユーザーpiとパスワードでログインし、次のコマンドで起動しているか確認します。(その前にうまくいっていれば接続アナウンスが聞こえるかも知れません)
    $ ps -e
      PID TTY          TIME CMD
        1 ?        00:00:01 init
        2 ?        00:00:00 kthreadd
        3 ?        00:00:00 ksoftirqd/0
         中略
     1858 ?        00:00:16 dvapnoded
     1876 ?        00:00:16 ircddbgatewayd
     1879 ?        00:00:00 startpar
     1903 ?        00:00:00 sshd
         中略
     2070 pts/1    00:00:01 bash
     2080 pts/1    00:00:00 ps
    

     次のコマンドも試してみましょう。
    $ sudo service dvap stop
    DVAP has been stopped
    $ sudo service dvap start
    Starting DVAP...
    $ sudo service dvap restart
    Restarting DVAP...


  13. リストアップされないゲートウェイを加える (これ以降は必須では有りません)
  14. $ sudo nano /usr/local/etc/ DPlus_Hosts.txt
     GNU nano 2.2.6          File: /usr/local/etc/DPlus_Hosts.txt
    
    # DPlus_Hosts.txt
    #
    # The format of this file is the name of the reflector/gateway followed by its
    # IP address.
    #
    
    JR3WZ   jr3wz.dyndns.org
    REF001  109.69.104.195
    REF002  129.93.2.132
    REF003  203.194.18.195
       省略
    


  15. DVAP Node と ircDDB Gateway の設定をバックアップしよう
  16.  Windows で VNC を使用してセットアップしているという前提で簡単なコピー&ペーストでバックアップやリストアをしてみます。(DVAP Node の設定ファイルを例にします。)
    $ sudo nano /etc/dvapnode
     GNU nano 2.2.6          File: /etc/dvapnode
    callsign=JE3HCZ B
    gateway=JE3HCZ G
    mode=1
    ack=1
    restriction=0
    rpt1Validation=0
    gatewayAddress=127.0.0.1
    gatewayPort=20010
    localAddress=127.0.0.1
    localPort=20011
    dvapPort=/dev/ttyUSB0
    dvapFrequency=144550000
    dvapPower=10
    dvapSquelch=-100
    dvapOffset=0
    timeout=180
    ackTime=500
    beaconTime=600
    beaconText=DVAP Node JE3HCZ
    beaconVoice=1
    language=0
    logging=0
    windowX=62
    windowY=0
    

     Windows用のエディターとは少し使い勝手が違います。もし間違ったときは[Ctrl]+[x]のあと[n]を押せば保存せず終了できますのでやり直してください。
     ・まず内容全体をマウスドラッグで選択してください。
     ・[Ctrl]+[c]でコピーします。(マウスは使ってはいけません。)
     ・Windows側のエディターに[Ctrl]+[v]または右ボタンクリック「貼り付け」を選んで貼り付けます。
     ・リストア(今回、設定をバックアップから一挙に戻すような場合)の時はWindows側では慣れた方法で
      コピーします。
     ・注意: Linux のエディター側でペーストするときは、まずマウスではなくキーボードで貼り付けたい位置
      (この場合先頭)にカーソルを移動します。
     ・そしてマウスの右ボタンをクリックするとクリックだけで貼り付きます。
    /etc/ircddbgatewayも同様、また/etc/network/intarfaces(ネットワーク設定)に関するファイルなどもバックアップしておくととても便利です。

  17. 時計に関する改良をして遊んでみましょう。
  18.  「ntp」の登録をOff しましょう。 
    $ sudo chkconfig ntp off
    $ chkconfig --list ntp
    ntp                       0:off  1:off  2:off  3:off  4:off  5:off  6:off

     ntpをアンインストールし、代わりにchronyをインストールします。
    $ sudo apt-get remove ntp
    $ sudo apt-get install chrony
    $ sudo nano /etc/chrony/chrony.conf

     標準のntpサーバはコメントアウトし、新たに日本のサーバを加える。
     GNU nano 2.2.6          File: /etc/chrony/chrony.conf
       省略
    #server 0.debian.pool.ntp.org offline minpoll 8
    #server 1.debian.pool.ntp.org offline minpoll 8
    #server 2.debian.pool.ntp.org offline minpoll 8
    #server 3.debian.pool.ntp.org offline minpoll 8
    server ntp.jst.mfeed.ad.jp
    server ntp.nict.jp
    server ntp.ring.gr.jp
       省略
    

     さらに、Raspberry Pi にはRTC(リアル・タイム・クロック)が有りませんので起動時にntpdateを使用して時計を設定します。
    $ sudo apt-get install ntpdate

     これを起動時実行スクリプトに追加します。
    $ sudo nano /etc/rc.local

     次の一行を加えます。
     GNU nano 2.2.6          File: /etc/rc.local
    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    ntpdate jp.pool.ntp.org
    
    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi
    
    exit 0


  19. 時計を日本時間に変更します。
  20. $ sudo dpkg-reconfigure tzdata

     矢印キーとTabキーを使って移動し、[Enter]します。
    Package configuration
    
    
    ┌─────────────────────────────────────┐
    │Please select the geographic area in which you live. Subsequent           │
    │configuretion questions will narrow this down by presenting a list of     │
    │citeis, representing the time zones in which they are located.            │
    │                                                                          │
    │Geogpaphic area:                                                          │
    │                                                                          │
    │                            Africa                                        │
    │                            America                                       │
    │                            Antarctica                                    │
    │                            Australia                                     │
    │                            Arctic                                        │
    │                            Asia                                          │
    │                            Atlantic                                      │
    │                            Europe                                        │
    │                            Indian                                        │
    │                            Pacific                                       │
    │                            SystemV                                       │
    │                            US                                            │
    │                            Etc                                           │
    │                                                                          │
    │             <Ok>                                    <Cancel>             │
    └─────────────────────────────────────┘


  21. VNCモードとターミナルモードを切り替えられるようにする
  22.  整理すると、chkconfigリストにおいて
    VNCモードでは    ②dvapoffdbuslightdmonです。
    ターミナルモードでは ①dvapondbuslightdmoff
     ①の場合、dbusとlightdmがOffであるため自動立ち上げのアプリircddbgatewayとdvapnodeは起動せず、ircddbgatewayd(daemon)とdvapnoded(daemon)が起動します。②の場合は逆となります。
     そこで私の場合、次のようなファイルを作成しました。
    $ sudo nano vncmode
     GNU nano 2.2.6          File:vncmode
    echo "Setting up VNC Mode..."
    sudo chkconfig dbus on
    sudo chkconfig lightdm on
    sudo chkconfig dvap off
    echo "Reboot for GUI Applications..."
    sudo reboot
    
    $ sudo nano termmode
     GNU nano 2.2.6          File:termmode
    echo "Setting up Terminal Mode..."
    sudo chkconfig lightdm off
    sudo chkconfig dbus off
    sudo chkconfig dvap on
    echo "Reboot for Terminal Mode"
    sudo reboot
    

     二つのファイルを実行可能に変更します。
    $ sudo chmod a+x vncmode
    $ sudo chmod a+x termmode

     ファイル名の前に「ドット」「スラッシュ」を着けると実行できます。
    $ ./vncmode
    $ ./termmode


  23. 最後に管理用コマンド2つ
  24. $ pstree
    init─┬─chronyd
          ├─dhclient
          ├─dvapnoded───{dvapnoded}
          ├─7*[getty]
          ├─3*[ifplugd]
          ├─ircddbgatewayd───8*[{ircddbgatewayd}]
          ├─rsyslogd───3*[{rsyslogd}]
          ├─sshd───sshd───sshd───bash───pstree
          ├─udevd───2*[udevd]
          └─wpa_supplicant
    
    
     今までチューニングした努力の結果が表示されます。下図はグラフィックモードです。
    init─┬─chronyd
          ├─console-kit-dae───64*[{console-kit-dae}]
          ├─2*[dbus-daemon]
          ├─dbus-launch
          ├─7*[getty]
          ├─gvfs-afc-volume───{gvfs-afc-volume}
          ├─gvfs-gdu-volume
          ├─gvfs-gphoto2-vo
          ├─gvfsd
          ├─3*[ifplugd]
          ├─lightdm─┬─Xorg
          │           ├─lightdm─┬─lxsession─┬─lxpanel
          │           │           │             ├─openbox
          │           │           │             ├─pcmanfm
          │           │           │             ├─ssh-agent
          │           │           │             └─{lxsession}
          │           │           └─{lightdm}
          │           └─2*[{lightdm}]
          ├─lxpolkit───{lxpolkit}
          ├─menu-cached
          ├─polkitd───{polkitd}
          ├─pulseaudio───{pulseaudio}
          ├─rsyslogd───3*[{rsyslogd}]
          ├─rtkit-daemon───2*[{rtkit-daemon}]
          ├─sshd───sshd───sshd───bash───pstree
          ├─sudo───ircddbgateway───9*[{ircddbgateway}]
          ├─sudo───dvapnode───2*[{dvapnode}]
          ├─udevd───2*[udevd]
          ├─udisks-daemon─┬─udisks-daemon
          │                 └─{udisks-daemon}
          ├─wpa_cli
          ├─wpa_supplicant
          └─x11vncserver───sudo───x11vnc
    
    
    $ sudo apt-get install htop
    $ htop
     同様にチューニングを施したターミナルモードでは htop 自体のCPU負荷が5%有るにもかかわらず、平均的なところで14%前後となっています。
     VNCを稼働させてグラフィカルに管理画面を見ているときのCPU負荷は30%を越えています。私はほとんどの場合ターミナルモードのまま使用しており音声頼りと言ったところです。


     パソコンにLinuxをインストールしてではちょっと・・・と思っておられた方もSDカードを2枚焼いておいて挑戦してみてください。
Back


icon icon



73
J E 3 H C Z @REF047 C

0 件のコメント:

コメントを投稿