【Ubuntu 11.10 64bit】システム音が鳴らぬ

おととい、Mynthtvでスカパーを視聴しつつ、Firefoxで動画サイトを開き、flash playerが起動した途端、音が消えた。

再起動しても音が出ず、サウンド設定を見てみると、音響効果タブの音量がミュート、出力が「内部オーディオアナログステレオ」では無く、「Manhattan HDMI Audio[Mobillity Radeon HD 5000 Series] Digital Stereo (HDMI)」になっていた。

なぜこの設定が変わってしまったのかさっぱり分からないが、出力を正しく直したら、音が出るようになった。しかし、ログイン時の音など、システムの音がSkypeやEmpathyの音も含め、ミュートを解除しても全く出なくなってしまった。

検索しても、~/.local/share/sounds に /usr/share/sounds以下の音ファイルをコピーするってのがあり、一応、~/.local/share/sounds/__custom ってディレクトリ作って音源ファイル入れてみたが、本質的な解決になってないので消した。

で、例によって英語圏へ探索の手を伸ばしてみると、ズバリ同じ症状の例があった。
theme_name が freedesktop になってしまうのも全く同じ。でも解決に至ってない。

まあ、何かヒントになるかもしれないと、 gconf-editor で /desktop/gnome/sound/theme_name を ubuntu に書き換えても、サウンド設定の音響効果のタブで、「デフォルト」以外を選択すると、なぜか __custom って設定になり、デフォルトに戻すと、 freedesktop に戻されてしまう。

__customってのは消してしまったから無いのだが、なぜ????

おそらく、どこかに候補を作っていて、その中からこの freedesktop というのが設定値として選ばれるのだろうが、その候補がどこに格納されているのやら分からない。

ゲストセッションでログインすると、ログイン音は鳴るので、gnome の個人設定に致命的な不具合があるのは確実なのだが、どこに格納されているのやらさっぱり分からない。

ログイン時の音の再生で、
/usr/bin/canberra-gtk-play –id=”desktop-login” –description=“GNOME Login”

を実行するが、今までは音が鳴っていたという事は、 /usr/share/sounds/ubuntu/stereo の中のdesktop-login.ogg を読みに行っていた訳で、じゃあ、その /usr/share/sounds/ubuntu/stereo って PATHはどこに記憶されてたの?というのが、さっぱり分からない。

以前の Linux の感覚なら、こういう設定は、特定の場所にテキストファイルに格納されている事が多いから、プログラムの不具合でおかしな情報が書き込まれても、修正は容易だった。

しかし、逆にそれが、良く理解していない人間が無茶苦茶な博打設定をやって、システムを破壊してしまうという事にも成り得た。

それで、「システムを破壊しにくくする為に隠してしまおう」なんて流れで設定箇所が分かりにくくなっているのかもしれないが、システムに不具合があっても簡単に直せなくなってるってのはよろしくない。

とりあえず、ホームディレクトリで隠しファイルも含めて全て調べるべく、
find -exec grep -H “__custom” {} \;

なんてやっているが、ホームディレクトリ以下には膨大な数のファイルがあり、しょうもない不具合の解決の為に膨大な時間を使って検索するってのが馬鹿げている。

で、膨大な時間をかけて検索したのに、
noizumi@purplecat:~$ find -exec grep -H "__custom" {} \;
バイナリファイル ./VirtualBox VMs/Debian6/Debian6.vdi に一致しました
バイナリファイル ./VirtualBox VMs/Ubuntu 11.10 64bit/Ubuntu 11.10 64bit.vdi に一致しました
./.bash_history:rm -rf __custom/
./.bash_history:cd __custom/
grep: ./.googleearth/instance-running-lock: そのようなファイルやディレクトリはありません
grep: ./.dropbox/iface_socket: そのようなデバイスやアドレスはありません
grep: ./.dropbox/command_socket: そのようなデバイスやアドレスはありません
grep: ./.pulse/f22b66f362fa794e71d1f7120000000a-runtime: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonCookie: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonLock: そのようなファイルやディレクトリはありません
grep: ./.config/google-chrome/SingletonSocket: そのようなファイルやディレクトリはありません
grep: ./.mozilla/firefox/dlxj05i8.default/lock: そのようなファイルやディレクトリはありません
./.mozilla/firefox/dlxj05i8.default/Cache/5/B8/1C0CBd01:find -exec grep -H &#8220;__custom&#8221; {} \;</p>
grep: ./.kde/socket-purplecat: そのようなファイルやディレクトリはありません
grep: ./.kde/tmp-purplecat: そのようなファイルやディレクトリはありません
バイナリファイル ./.cache/event-sound-cache.tdb.ebf753585907fe619b4f03770000000d.x86_64-pc-linux-gnu に一致しました

出てこぬわ!

そこで博打設定 🙂
$ rm -rf ~/.pulse

管理者アカウントをもう一つ作ってログイン
$ sudo cp -r ./.pulse /home/noizumi
$ sudo chown -R noizumi:noizumi /home/noizumi/.pulse

