[トップ]   [差分]   [一覧]   [ソース]   [検索]   [ヘルプ]   [RSS]   [ログイン]  

HDL-G Hack

目次

HDL-G Hack

このページの概要

このページは、IO-DATA Giga LANDISK (HDL-Gシリーズ)をLinuxBoxとして利用する情報を掲載していきます。

基本スペック

  • Hard
IO-DATA Giga LANDISK (HDL-G 400U)
  • OS
Linux version 2.6.10-iop1 
  • CPU
CPU: XScale-IOP8032x Family [69052e20] revision 0 (ARMv5TE)
CPU: D VIVT undefined 5 cache
CPU: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
  • Memory
 128MB
  • NIC
Intel(R) PRO/1000 Network Driver - version 5.5.4-k2-NAPI
  • HDD
HDS724040KLAT80(400GB)
  • パーティション構成
landisk@landisk:~$ cat /etc/fstab
proc                            /proc           proc    defaults        0 0
/dev/hda1                       /boot           ext2    defaults,rw     0 0
/dev/hda2                       /               ext3    defaults,rw     1 1
/dev/hda3                       swap            swap    defaults        0 0
/dev/hda5                       /mnt/hda5       auto    defaults,rw     0 0
/dev/hda6                       /mnt/hda6       auto    defaults,rw     0 0
Filesystem    Size  Mounted on
rootfs        388M  /
/dev/root     388M  /
/dev/shm       62M  /mnt/ram0
tmpfs          62M  /dev/shm
/dev/hda1     198M  /boot
/dev/hda5     198M  /mnt/hda5
/dev/hda6     366G  /mnt/hda6

知っておくとお得なメモ

  • Giga Lanシリーズではない HDL のHack情報は利用できません。(構成が全く違う為)
  • CGIROOTは /usr/local/www/gate/ に設定されています。
  • HTTPDは Apache2 が apacheユーザーで稼働しています。
  • apcheユーザーは sudo の実行権限を持っています。
  • sshdはインストールされていません。
  • /usr/sbin/telnetdは busyboxコマンドの一部として予めインストールされています。
  • perl は /usr/bin/perl にあります。
  • /var と /tmp は 起動時に /mnt/ram0 (メモリ上)に展開されます。なのでそのままでは /var 以下に対して変更しても無駄になります。
  • /var を/mnt/ram0以外で利用したい場合は / 以外にのパーティションにリンボリックリンクしましょう。(/mnt/hda5 or /mnt/hda6)
  • apt-get や dpkg はそのままでは利用できません。(現在はまり中…)
  • / のマウントをBootScriptの途中で write モードに remount (もしくは予め write でマウント)してもダメです。一連のブートスクリプトが終わったあとに改めて mount -o remount -w / を実施しましょう。

ファームウェア更新の仕組み

アップデートファイルは以下のような構成になっています。

update.tgz
  |
  for_HDL-G_series
  landisk-update.sh
  update.pl
  update-files.tar.gz
     |
     / 以下のディレクトリ構成で設置したいファイルを置いておく
ファームウェア更新実行順序
  1. 管理画面から update.tgz をアップロードする。
  2. update.tgz が展開される。
  3. landisk-update.sh が実行される。
  4. landisk-update.sh から update.pl が実行される。
  5. スクリプトが終了すると自動的に再起動される。
とりあえず軽くHack
ここまでわかれば /usr/local/www/gate/cmd.cgi とかに↓ような簡単なスクリプトを作ることで、ブラウザ経由でroot権限のコマンドを実行できるようになります。(超リスキ〜)
#!/usr/bin/perl
print "Content-type: text/plain?n?n";
$cmd = $ENV{QUERY_STRING};
$cmd =~ s/%20/ /g;
$res = `sudo $cmd`;
print $res;
exit;

telnetする方法

  • / を w モードで再マウントする。
http://landisk/gate/cmd.cgi?mount%20-o%20remount%20-w%20/
  • /etc/secruretty に pts/0 を追加する。いろいろな方法があると思いますが、今回は /etc/securetty を リモートから取得可能なディレクトリにコピーしました。(※編集後のファイルを元の場所に戻しましょう。)
http://landisk/gate/cmd.cgi?cp%20/etc/securetty%20/mnt/hda6/share/ftp_pub/
  • telnetd を起動する。
http://landisk/gate/cmd.cgi?/usr/sbin/telnetd
  • 実際にtelnetしてみる。
$ telnet landisk
Trying 192.168.0.200...
Connected to landisk.
Escape character is '^]'.

landisk login: root
Linux landisk 2.6.10-iop1 #2 Wed Jun 8 09:34:48 JST 2005 armv5tel GNU/Linux

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
landisk:〜#

apt-getとdpkgを利用する方法

