Linux活用レシピ > 家電 > TV録画サーバ
FedoraCore2での作り方

6. 拡張機能の設定

【説明】

ここでは、あると便利な拡張機能の設定方法をレシピとして載せています。

6-1. sambaで録画データをWindows共有する設定

    「/etc/samba/smb.conf」を編集しsambaの共有設定を行います。
    標準の設定ファイルはバックアップし、新たに作成します。
    [root@tvrecorder root]# mv /etc/samba/smb.conf /etc/samba/smb.conf.org
    
    [root@tvrecorder root]# vi /etc/samba/smb.conf
    [global]
      unix charset = EUC-JP
      dos charset = CP932
      display charset = EUC-JP
       workgroup = WORKGROUP       →ワークグループ名を設定
       server string = tvrecorder  →サーバ名を設定
       hosts allow = 192.168.1.    →接続許可するIPを設定
       printcap name = /etc/printcap
       load printers = yes
     log file = /var/log/samba/%m.log
       max log size = 50
       security = user
      encrypt passwords = yes
      smb passwd file = /etc/samba/smbpasswd
       socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
       dns proxy = no
       idmap uid = 16777216-33554431
       idmap gid = 16777216-33554431
       template shell = /bin/false
       winbind use default domain = no
    [homes]
       comment = Home Directories
       browseable = no
       writable = yes
    [printers]
       comment = All Printers
       path = /var/spool/samba
       browseable = no
       guest ok = no
       writable = no
       printable = yes
    [public]
       comment = Mpeg Site
       path = /home2/mpeg          →録画像保存場所を設定
       public = yes
       writable = yes
    
    ※赤文字の部分は実際には設定ファイルには書かないで下さい。


    sambaのユーザ登録を行います。まずLinuxにWindowsで使用しているユーザID&パスワードを登録します。以下は「tvuser」を追加した例です。
    [root@tvrecorder root]# useradd tvuser
    
    [root@tvrecorder root]# passwd tvuser
    Changing password for user tvuser.
    New UNIX password:
    Retype new UNIX password:
    

    次に/etc/passwdファイルをもとに smbpasswdを作成
    [root@tvrecorder root]# cat \
    > /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
    

    rootだけが読み取り/書き込みを行えるようにSambaパスワードファイルのアクセス権を変更します。
    [root@tvrecorder root]# chmod 600 /etc/samba/smbpasswd
    

    次にユーザIDを登録(Linuxユーザである必要があります。)
    [root@tvrecorder root]# smbpasswd -a tvuser
    New SMB password:
    Retype new SMB password:
    

    画像保存先ディレクトリのパーミッション変更
    [root@tvrecorder root]# chmod 755 /home2/mpeg ←読み込みだけさせる場合
    
    [root@tvrecorder root]# chmod 777 /home2/mpeg ←読み書きさせる場合
    ※後者は画像保存先ディレクトリのセキュリティが甘くなりますので注意してください。

    sambaの起動と自動起動設定
    [root@tvrecorder root]# service smb start
    [root@tvrecorder root]# /sbin/chkconfig smb on
    

    以上でsambaサーバの設定は完了です。上記設定の場合、「192.168.1.xx」のアドレスで「WORKGROUP」ワークグループに参加したWindowsパソコンに「tvuser」でログインし、以下のコマンドを「ファイル名を指定して実行」で実行すると録画ディレクトリが表示されます。
    \\192.168.1.100\public
    


6-2. PCの電源ボタンを押すことで自動シャットダウンする設定

    ACPI機能でPCの電源ボタンを押すことで自動シャットダウンする設定を説明します。
    また、起動を早くするため、GRUBのタイムアウトもついでに短くします。
    この機能はPCのマザーボードがACPI機能に対応している必要があります。マニュアル等でご確認ください。

    起動時のパラメータを変更します。
    [root@tvrecorder root]# vi /etc/grub.conf
    @ 11行目
    timeout=5
            ~~↓以下に変更
    timeout=1
    
    ・・・
    A 16行目 以下を追加
    kernel /vmlinuz-2.6.14-1.1656_FC4 ro root=LABEL=/ rhgb quiet
                                                      ↓↓↓
    kernel /vmlinuz-2.6.14-1.1656_FC4 ro root=LABEL=/ acpi=on rhgb quiet
                                                      ~~~~~~~
    
    通常FedoraCore4インストール時に上記設定はされていますが、設定されていない場合は実施してください。

    電源ボタンが押されたときのアクションを新規に作成します。
    [root@tvrecorder root]# vi /etc/acpi/events/power
    # This is a sample ACPID configuration
    
    event=button/power.*
    action=/sbin/shutdown -h now
    

    早速効くように設定します
    [root@tvrecorder root]# /etc/rc.d/init.d/acpid stop
    [root@tvrecorder root]# /etc/rc.d/init.d/acpid start
    


