+ ■ 音箱
玄箱をDebian(sarge/testing)化して、jukeboxにしようとする計画。基礎的情報は「玄箱」の項を参照。woody/stableでも音は鳴るのだが、alsaplayerのパッケージが古くて、あとからコマンドで制御できないので、sarge化してalsaplayerの新しいパッケージに対応しようということ。
+ ■ 目標と達成度
- sarge化する(済)
- sambaを入れる(済)
- 音を鳴らす(済)
- リモコンをつける(済)
- 制御方策の検討
(2004/08/31 14:14:00)
+ ■ sarge化
かぐやさんとこのやつでDebian(woody)化するところまでは「玄箱」の項を参照。
- rootのパスワード変更
- adduserでアカウント作成(http://park15.wakwak.com/‾unixlife/linux/de-user.html)
- tmp-kunは削除
- apt-get install wget
- apt-get install netselect
- netselectで近いサーバを探す(http://debian.fam.cx/index.php?AptGet)
- /etc/apt/sources.listを書き換える
- /etc/apt/apt.confのCache Limitを設定(http://homepage3.nifty.com/shinchandesu/lindows/aptline.html)
- /etc/init.d/haltと/etc/securettyを…
- apt-get update
- apt-get dist-upgrade
- デフォルトと異なる設定:"Install a partition boot record to boot Linux from /dev/hda1?" だけはno(http://www.vcn.or.jp/kayama/tomoyo-sama/diary-20040601.html#06140121-01)
(2004/08/31 14:15:00)
+ ■ sambaとか
○ntpdate
apt-get install ntpdate
国内のntpサーバ:http://plamo.minidns.net/ntpsites.shtml
○localeの設定
apt-get install locales
○samba 3
apt-get install samba swat
/etc/inetd.conf のswatの行を有効にする。inetdをHUP
[global] unix charset = EUCJP-MS dos charset = CP932 display charset = CP932 security = SHARE [share] comment = share path = /mnt/share force user = hoge force group = hoge read only = No guest ok = Yes
(2004/08/31 14:18:00)
+ ■ Xとvncserver
○X-Window
apt-get install x-window-system
/etc/fstabの書き換え→mountでもにょもにょ(http://www.mlb.co.jp/linux/support-mld6/ext2pts.html)これをしないと、root以外でterminalが動かない。
○vncserver
- apt-get install vncserver
- /etc/vnc.confの書き換え(http://nbnb.exblog.jp/i6)
- ユーザモードで立ち上げ
- init.dに起動スクリプトを書くと吉
(http://surf.ap.seikei.ac.jp/‾nakano/linux/init.d.html)
(2004/08/31 14:19:00)
+ ■ alsaplayer
○alsaplayer
- apt-get install alsaplayer-oss
- adduser hoge audio
- modprobeする内容は/etc/modulesに書いておけば自動的に組み込まれる。
○設定結果
(2004/08/31 14:19:00)
+ ■ joystick
○daemonとして起動時実行
- vncserverとjslaunchdは、/etc/init.dに起動時スクリプトを書く。
○Xの起動条件設定
‾/.xinitrcと‾/.twmrcの設定。
○joystick
なるべく小さいのがいいと思って、「JY-PMUW」をJ&P京都寺町店で購入。
http://www.sanwa.co.jp/product/syohin.asp?code=JY-PMUBK&cate=1
黒いのもあったのならそっちの方が良かったなあ…。
バスパワーを使うHUBにはつなげられないということだったのだが、小さいものだしとりあえず100mAあれば大丈夫だろ、と思ったら案の定大丈夫だった。
○モジュールの読み込み
modprobe input
modprobe hid
modprobe joydev
○jslaunchd
- インストールするだけならmakeは不要。make installでいける。
- /dev/js0を見に行くので、/dev/input/js0から/dev/js0へシンボリックリンクを貼ってやればOK。
(2004/08/31 14:34:00)
+ ■ 制御方法の検討
- ‾/.twmrcを‾/.xinitrcをアレすること。
○日本語コードをどうするか
- ファイル名をEUCで行くか、UTF-8か。ファイル名がEUCだと不都合?
○アルバムリスト化
- ディレクトリをさらって.m3uファイルをピックアップする。
- ディレクトリ自体をアレする。
- 受け手のプログラムをアレ。
○曲の選び方
<インターフェース>
- USB JOYSTICK
- パソコン+vncserver
- パソコン+エクスプローラからアプリにD&D(もしくは、「送る」メニューでアレする。)。アプリはperl+telnet(teraterm)
- パソコン+メール(←没。めんどくさすぎる)
<機能>
- アルバムランダム起動
- アルバム選択起動
○やることの順番
- パソコン+エクスプローラからアプリにD&Dから。
・teratermから手動でアレするスクリプトを書く
・ファイルシステムのコードを決定(EUCがよさげ)
・「送る」の部分をアレする。(出来合を使いまわす。)
なかなか8ビットコードを受け付けてくれなかったが、以下で解決。
http://plaza.rakuten.co.jp/search/diary/200404250000/
(2004/08/31 14:22:00)
+ ■ 起動時実行
○daemonとして起動時実行
- vncserverとjslaunchdは、/etc/init.dに起動時スクリプトを書く。
/etc/init.d/vncserver
#! /bin/sh set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/vncserver NAME=vncserver USER=ura DESC="vncserver daemon" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME test -x $DAEMON || exit 0 case "$1" in start) echo -n "Starting $DESC: $NAME" su $USER -c "/sbin/start-stop-daemon --start --quiet ¥ --pidfile $PIDFILE --user $USER ¥ --exec $DAEMON -- :1" echo "." ;; stop) echo -n "Stopping $DESC: $NAME" su $USER -c "/sbin/start-stop-daemon --stop --quiet ¥ --pidfile $PIDFILE --user $USER ¥ --exec $DAEMON -- -kill :1" echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
/etc/init.d/jslaunchd
#! /bin/sh set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/jslaunchd NAME=jslaunchd DESC="jslaunchd " PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME test -x $DAEMON || exit 0 case "$1" in start) echo -n "Starting $DESC: $NAME" start-stop-daemon --start --quiet --pidfile $PIDFILE ¥ --exec $DAEMON echo "." ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
○Xの起動条件設定
‾/.xinitrcと‾/.twmrcの設定。
(2004/08/31 17:11:00)
▼ <11>jukebox用のスクリプト
#!/bin/sh JUKE_NUM=$1 if [ -r '/mnt/share/mp3/jukeno' ] then JUKE_AL_NO=`cat '/mnt/share/mp3/jukeno' ` if [ -r '/mnt/share/mp3/jukebox' ] then MAX_JUKE_NUM=`wc -l /mnt/share/mp3/jukebox | awk '{ print $1 }' ` #echo $MAX_JUKE_NUM case $JUKE_NUM in next) JUKE_AL_NO=$[$JUKE_AL_NO + 1] if [ $JUKE_AL_NO -gt $MAX_JUKE_NUM ] then JUKE_AL_NO=1 fi JUKE_NUM=`awk "NR==$JUKE_AL_NO { print }" /mnt/share/mp3/jukebox ` echo $JUKE_AL_NO > /mnt/share/mp3/jukeno ;; prev) JUKE_AL_NO=$[$JUKE_AL_NO - 1] if [ $JUKE_AL_NO -lt 1 ] then JUKE_AL_NO=$MAX_JUKE_NUM fi JUKE_NUM=`awk "NR==$JUKE_AL_NO { print } " /mnt/share/mp3/jukebo x` echo $JUKE_AL_NO > /mnt/share/mp3/jukeno ;; esac fi fi echo $JUKE_NUM if [ -d "$JUKE_NUM" ] then cd "$JUKE_NUM" alsaplayer -o oss -E *.mp3 elif [ -f "$JUKE_NUM" ] #then DIST_DIR=`echo $JUKE_NUM | sed 's/[ ]/¥¥¥¥ /g' | sed 's/¥/[^/]*$//' | sed 's/[/]/¥¥¥¥¥//g' `¥¥/ then DIST_DIR=`echo $JUKE_NUM | sed 's/¥/[^/]*$//' `/ cd "$DIST_DIR" MAX_LINE=`wc -l "$JUKE_NUM" | awk '{ print $1 }'` C_LINE=1 alsaplayer --clear while [ $C_LINE -le $MAX_LINE ] do C_FILE=`cat "$JUKE_NUM" | tr -d '¥¥r' | nkf -e | sed $C_LINE!d ` alsaplayer -o oss -e "$C_FILE" C_LINE=$[ $C_LINE + 1 ] done #DIST_FILE=`cat "$JUKE_NUM" | tr -d '¥¥r' | nkf -e | tr '¥¥¥¥' '/' | sed -e 's/^ /"/' -e 's/$/"/' | tr '¥¥n' ' ' ` #echo $DIST_FILE #alsaplayer -o oss -E "$DIST_FILE" fi
(2004/09/06 01:01:00)
/▼
2004/08/31 作成