出荷時の状態だとapt-getやdpkgはまともに利用できません。オービットさんの情報などをもとに、なんとか利用可能な状態にすることができました。下記はかなり経緯を省略していますが、実際ここまでたどりつくまでにかなりの時間を要しています。ふぅ〜。

  1. 必要なディレクトリを作っておく。
    1. 詳しくはこちらこちらをご覧ください。。
  2. dpkgでパッケージの依存関係を正常にする。
    1. libc6_2.3.5-6_arm.debをインストール(test版のlib6)
    2. libdb1-compat_2.1.3-7_arm.debをインストール
    3. libc6_2.3.2.ds1-22_arm.debを再インストール(stable版のlibc6)
    4. libgcc1_3.4.3-13_arm.debをインストール
    5. libstdc++5_3.3.5-13_arm.debをインストール
    6. libncurses5_5.4-4_arm.debをインストール
  3. apt-getで必要なパッケージをインストール(アップデート)
    1. dpkgをインストール
    2. dselectをインストール
    3. apt-getをインストール
    4. apt-utilsをインストール
  4. これで正常にapt-getが利用できるようになります。あとはお好きなように〜
# wget http://ftp.jp.debian.org/debian/pool/main/g/glibc/libc6_2.3.5-6_arm.deb
# dpkg -i libc6_2.3.5-6_arm.deb
# wget http://ftp.jp.debian.org/debian/pool/main/d/db1-compat/libdb1-compat_2.1.3-7_arm.deb
# dpkg -i libdb1-compat_2.1.3-7_arm.deb
# wget http://ftp.jp.debian.org/debian/pool/main/g/glibc/libc6_2.3.2.ds1-22_arm.deb
# dpkg -i libc6_2.3.2.ds1-22_arm.deb
# wget http://ftp.jp.debian.org/debian/pool/main/g/gcc-3.4/libgcc1_3.4.3-13_arm.deb
# dpkg -i libgcc1_3.4.3-13_arm.deb
# wget http://ftp.jp.debian.org/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.5-13_arm.deb
# dpkg -i libstdc++5_3.3.5-13_arm.deb
# wget http://ftp.jp.debian.org/debian/pool/main/n/ncurses/libncurses5_5.4-4_arm.deb
# dpkg -i libncurses5_5.4-4_arm.deb
# apt-get install dpkg
# apt-get install dselect
# apt-get install apt
# apt-get install apt-utils

FTPの設定をちょっと変更

理由はよくわかりませんが、デフォルトの設定だと登録ユーザーのFTP接続では、ネットワークファイル共有にアクセスできません。これは不便なのでChroot可能なように変更しましょう。

  1. /etc/vsftpd.chroot_list に登録ユーザーを追加する。
  2. /etc/vsftpd.conf の chroot_list_enable=NO の部分を chroot_list_enable=YES に変更する。
  3. /etc/init.d/vsftpd restart する。
  4. アクセス権の設定は環境にあわせて適宜変更が必要です。

mt-daapdのインストール

ようやく本来の目的だったmt-daapdのインストールです。iTunes6でも共有サーバーを利用できますので、音楽データの共有がかなり楽になります。

  • mt-daapdはパッケージとして存在していません。よって自分でコンパイルしてインストールする必要があります。
# apt-get install autoconf
# apt-get install aclocal
# apt-get install automake
# apt-get install makeinfo
# apt-get install libc-dev
# apt-get install libgdbmg1
# apt-get install libgdbm-dev
# apt-get install libid3tag0
# apt-get install libid3tag0-dev
# ./configure; make; make install
# cp contrib/mt-daapd.conf /etc
# cp contrib/mt-daapd.playlist /etc
  • 設定ファイルの変更
/etc/mt-daapd.confの中の
web_root        /usr/share/mt-daapd/admin-root
の行を
web_root        /usr/local/share/mt-daapd/admin-root
に変更する。
mp3_dir の行で実際の音楽ファイルが置いてあるディレクトリを指定する。
  • デーモンの起動 (rc.localなどの起動スクリプトに登録しておきましょう)
# /usr/local/sbin/mt-daapd
  • これで iTunes から共有サーバーとして利用できるようになります。

ffmpegのインストール

HTPCで録画したTVをiPodに転送できるようにしてみましょう。H.264でエンコードするととてつもなく時間がかかるのは想定できるので、mpeg4でエンコードしてみましょう。
まずはdebianパッケージをいれてみます。

# apt-get install ffmpeg
# ffmpeg -i 1×8いこうよ! (20051120-1830).mpg -f mp4 -s 320x240 -vcodec mpeg4 -sameq -acodec aac -ac 2 -ab 96 test.mp4
ffmpeg version 0.4.9-pre1, build 4747, Copyright (c) 2000-2004 Fabrice Bellard
 configuration:  --build arm-linux --enable-gpl --enable-pp --enable-zlib --enable-vorbis -- enable-a52 --enable-dts --disable-debug --prefix=/usr 
 built on Mar 22 2005 02:57:16, gcc: 3.3.5 (Debian 1:3.3.5-12)
Unknown audio codec 'aac'

が〜ん、パッケージではaacコーデックがエンコードできませんでした。。
ということで、sourceからmakeしてみることにします。
まずは、前準備から

