生活の役に立てられるかを目標に構築している今日この頃。
ただの箱にしないように心がけましょう?

Mysqlのバックアップ for Linux (2005/2/1)
USB接続のプリンタを認識させる(EPSON PX-G900) for Linux (2004/8/9)
無線LANカードWLI-CB-G54を認識させる for Linux (2004/8/4)
ffmpegによる携帯向け動画の作成 for Linux (2004/8/3)


Mysqlのバックアップ for Linux (2005/2/1)
よく使われているMysqlのバックアップについてのメモ書きです。

・フルバックアップ
色んな書籍にさくっとかいてあるmysqldumpとその使い方、確かに書いてある方法でバックアップできるんだけど、テーブル内のデータに「\」やShiftJISコードが入っていた日にはバックアップしたデータがエスケープされてリストアするときにエラーにが出るので、バックアップにならんとです(ヒロシです)。
どうすれば良いかといえば
  1. mysqldump -uユーザ名 -pパスワード --add-drop-table --add-locks --lock-tables --fields-escaped-by=\\ --tab=ダンプ出力先パス バックアップするデータベース名
このように「\」をエスケープしてダンプすれば良いわけです。

・差分バックアップ 上記のフルバックアップが取り終わったら次は差分バックアップの設定。
フルバックアップ+差分バックアップをしておけば、任意の時点の状態に戻せるわけで(純君です)。
  1. Mysqlをフルバックアップ。

  2. Mysqlを停止。

  3. mysqlの起動スクリプト(例:/etc/init.d/mysqld)のsafe_mysql起動オプションに--log-update=差分ログファイル名を追加。
    $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file --log-slow-queries --log-update=/usr/local/mysql/diff/diffsql &
  4. cronで差分バックアップファイルのローテートを行う(1日1回)
    0 0 * * * mysql /usr/local/mysql/bin/mysqladmin -uユーザ名 -pパスワード flush-logs
  5. Mysqlを再起動。



USB接続のプリンタを認識させる(EPSON PX-G900) for Linux (2004/8/9)
「無線LANカードWLI-CB-G54を認識させる」で無線LANカードを挿していたWindowsに接続していたプリンタをLinuxマシンにお引越しするわけです。
※Redhat7.3にインストールすることを前提に書いてます。rpmが使用できればVine等、他のディストリビューションでもいけると思います。
・cupsのインストール
まずはLinuxでプリンタを使用するためにcupsをインストールします。
  1. cupsとcups-libsをDL
    http://updates.redhat.com/7.3/en/os/i386/cups-1.1.14-15.4.i386.rpm
    http://updates.redhat.com/7.3/en/os/i386/cups-libs-1.1.14-15.4.i386.rpm

  2. cups-libをインストール。
    rpm -ihv cups-libs-1.1.14-15.4.i386.rpm

  3. cupsをインストール。
    rpm -ihv cups-1.1.14-15.4.i386.rpm

  4. /etc/cups/cupsd.confを編集してアクセス権限を設定。
    下記のディレクティブの最後にプリンタを使用するマシンのIPアドレスを追加。
    <Location />
    Order Deny.Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From xxx.xxx.xxx.xxx(クライアントのIPアドレス)
    </Location>

    下記のディレクティブの最後にプリンタを設定するマシンのIPアドレスを追加。
    <Location /admin>
    #
    Authtype Basic
    AuthClass System
    #
    Order Deny.Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From xxx.xxx.xxx.xxx(クライアントのIPアドレス)
    </Location>
  5. /etc/cups/mime.typesを編集
    #application/octet-streamのコメントをはずす。

  6. /etc/cups/mime.convsを編集
    #application/octet-stream application/vnd.cups-raw 0 -Aのコメントをはずす。

  7. /etc/init.d/cups startとしてcupsを起動します。

・EPSON PX-G900のドライバ(CUPSフィルタ)をインストール
EPSONからはドライバは配布されていないのでエプソンコーワさんが提供しているドライバを利用します。
  1. エプソンコーワさんのpipsg900-cups-2.6.2-1.i386.rpmをDL。

  2. rpm -i pipsg900-cups-2.6.2-1.i386.rpmとしてインストール。

  3. 先にインストール済みのCUPSを/etc/init.d/cups restartとして再起動します。

  4. ブラウザからhttp://サーバIP:631/へアクセスし、CUPSの設定画面を開きます。

  5. "Manage Printers"を選択。

  6. "Add Printer"を選択。

  7. "Name"にプリンタ設定名称を記述して、"Continue"を選択 (他の項目は必須ではありません)。

  8. "Device"に"EPSON Inkjet Printer #1 (Photo Image Print System)"を設定して、"Continue"を選択。

  9. "Make"に"EPSON"を設定して、"Continue"を選択。

  10. "Model"に"EPSON PX-G900 , Photo Image Print System (en)"を設定して、"Continue"を選択。

