epgrecで録画失敗する

たまに、EPGを取得するときにrecfsusb2nが動いたままになって録画に失敗しているときがある。

どうやらrecfsusb2nは、放送されてない等、信号のないときに動くと終了しなくなるらしい。
あくまで引数で渡すのは”録画時間”なわけで、信号ないと録画されなくて録画時間もゼロで終了しなくなる。ってことかな。

ってことで、do-record.shを弄ってみた。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh
echo "CHANNEL : $CHANNEL"
echo "DURATION: $DURATION"
echo "OUTPUT  : $OUTPUT"
echo "TUNER : $TUNER"
echo "TYPE : $TYPE"
echo "MODE : $MODE"
 
RECORDER=/usr/local/bin/recfsusb2n
 
if [ ${OUTPUT} = "/tmp/__temp.ts" ]; then
        $RECORDER --b25 $CHANNEL $DURATION ${OUTPUT} >/dev/null &
        cmd_pid=$!
        sleep 65
        result=`ps -ef | grep $cmd_pid | grep -v grep`
        if [ "${result}" ]
        then
                kill $cmd_pid
                logger -t getepg recfsusb2n_err
        fi
else
        $RECORDER --b25 $CHANNEL $DURATION ${OUTPUT} >/dev/null
fi

出力ファイル*1でgetepg.phpから呼び出されたか判別して、EPG取得だったらrecfsusb2nをバックグラウンドで動かして65秒後も動いていたら、プロセスを殺してシステムログに書き込むようにした。
普通の録画はそのまま。

たぶん、これで大丈夫なはず。

脚注

  1. EPG取得の時、epgrecのシステム設定の「EPG取得用テンポラリファイルの設定」にある録画データのパスになる [戻る]

Fedora16へ

遅くなったけど

1
2
3
4
5
# rpm -Uvh \
> http://download.fedora.redhat.com/pub/fedora/linux/releases/16/Fedora/x86_64/os/Packages/fedora-release-16-1.noarch.rpm \
> http://download.fedora.redhat.com/pub/fedora/linux/releases/16/Fedora/x86_64/os/Packages/fedora-release-notes-16.1.0-1.fc16.noarch.rpm
# yum clean all
# yum upgrade

http://download.fedora.redhat.com/pub/fedora/linux/releases/

Javaのインストール

Java SE DownloadsからJava SE JDKをダウンロード。
今回は最新のJava SE 7(Linux x64 – RPM Installer)を選択。

インストール

インストールして、環境変数を変更してパスを通す。

1
2
3
4
5
6
7
$ sudo rpm -ivh jdk-7-linux-x64.rpm
$ sudo vi /etc/profile
#最終行に追加
export JAVA_HOME=/usr/java/jdk1.7.0
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
$ source /etc/profile

確認