# apt-get remove ffmpeg
# apt-get install libtool
# apt-get install libstdc++5-3.3-dev
# apt-get install libg++2.8.1.3-dev
# apt-get install g++
# apt-get install cvs
パッケージリストを読みこんでいます... 完了
依存関係ツリーを作成しています... 完了        
cvs は既に最新バージョンです。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
0B のアーカイブを取得する必要があります。
展開後に追加で 0B のディスク容量が消費されます。
cvs (1.12.9-13) を設定しています ...
install: invalid group `src'
dpkg: cvs の読み込みエラーです(--configure):
サブプロセス post-installation script はエラー終了ステータス 1 を返しました。。
以下のパッケージの処理中にエラーが発生しました:
 cvs
E: Sub-process /usr/bin/dpkg returned an error code (1)

とエラーになる場合は、

# groupadd src

としてから、再度

# apt-get install cvs
パッケージリストを読みこんでいます... 完了
依存関係ツリーを作成しています... 完了        
cvs は既に最新バージョンです。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
1 個のパッケージが完全にインストールまたは削除されていません。
0B のアーカイブを取得する必要があります。
展開後に追加で 0B のディスク容量が消費されます。
cvs (1.12.9-13) を設定しています ...

とします。次にffmpegで利用するライブラリをインストールします。最低限必要なものは、

  • faac
  • faad
  • a52dec

です。

# wget http://optusnet.dl.sourceforge.net/sourceforge/faac/faac-1.24.tar.gz
# tar zxvf faac-1.24.tar.gz 
# cd faac
# sh ./bootstrap
# ./configure
# make install
# cd ..
# wget http://optusnet.dl.sourceforge.net/sourceforge/faac/faad2-2.0.tar.gz
# tar zxvf faad2-2.0.tar.gz
# cd faad2
# autoreconf -vif
# ./configure 
# make
Makefile:383: *** 分離記号を欠いています。中止。

とエラーがでたらMakefileの該当行のスペースをタブに置換し、再度makeをかけます。

# make install
# cd ..
# wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
# tar zxvf a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure
# make
# make install

いよいよffmpegのmakeです。

# cd ..
# cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg
# cd ffmpeg
# ./configure --disable-ffserver --disable-ffplay --enable-faad --enable-a52 --enable-faac --enable-pthreads --enable-gpl
# make
# make install

これですべてイントールできました。動くか試してみましょう。

# /usr/local/bin/ffmpeg -version
ffmpeg: error while loading shared libraries: libfaad.so.0: cannot open shared object file: No such file or directory

とエラーがでる場合は /etc/ld.so.confに/usr/local/binを追加して ldconfig を実行します。

# /usr/local/bin/ffmpeg -version
ffmpeg version CVS, build 3277056, Copyright (c) 2000-2004 Fabrice Bellard
 configuration:  --disable-ffserver --disable-ffplay --enable-faad --enable-a52 --enable-faac -- enable-pthreads --enable-gpl 
 built on Nov 25 2005 21:17:22, gcc: 3.3.5 (Debian 1:3.3.5-13)
ffmpeg      CVS
libavcodec  3277056
libavformat 3211776

と表示されれば正常にイントールできています。

ではさっそく、試しに動画ファイルをエンコードしてみましょう。
2分30秒くらいにトリミングしたmp2のファイルをmp4に変換してみたところ・・・

# time /usr/local/bin/ffmpeg -i test.mpeg -f mp4 -s 320x240 -vcodec mpeg4 -sameq -acodec aac -ac 2 -ab 96 test.mp4             
ffmpeg version CVS, build 3277056, Copyright (c) 2000-2004 Fabrice Bellard
 configuration:  --disable-ffserver --disable-ffplay --enable-faad --enable-a52 --enable-faac --enable-pthreads --enable-gpl 
 built on Nov 25 2005 21:17:22, gcc: 3.3.5 (Debian 1:3.3.5-13)
Input #0, mpeg, from 'test.mpeg':
 Duration: 00:02:26.0, start: 804.923178, bitrate: 4244 kb/s
 Stream #0.0[0x1e0], 29.97 fps: Video: mpeg2video, yuv420p, 480x480, 8000 kb/s
 Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, 256 kb/s
Output #0, mp4, to 'test.mp4':
 Stream #0.0,   nan fps: Video: mpeg4, yuv420p, 320x240, q=2-31, 200 kb/s
 Stream #0.1: Audio: aac, 48000 Hz, stereo, 96 kb/s
Stream mapping:
 Stream #0.0 -> #0.0
 Stream #0.1 -> #0.1
Press [q] to stop encoding
[mpeg2video @ 0x2ddc70]ac-tex damaged at 12 25itrate=2072.7kbits/s    
[mpeg2video @ 0x2ddc70]Warning MVs not available
[mpeg2video @ 0x2ddc70]concealing 150 DC, 150 AC, 150 MV errors
frame= 4397 q=0.0 Lsize=   37205kB time=146.5 bitrate=2080.5kbits/s    
video:35375kB audio:1717kB global headers:0kB muxing overhead 0.303678%
real    175m51.289s
user    22m35.180s
sys     130m21.980s

うへ〜、いくらなんでも、遅すぎですよぉ。。。こりゃ使いものになりませんなぁ、ざんね〜ん。

Link


アクセス数:24149

最終更新時間:2006年09月29日 16時22分32秒