これでPX-G900が認識されます。後はWindowsから使用したい場合、sambaをインストールしてプリンタ共有すればOKです。


無線LANカードWLI-CB-G54を認識させる for Linux (2004/8/4)
元々Windowsで使用していた無線LANカードWLI-CB-G54をLinuxがインストールされているノートPC(このサーバね)で使用しようとしたのですが・・・見事に認識しません。
ドライバから入れていかないとあかんみたい。
インストールしてあるLinuxはRedhat7.3。そしてドライバはWindowsのNDISのみ。
ということで、調べていってみたら、LinuxでNDISを使用できるようにするndiswrapperなるもので認識できることが判明、早速インストールしてみました。
※Redhat7.3にインストールすることを前提に書いてます。他のディストリビューションはndiswrapperをmakeしてインストールしてくださいまし。

・ndiswrapperのインストール
  1. http://ndiswrapper.sourceforge.net/からndiswrapperのrpmパッケージとndiswrapper-utilsのrpmパッケージをDL。

  2. 上記をndiswrapper-utilsからインストール。

  3. insmod ndiswrapperとし、ndiswrapperをカーネルに組み込む。

  4. バッファローのHPからWLI-CB-G54のWindows2000/XP用ドライバをDL。

  5. lha x wdrv_???.exeとしてWindows2000/XP用ドライバを解凍。

  6. 解凍したディレクトリ内のcbg54に移動。

  7. mkdir /usr/local/wdrv

  8. .netcbg54.infとbcmwl5.sysを/usr/local/wdrvにコピー。

  9. ndiswrapper -i /usr/local/wdrv/netcbg54.inf

  10. modprobe ndiswrapper

  11. ndiswrapper -m

  12. vi /etc/sysconfig/network-scripts/ifcfg-wlan9

  13.     DEVICE=wlan0
        BOOTPROTO=dhcp
        ESSID=foobar
        KEY=s:himitus
        ONBOOT=no
  14. /etc/init.d/network restart

これで無線LANアクセスポイントでDHCPが動いていればifconfigでIPアドレスが割り当てられているのを確認できます。



ffmpegによる携帯向け動画の作成 for Linux (2004/8/3)
3G携帯向けの動画(MPEG4/H.263とMP3/AMRの組み合わせ)ならffmpegで出来ると信じてインストールしてみる。

・lame mp3のインストール
ffmpegで、MP3の音声コーデックを使用するにはlame mp3が必要。

  1. lame mp3のソースをDLして解凍。

  2. ./configureとして、Makefileの作成。

  3. make

  4. make install


・AMRのインストール ffmpegでAMRの音声コーデックを使用するには3GPPのAMRが必要。

  1. 以下のURLからAMRの音声コーデックをDL。

  2.     http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26204-520.zip
        http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26073-530.zip
        http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26104-540.zip
  3. ffmpegのソースをDLして解凍。

  4. ffmpegを解凍したディレクトリ内で以下のようにAMRコーデックのソースを解凍。

  5.     26204-520.zipをlibavcodec/amrwb_float
        26073-530.zipをlibavcodec/amr
        26104-540.zipをlibavcodec/amr_float

・ffmpegのインストール
  1. 先に解凍したffmpegのディレクトリに移動。

  2. ./configure --enable-amr_nb --enable-amr_wb --enable-mp3lameとして、AMR、MP3を有効にしてMakefileの作成。

  3. make

  4. make install


・動画の作成
以下のコマンドでエンコードすれば、FOMAでは普通に見れます。

ffmpeg -i test.mpg -acodec amr_nb -ar 8000 -ac 1 -ab 32 -vcodec h263 -s qcif -r 10 test.3gp

AUの3GPで見るにはさらにおまじないが必要で、エンコードしたムービーのヘッダをバイナリエディタで以下のように書き換える必要があります。
ASCIIコードで「ftyp3gp5」と書かれている部分を「ftypkddi」に変更

Vodafoneはまだ試していません。ffmpegにコーデックは揃っているのでいけると思います。
FOMAの着モーション用にするには以下のようにすればいいというのを随所で見かけるのですが、うまくいきません・・どなたかご教授をっ
  1. バイナリエディタへ読み込んだ iモーションファイルの総バイトが、奇数か偶数かを調べます。

  2.    バイナリデータの最後の行を見れば簡単に判ります。
       {例}(最終行)29 71 48 90 05 04 C0 0A-00 10 0E (奇数)
       {例}(最終行)02 00 00 0F 00 00 0F 0C-00 0F 00 1C (偶数)
  3. バイナリ値"64 63 6D 64 00 00" ASCIIコード"dcmd.."を捜します。

  4. 後半にある"00 00"の部分を書き換えます。

  5.    ファイルの総バイトが奇数の場合"64 63 6D 64 00 00"→"64 63 6D 64 0D 0D"に書き換える。
       ファイルの総バイトが偶数の場合"64 63 6D 64 00 00"→"64 63 6D 64 09 09"に書き換える。