1
2
3
4
5
6
7
8
9
10
11
12
$ which -a java
/usr/bin/java
/usr/java/jdk1.7.0/bin/java
$ which -a javac
/usr/bin/javac
/usr/java/jdk1.7.0/bin/javac
$ java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.3) (fedora-59.1.10.3.fc15-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
$ javac -version
javac 1.7.0

もともと、OpenJDKが入っており、環境変数の最後に追加したためOpenJDKの方が優先され古いバージョンになってしまう。
OpenJDKをアンインストールすればいいのだが、オフィスソフトまで消えてしまうのでコマンドの切り替えで対処することにする。*1

対処

1
2
3
4
5
6
7
8
9
10
$ update-alternatives --config java
 
2 プログラムがあり 'java' を提供します。
 
選択 コマンド
-----------------------------------------------
1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*+ 2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
 
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

“/usr/java/jdk1.7.0/bin/java”をupdate-alternativesが管理してないようなので、追加する。
その前に、この二つの優先度を確認する。*2

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
28
29
30
31
$ update-alternatives --display java
java -ステータスは自動です。
リンクは現在 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java を指しています。
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - 優先項目 1500
スレーブ keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
~略~
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - 優先項目 16000
スレーブ keytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
~略~
現在の「最適」バージョンは /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java です。
[/text]
 
優先度17000くらいで。 ((優先度の値をみるとバージョンなのかもしれない))
[text gutter="false"]
$ sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0/bin/java 17000
$ update-alternatives --config java
 
3 プログラムがあり 'java' を提供します。
 
選択 コマンド
-----------------------------------------------
1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
*+ 3 /usr/java/jdk1.7.0/bin/java
 
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
 
$ java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

バージョンが変わった。

脚注

  1. このままでも、大した問題はないだろうが… [戻る]
  2. 既存の二つより優先度を高くすれば自動選択してくれる [戻る]

Skypeのインストール

Skype for Linux 2.2ベータ版から、Fedora 13+を選んでダウンロード。
さくっとインストール。

1
$ sudo rpm -ivh skype-2.2.0.35-fedora.i586.rpm

メニューから起動してみるも、うんともすんとも言わないのでコマンドから実行してみると、ライブラリが足りないみたい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ skype
skype: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
$ ldd /usr/bin/skype 
	linux-gate.so.1 =>  (0x002ed000)
	libasound.so.2 => /lib/libasound.so.2 (0x00b9b000)
	libXv.so.1 => /usr/lib/libXv.so.1 (0x006e5000)
	libXss.so.1 => not found
	librt.so.1 => /lib/librt.so.1 (0x481c8000)
	libQtDBus.so.4 => not found
	libQtGui.so.4 => not found
	libQtNetwork.so.4 => not found
	libQtCore.so.4 => not found
	libpthread.so.0 => /lib/libpthread.so.0 (0x48179000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00865000)
	libm.so.6 => /lib/libm.so.6 (0x4819c000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x48355000)
	libc.so.6 => /lib/libc.so.6 (0x47feb000)
	libdl.so.2 => /lib/libdl.so.2 (0x48195000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x4841c000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x0099d000)
	/lib/ld-linux.so.2 (0x47fca000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x4859b000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x48676000)

“/usr/lib”なので32bitなのを使うみたい。
libXss.so.1はlibXScrnSaver.i686を、libQt~はqt-x11.i686をインストールする。

1
$ sudo yum install libXScrnSaver.i686 qt-x11.i686

これでSkypeが動くようになるはず。

Fedora最初の一歩

・自動起動の設定(gnome)

1
$ gnome-session-properties

・起動時NumLockをONにする

1
$ yum install numlockx

・sshで接続する

1
$ ssh ユーザー名@接続先ip -p ポート

・sambaを起動時にマウントする

1
2
$ sudo vi /etc/fstab
//192.168.1.1  /mnt/hogehoge               cifs    username=(name),password=(pass),file_mode=0755,dir_mode=0755 0 0

・x64なFirefoxにFlash Playerをインストール
Adobe Labsからダウンロード。

1
2
$ tar xzvf flashplayer11_rc1_install_lin_64_090611.tar.gz 
$ sudo cp libflashplayer.so /usr/lib64/mozilla/plugins/

epgrecのインストール

録画予約システムepgrecを参考にインストールする。

epgdumpr2のインストール

ソースをダウンロードして展開、ビルドする。
できた実行ファイルをパスが通ってる所に置く。

1
2
3
4
5
[root@yste download]# wget --content-disposition 'http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2.tar.gz'
[root@yste download]# tar xvzf epgdumpr2.tar.gz
[root@yste download]# cd epgdumpr2
[root@yste epgdumpr2]# make
[root@yste epgdumpr2]# cp epgdump /usr/local/bin

atのインストール

fedoraにはどこかのタイミングで入るんじゃないかなぁ?
ない場合は

1
[root@yste epgdumpr2]# yum install at

でインストールする。

/etc/at.denyの設定

apacheユーザーがないか確認する。

/etc/passwdの確認

通常、apacheユーザーはログイン不可のnologinになってると思うので
/sbin/nologin から /bin/sh
に変更する。

Fedoraでテレビ録画

Windowsで処理済みKTV-FSPCIEの動作確認もできたので、ぼちぼち録画サーバーの準備でもはじめようかなと思います。

環境はFedora15 x64にKTV-FSPCIE(処理済)

recfsusb2n for linux?を参考にインストールする。

ユーザーとグループの作成

video グループを作成する。

1
# groupadd video

作った ?video グループにデバイスを使用するユーザーを追加する。

1
# gpasswd -a foo_user video

パーミッションルールの追加

fedoraで実績がうんぬん書いてあるのに、Ubuntuの場合しか書いてない…
ちょろっと調べてfedora用にする

1
2
3
4
5
6
#?vi /etc/udev/rules.d/89-tuner.rules
 
# FSUSB2N
#kernel-2.6.41.1-1から参考元と同じになる。
#BUS=="usb" SYSFS{idVendor}=="0511", SYSFS{idProduct}=="0029", MODE="0666", GROUP="video"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"

再起動ついでにデバイスを取り付ける。

Fedora15を最小インストールする

1.Fedoraをダウンロード
Fedora ProjectからDVD isoをダウンロード。
ダウンロード→その他のオプション-形式→Fedora 15 DVD(32bit or 64bit)
実機にインストールする場合はDVDに書き込む。

2.インストール開始
Install a new system or upgrade an existing systemを選択しEnter。
dw2011072602 512x384 Fedora15を最小インストールする

view internal: RFC 1918 response from Internet for xxx.xxx.168.192.in-addr.arpa

ログを見ていたらbindの以下のようなエラーが出てた。

1
Jun  4 18:01:04 bar named[xxxx]: client 127.0.0.1#xxxxx: view internal: RFC 1918 response from Internet for xxxx.xxxx.168.192.in-addr.arpa

調べてみると、「プライベートアドレスが外に漏れてますよ」という意味らしい。
ためしにサーバー上で

1
dig -x 192.168.123.123

をやってみたら、プライベートアドレスが見えて、ログが残った。
view internalなので、このログ自体には問題はないんだけど、そのうち本当に外に漏れるかもしれないし、他に問題が発生するかもしれないので対処する。

/etc/named.conf

1
2
3
4
zone "168.192.IN-ADDR.ARPA" {
        type master;
        file "empty";
};

/var/named/empty

1
2
3
@ 10800 IN SOA <name-of-server>. <contact-email>. (
               1 3600 1200 604800 10800 )
@ 10800 IN NS <name-of-server>.

最後にbindを再起動して、digコマンド打ってみてエラーが出なくなったことを確認する。

Logwatchが来なくなった!

サーバーの日々の診断書的なLogwatchが来なくなった。

cron.dailyにちゃんと入れてるので毎日動いてくれるはず何だけれど、何故か動かない。
てことで、cronのログを見てみた。

1
2
3
# less /var/log/cron
May 23 22:01:01 xxx anacron[22051]: Job `cron.daily' locked by another anacron - skipping
May 23 22:01:01 xxx anacron[22051]: Normal exit (0 jobs run)

おやー?
「今動いてるからロックされてるよ。スキップするね。」的なメッセージが…

今 動 い て る だ と ?

1
2
3
4
5
6
7
# ps aux | grep cron
root      3905  0.0  0.0 106956   884 pts/0    SN+  19:19   0:00 grep cron
root     10936  0.0  0.0 111956  1268 ?        SNs  May23   0:00 crond
root     19192  0.0  0.0  14532   920 ?        SNs  May23   0:00 /usr/sbin/anacron -s
root     19681  0.0  0.0   9100  1140 ?        SN   May23   0:00 /bin/bash /usr/bin/run-parts /etc/cron.daily
root     21888  0.0  0.0   9100  1096 ?        SN   May23   0:00 /bin/bash /etc/cron.daily/clamav.sh
root     21889  0.0  0.0   8952   740 ?        SN   May23   0:00 awk -v progname /etc/cron.daily/clamav.sh progname {?????   print progname ":\n"?????   progname="";????       }????       { print; }

clamav.shで止まってるっぽいね。
clamav.shって、ウイルススキャンなんすけど…
とりあえず、普通にスキャンしてみる。
と、その前にclamav.sh殺しておこうかな。

# kill 21888

殺したら後続のが動いた。
で、普通にスキャン。

LibClamAV Warning: fmap_readpage: pread fail: asked for 4094 bytes @ offset 2, got 0

こんなメッセージが/sysでたくさん出て止まった…
CPU使用率100%になったまま…

preadのエラーかな?
ちなみに、clamdのヴァージョンは0.96.1
ちょろっと検索してみたけど、解決策はないみたいで…
ヴァージョンアップ待ちだってさ。

仕方ないので/sysをスキャンから除外。

上へ参ります。