2008/08/05

ffmpegで携帯810Tで再生可能な動画形式へコンバート

ffmpegで動画を携帯(810T)で再生可能な動画ファイル形式に変換する場合、以下のオプションで可能であった。

ffmpeg -y -i 動画ソースファイル -t 20 -vcodec mpeg4 -b 64k -r 15 -s 176x144 -acodec aac -ar 16000 -ab 12.2k -ac 1 -flags bitexact 変換後ファイル

毎回オプションを記述するのは面倒なので、以下シェルスクリプトを書いた。

FileName:/usr/local/bin/movie
#!/bin/sh
OPTION="-y -t 20 -vcodec mpeg4 -b 64k -r 15 -s 176x144 -acodec aac -ar 16000 -ab 12.2k -ac 1 -flags bitexact"
filename(){
awk '
BEGIN{
op="'$1'";
for(i=length(op);i>=0;i--){
if(substr(op,i,1)==".")break;
}
i--;
if(i<0 br=""> i=length(op);
}
print substr(op,0,i);
}'
}
for i in $*
do
echo $i
echo /usr/bin/ffmpeg $OPTION -i $i `filename $i` .3g2
/usr/bin/ffmpeg $OPTION -i $i `filename $i`.3g2
done

このシェルスクリプトの使い方は次のとおりで、変換結果はソースファイル名の拡張子を3g2に変更したファイル名のものに出力される。

movie 動画ソースファイル名
2008/07/26

compizの画面表示がこわれた

compiz-fusionの設定をさわり倒していたのだが、ある日ログインすると画面の4分の1しか表示されない現象が発生した。
なんとかgnome-terminalを表示し、以下コマンドにてwindowマネージャをmetacityに変更すると画面表示を復旧させることができた。

metacity --replace &

上記コマンドはウィンドウマネージャをcompizからmetacity に入れ替えるコマンドである。

設定による不具合であることは、ほぼ間違いないとおもうのだが、どこに設定があるのか不明であったため、取り合えず以下コマンドにてホームディレクトリにある.comizディレクトリを削除することとした。

rm -r .compiz

削除後、以下コマンドにてウィンドウマネージャを再度compizに入れ替えたが、改善されなかった。

 compiz --replace &

再度、metacityに切り替え調査を続行。
metacity --replace &

ホームディレクトリ以下のファイルを確認したところ、以下フォルダにcompizの設定があることを発見した。
.gconf/apps/compiz

早速、以下コマンドにてディレクトリをバックアップし、フォルダを削除することに。

tar jcvf gconf_compiz.tar.bz2 .gconf/apps/compiz
rm -r .gconf/apps/compiz

これでうまくいくのか!? 再度ウィンドウマネージャをcompizに切り替えてみる。

compiz --replace &

おお!! うまく回復した。

compiz-fusionの設定をリセットする場合、ホームディレクトリの .gconf/apps/compiz を削除すれば良いようなので、参考にしていただきたい。
2008/07/06

不要なワークファイルの削除

最近のOSで良く目にすることだが、作業時に作ったワークファイル(テンポラリファイル)が削除されず、溜まっていく現象がある。
Linuxでもこれは同様であり、logファイルなどは定期的に圧縮がなされるようになっているが、整理せずにのっていくファイルがある。

UNIX系OSにはcronという指定時刻に定期的に処理を実行させるスケジューラが存在している。
Linuxでもこの機能がつかえるので、以下に紹介する。

今回は設定として/downloadフォルダ以下に7日以上更新されていないファイルを、定期的に削除する設定を行う。
以下の様に、ファイルに設定を行う。(かならずrootで行うこと)
File : /var/spool/cron/crontabs/root
0 0 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;
0 4 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;
0 8 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;
0 12 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;
0 16 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;
0 20 * * * find /download -mtime +7 -type f -exec /bin/rm -r {} \;

次に、cronデーモンに設定を読み込ませる。

sudo crontab /var/spool/cron/crontabs/root

以上で、設定は完了である。詳細の設定の意味は時間の関係で省略しているが、
エッセンスは含んだつもりなので、さらに理解を深めたい方はmanコマンドなどで
調べていただきたい。
2008/07/01

カーネルモジュールの再構築

カーネルのリコンパイル手順は有名だが、カーネルモジュールの再構築は少々記事が少ない様だ。

virtual-box-oseのカーネルモジュール再構築は以下の手順で行える。

sudo mkdir -p /usr/src/modules
cd /usr/src/modules
sudo apt-get install virtualbox-ose-source
sudo m-a update
sudo m-a prepare
sudo m-a a-i virtualbox-ose
sudo /etc/init.d/vboxdrv restart

同様の手順でalsa-audioも再構築可能なので、参考にしてもらいたい。
2008/06/30

Wineでoffice xp

