+ ■ 音箱
玄箱を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 作成