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
|
/ 以下のディレクトリ構成で設置したいファイルを置いておく
- ファームウェア更新実行順序
- 管理画面から update.tgz をアップロードする。
- update.tgz が展開される。
- landisk-update.sh が実行される。
- landisk-update.sh から update.pl が実行される。
- スクリプトが終了すると自動的に再起動される。
- とりあえず軽く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はまともに利用できません。オービットさんの情報などをもとに、なんとか利用可能な状態にすることができました。下記はかなり経緯を省略していますが、実際ここまでたどりつくまでにかなりの時間を要しています。ふぅ〜。
- 必要なディレクトリを作っておく。
- dpkgでパッケージの依存関係を正常にする。
- libc6_2.3.5-6_arm.debをインストール(test版のlib6)
- libdb1-compat_2.1.3-7_arm.debをインストール
- libc6_2.3.2.ds1-22_arm.debを再インストール(stable版のlibc6)
- libgcc1_3.4.3-13_arm.debをインストール
- libstdc++5_3.3.5-13_arm.debをインストール
- libncurses5_5.4-4_arm.debをインストール
- apt-getで必要なパッケージをインストール(アップデート)
- dpkgをインストール
- dselectをインストール
- apt-getをインストール
- apt-utilsをインストール
- これで正常に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可能なように変更しましょう。
- /etc/vsftpd.chroot_list に登録ユーザーを追加する。
- /etc/vsftpd.conf の chroot_list_enable=NO の部分を chroot_list_enable=YES に変更する。
- /etc/init.d/vsftpd restart する。
- アクセス権の設定は環境にあわせて適宜変更が必要です。
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
- http://sourceforge.net/projects/mt-daapd から ソースをGETして展開する。
# ./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
- HTPC (PLACE K)
- Hack!Hack!Hack! Giga LANDISKをDebian化
- Giga LANDISKといっしょ。
- I-O HACK
- wizd on LANDISK
- LANDISKで漕ぎいでな〜♪
アクセス数:3082
最終更新時間:2006年09月29日 16時22分32秒