PlayOnLinuxなるwineの設定ツールを見つけた。このツールの本来の目的はLinuxでWindowsのゲームを動かすことのようだが、office2003が動作したとの報告があり、導入してみることとした。

ツールを公開しているサイトは http://www.playonlinux.com/ である。

Ubuntu 8.04では以下のコマンドにて導入可能である。

sudo wget http://playonlinux.botux.net/playonlinux_hardy.list -O /etc/apt/sources.list.d/playonlinux.list
sudo wget -q http://playonlinux.botux.net/pol.gpg -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install playonlinux

本題のoffice xpの動作は今後アップする。
2008/06/16

Oracle XEのインストール

無償のOracle製品 Oracle 10g Express Edition がOracle社のホームページから
http://www.oracle.com/technology/products/database/xe/index.html
ダウンロードできる。

もちろん、Oracleにユーザ登録の必要がある。
OracleSilverをとろうと思っているので、使いたおしてみようとおもう。

ダウンロードしたファイルは oracle-xe-universal_10.2.0.1-1.0_i386.debである。

sudo apt-get install libaio1

sudo dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb

sudo /etc/init.d/oracle-xe configure
2008/05/10

Ubuntu 8.04 ハイバネート(hibernate)異常2

前回の修正にて正常動作するに見えたが、まれにハイバネート異常が再発した。

再度調査にて、カーネルドキュメントの以下解説を確認した。

FileName:/usr/src/linux-source-2.6.24/Documentation/power/swsusp.txt

  If you want to limit the suspend image size to N bytes, do
  echo N > /sys/power/image_size
  before suspend (it is limited to 500 MB by default).

サスペンドイメージの上限サイズを変更するなら、/sys/power/image_sizeにそのサイズ(バイト)
を書き込めと書いてある。(デフォルトの上限は500MB)

さらに後ろに読み進めると、以下の記述があった。

  If you set it to 0 (eg. by echo 0 > /sys/power/image_size as
  root), the 2.6.15 behavior should be restored. If it is still too
  slow,

/sys/power/image_sizeに0を書き込めば必ず動作するが、動作は遅いと書いてある。

必ず動作することの方が重要であるため、ハイバネートの際には/sys/power/image_sizeに0を書き込むこととする。

また、ハイバネートからの復帰時に非常に動作が遅くなる現象を経験したことがあり、その解決策を探したところ、以下の記述があった。

  Q: After resuming, system is paging heavily, leading to very bad interactivity.
  A: Try running
    cat `cat /proc/[0-9]*/maps | grep / | sed 's:.* /:/:' | sort -u` > /dev/null
    after resume. swapoff -a; swapon -a may also be useful.

ハイバネートからの復帰時に動作が遅くなる現象は、ページング処理の頻発が原因であることを確認している。
(実際、swapoff -a ;swapon -a にて記述どおり改善した経験がある)

cat .... >/dev/null の記述は試したことがないため、記述どおり動作させてみたところ、/dev/zero の読み込みを行うらしく、無限ループに至り正しく動作しなかった。

記述の内容は /proc/..../maps から抽出できるオープン中のファイルのファイル名より、ファイルの再読み込みを行うことで、ページングの優先度を下げ、動作不良に至らない様にすると解釈した。
同手順は良い手順だが、無限ループに陥る/dev/zeroの再読み込みを省略させる必要があるため、抽出されるファイル名より、/dev/を含むものを省略する以下手順に変更することとした。

  (cat /proc/[0-9]*/maps | grep / |sed 's:.* /:/:;/\/SYSV/d;/\/dev\//d' |xargs cat )>/dev/null

xargs を使用した理由は/proc/.../mapsから抽出されるファイル名のリストが、シェル関数の容量上限である1024バイトを超える場合であっても正常動作させるためである。