~/.pulse の中にはシンボリックリンクがあって、 /tmp のディレクトリにリンクしているので、そのまま再ログインしてもおかしくなる可能性が高い。

$ sudo reboot

自分のアカウントでログインしてみると、Skypeのログイン音が鳴り、サウンド設定で音響効果のタブの音量が0になってたのを直したら、無事音が出るようになった。

gnome のせいかと思ったら、 pulseaudio が悪さしていた の巻

だったでござるよ。ニンニン。

【Ubuntu 11.10 64bit】コンパイルが通らぬ

Intel Turbo boostの状況を見るべく、i7zをmakeすると、

noizumi@purplecat:~/src/i7z-0.26$ make
rm -f *.o i7z
If the compilation complains about not finding ncurses.h, install ncurses (libncurses5-dev on ubuntu/debian)
gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lncurses -lpthread -lrt  i7z.c helper_functions.c i7z_Single_Socket.c i7z_Dual_Socket.c -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
/tmp/ccyXWW18.o: In function Single_Socket':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:92: undefined reference to
initscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:93: undefined reference to start_color'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:94: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:95: undefined reference to wrefresh'
/tmp/ccyXWW18.o: In function
print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:114: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:115: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:117: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:122: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:242: undefined reference to mvprintw'
/tmp/ccyXWW18.o:/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:267: more undefined references to
mvprintw' follow
/tmp/ccyXWW18.o: In function print_i7z_socket_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:527: undefined reference to wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:543: undefined reference to
mvprintw'
/tmp/ccyXWW18.o: In function print_i7z_single':
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:582: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:587: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Single_Socket.c:648: undefined reference to wrefresh'
/tmp/ccY0TCqr.o: In function
Dual_Socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:46: undefined reference to initscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:47: undefined reference to
start_color'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:48: undefined reference to
stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:49: undefined reference to
wrefresh'
/tmp/ccY0TCqr.o: In function print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:185: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:211: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:212: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:213: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:214: undefined reference to
mvprintw'
/tmp/ccY0TCqr.o:/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:215: more undefined references to mvprintw' follow
/tmp/ccY0TCqr.o: In function
print_i7z_socket':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:488: undefined reference to
wrefresh'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:502: undefined reference to mvprintw'
/tmp/ccY0TCqr.o: In function
print_i7z':
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:539: undefined reference to mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:540: undefined reference to
mvprintw'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to stdscr'
/home/noizumi/src/i7z-0.26/i7z_Dual_Socket.c:601: undefined reference to
wrefresh'
collect2: ld はステータス 1 で終了しました
make: *** [bin] エラー 1
noizumi@purplecat:~/src/i7z-0.26$ locate ncurses.h
/usr/include/ncurses.h
noizumi@purplecat:~/src/i7z-0.26$

でも

noizumi@purplecat:~/src/i7z-0.26$ gcc  -g -O0 -fomit-frame-pointer -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DBUILD_MAIN -Wall -Dx64_BIT -lpthread  i7z.c helper_functions.c i7z_Single_Socket.c  i7z_Dual_Socket.c -lncurses -lrt -o i7z
i7z_Single_Socket.c: 関数 ‘Single_Socket’ 内:
i7z_Single_Socket.c:83:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:83:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_socket_single’ 内:
i7z_Single_Socket.c:211:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c:206:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Single_Socket.c: 関数 ‘print_i7z_single’ 内:
i7z_Single_Socket.c:619:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘Dual_Socket’ 内:
i7z_Dual_Socket.c:37:14: 警告: 変数 ‘col’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:37:9: 警告: 変数 ‘row’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z_socket’ 内:
i7z_Dual_Socket.c:154:13: 警告: 変数 ‘IA32_FIXED_CTR_CTL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c:149:13: 警告: 変数 ‘IA32_PERF_GLOBAL_CTRL_Value’ が設定されましたが使用されていません [-Wunused-but-set-variable]
i7z_Dual_Socket.c: 関数 ‘print_i7z’ 内:
i7z_Dual_Socket.c:570:9: 警告: 変数 ‘HT_ON’ が設定されましたが使用されていません [-Wunused-but-set-variable]
noizumi@purplecat:~/src/i7z-0.26$

こうやれば通る。

Makefileの中に指定してあるオプションをコマンドラインで打ってやれば、コンパイルが通り、Makefileだと ncurses のライブラリが見つからないとぬかしてシンボルエラーが出まくる。

i7zの場合は、issue に全く同じ症状の人が居て、根本的な解決法になっていないが、一応、動作するものができたが、xawtv4のビルドでも、リンカで必要なライブラリが揃っているのにリンクできないという同じ症状が出ている。

xawtv4の場合は関連ファイルが多いから、一々、コマンドライン手打ちでやってられぬ。そもそも make はそういうコマンドライン手打ちを一々やらない為のシステムで、本末転倒じゃ。

これだけおかしな状況になってるのに、検索しても余り騒いでいる人を見かけないが、わしが時代に取り残されておるのかのう。