6-3. キーボードを抜いても起動が早くなるように

    キーボードはメンテナンス以外は不要ですので抜いておきたいのですが、キーボードを抜くと kudzu サービスが抜けていることを検知し起動が遅くなってしまいます。
    それを避けるため、kudzuを停止します。
    [root@tvrecorder root]# chkconfig kudzu off
    

    但し周辺機器を増やしたときはサービスを起動しておいたほうが便利なので その場合は起動する設定に戻しておきます。
    [root@tvrecorder root]# chkconfig kudzu on
    


6-4. 起動時の自動録画テスト機能

    録画サーバはまれに起動時にTVキャプチャカードのドライバの初期化が失敗することがありますので、起動時に一瞬録画のテストを行い、万一初期化が失敗していた場合に再起動を行うスクリプトを埋め込んでおきます。

    また、この設定を行うことで起動時に録画に必要なモジュールがすべてメモリにロードされますので、予約時間にジャストタイムで録画が開始されます。

    「/etc/rc.d/rc.local」の最終行に以下をすべて追加してください。
    [root@tvrecorder root]# vi /etc/rc.d/rc.local
    
    #Preload video Card
    FILENAME=test.mpg
    cd /root
    rm -f $FILENAME
    /usr/bin/record-v4l2.pl -c 8 -t 1 -i 6 -f ntsc-bcast-jp \
    --output-settings 0 --directory-format "" -o $FILENAME
    if [ ! -s $FILENAME ];
    then
      shutdown -r now
    fi
    


6-5. 未使用時の自動シャットダウン機能

    録画サーバを以下の条件がそろった場合に自動的にシャットダウンさせることで、 電気代の節約が期待できます。

    • 起動して一時間以上経過している
    • 録画予約がない
    • 録画データのエンコード予約がない
    • 誰もログインしていない
    • apacheで録画予約操作をしていない
    • samba,widzを使って録画データを見ていない

    まず、上記条件を満たした場合のシャットダウンスクリプトを作成します。
    「/root/checkacc.sh」として作成。
    [root@tvrecorder root]# vi /root/checkacc.sh
    
    #!/bin/bash
    cnt=`uptime | sed -e 's/^.*up //' -e 's/, .*$//' | grep ":" | wc -l`
    if [ $cnt -eq 1 ]
      then
      cnt=`ls /usr/local/mbrtv/booking/ | grep tv | wc -l`
      if [ $cnt -eq 0 ]
        then
        cnt=`ls /usr/local/mbrtv/booking/ | grep en | wc -l`
        if [ $cnt -eq 0 ]
          then
          cnt=`/usr/bin/who | wc -l`
          if [ $cnt -eq 0 ]
            then
            cnt=`/bin/netstat -a | grep ESTABLISHED | wc -l`
            if [ $cnt -eq 0 ]
            then
              echo "shutdown!"
              /sbin/shutdown -h now
            fi
          fi
        fi
      fi
    fi
    

    作成したスクリプトを実行できるようにします。
    [root@tvrecorder root]# chmod 700 /root/checkacc.sh
    

    作成したスクリプトを10分毎に実行するようcronに登録します。
    [root@tvrecorder root]# crontab -e
    
    */10 * * * * /root/checkacc.sh
    


以上でTV録画サーバの拡張機能の設定は完了です。ネットワーク上からのTV録画予約やWindows機からの録画データの鑑賞、メディアプレーヤを使ったテレビでの録画データ鑑賞が自由にできます。