以上を踏まえて、以下のシェルスクリプトを追加した。

  FileName: /etc/acpi/suspend.d/00-image_size_upd.sh
  #!/bin/sh
  (cat /proc/[0-9]*/maps | grep / |sed 's:.* /:/:;/\/SYSV/d;
  /\/dev\//d;/(deleted)/d' |xargs cat )>/dev/null

  echo 0 > /sys/power/image_size

シェルスクリプトファイルには、以下コマンドにて実行権を付与している。
  (この記事を試される場合、忘れずに付与してほしい)

  chmod +x /etc/acpi/suspend.d/00-image_size_upd.sh

前回の記事でも記載漏れがあったが、GRUBのkernelの行に resume=スワップディバイスの設定を追加する必要がある。

FileName:/boot/grub/menu.lst
: :
kernel /vmlinuz-2.6.24-16-generic root=UUID=e51044c7-70dc-414e-a5f6-d75203567c08 ro quiet splash resume=/dev/sda3
: :

当方の環境ではスワップディバイスは/dev/sda3であるが、 環境によって異なる。
cat /proc/swaps でスワップディバイスを一覧できるので、不明な場合は試してもらいたい。

以上の設定で、安定したハイバネート環境となった。
カーネルドキュメントには他にも色々と参考となる記述があるため、もっと高速化が図れると考える。
今後も引き続き調査をおこなっていくこととする。

ご指摘事項など、遠慮なく行っていただければ幸いである。

Ubuntu 8.04 (Hardy Heron) のハイバネートが正常に行われるようにする
 GUIの機能について指摘を記載頂いておりました。感謝します。

2008/05/03

Ubuntu 8.04 ハイバネート異常

ハイバネート(hibernate)とは直訳すると冬眠という意味だが、コンピュータの機能におけるハイバネートとは、メモリイメージをディスクに退避して、終了(電源ダウン)する機能のことを言う。

Ubuntu 8.04+ATI Radionディスプレイドライバの環境にてハイバネートを行った場合、起動しているプログラムの数により、以下のエラーにてハイバネートが正常動作しない現象が発生した。

[ 510.945354] swsusp: Not enough free memory

調査したところ、ハイバネートでは、退避に必要なメモリサイズを/sys/power/image_sizeから参照しており、このサイズが500MB( 524288000 )固定であるため、スワップを含めたメモリ使用量が500MBを超えた場合に、上記エラーとなることが判明した。

ハイバネートの手続きは/etc/acpi/hibernate.sh 及び/etc/acpi/suspend.d/*で定義されているので、/etc/acpi/suspend.d/ディレクトリに/sys/power/image_sizeを現在のスワップを含めたメモリ使用量で更新する以下シェルスクリプトファイルを追加した。

FileName: /etc/acpi/suspend.d/00-image_size_upd.sh
#!/bin/sh
free | \
awk '{if($1=="-/+"){size+=$3;}if($1=="Swap:"){size+=$3;}}END{print size*1024}' \
> /sys/power/image_size

シェルスクリプトファイルを追加が終わったら、以下コマンドにて実行権を与えておく。
chmod +x /etc/acpi/suspend.d/00-image_size_upd.sh

以上の修正にて、ハイバネートが正常に動作するようになった。
同様の事象にて困っている方がおられたら参考にされたい。
2008/04/07

Ubuntu 7.10 cairo-dock

cairo-dock がバージョンアップされたので導入してみた。

もともと、自力でメイクしたものでは3D表示がされていなかったのが不満だったのだが、
以下の方法で無事3D表示することができた。

まず、tarファイルの解凍

cairo-dock 本体のメイク

プラグインのメイク(これが重要)

cd opt/cairo-dock/trunk/plug-ins/rendering
autoreconf -isvf
./configure --prefix=/usr/
make
sudo make install

これでカレントの.cario-dock を削除して、cario-dock を再起動してみましょう。

きちんと表示されるはずです。
2008/03/24

ATI 8.3ドライバ

ATI の8.3ドライバにアップデートしたのだが、compizを動かした状態で
動画再生(DVDやAVI)を行うと、動画画面が点滅して見れたもんじゃない状態となった。

ちなみに8.2のドライバでは特に問題は感じられなかった。

どうも調べてみると 8.3ドライバから TexturedVideo モードをサポートしたらしい。
8.2では未サポートの機能。

compizを動かさないのであればうれしい機能だとおもうが、(パフォーマンスが上がるので)
2DならわざわざATIである必要もなく、以下の様に設定した。

FileName : /etc/X11/xorg.conf
Section "Device"
Identifier "aticonfig-Device[0]"
Driver "fglrx"
Option "TexturedVideo" "off"
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "on"
EndSection

ちなみに 重要なのは TuxturedVideoの行だけ、後は OpenGLOverlayが onなのが気になるが、
とりあえずこの設定にしている。(Googleで探すとほとんどが off のはず)

それでは。
2008/03/21

内部エラー failed to initialize HAL!

kernelリコンパイル後、ログインしてみるとタイトルのメッセージのダイアログが!!

どうも File systems --> Inotify file change notification support が無効になるとだめらしい。

http://gentoo-wiki.com/HOWTO_D-BUS,_HAL,_KDE_media:/

https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.15/+bug/31517

いろいろあるなぁ。今さっそくリコンパイル中なので、状況がかわったらアップします。
2008/03/18

Ubuntu HTMLエディタ

Ubuntu 7.10 で使えるHTMLエディタを探してみた。

GoogleってみるとNvというエディタが見つかったが、これ2005年にメンテ終了している。

後続のツールとして KompoZer http://www.kompozer.net/というツールがあるのを発見。

apt-cache search kompozer すると何とあるじゃないか。

さっそく sudo apt-get install kompozer
使用感は後日レポートしてみます。