Linux でビープ音を鳴らす

今まで普段使っている PC にスピーカを取り付けていなかったため、ビープ音は鳴らなかったのだが、先日スピーカを取り付けた。ターミナルのビープ音がとても新鮮に感じる。このビープ音を自由にならすことはできないだろうか。調べてみると、 Debian に beep というパッケージがあるではないか。 Debian へのインストールは簡単。

# apt-get install beep

ダウンロード後、「Configuring Beep」という画面になる。スピーカハードウェアにアクセスするため、使用には root の権限が必要になる。一般のユーザではそのまま使えない。 3 つの選択肢があり、その中から audio グループに属するユーザに対して suid を設定して実行可能にする項目を選んだ。そのため、 beep を使うユーザを audio グループに加えなければならない。 /etc/group をエディタで開き、次のように audio という行へユーザを加える。

audio:x:29:ユーザ

あとは対象のユーザを一度ログアウトし、再度ログインすれば beep コマンドが使えるようになっているはずだ。以上が Debian GNU/Linux へのインストール方法だった。

続いて Red Hat Linux 9 にもインストールしてみた。まずは RPM のソースパッケージをダウンロードし、 rebuild 、そしてインストール。

$ wget http://johnath.com/beep/beep-1.2.2-1.src.rpm
# rpmbuild --rebuild beep-1.2.2-1.src.rpm
# rpm -ihv /usr/src/redhat/RPMS/i386/beep-1.2.2-1.i386.rpm

この状態では beep を使えるのはスーパユーザのみで、一般のユーザではできない。このまま suid ビットを設定すれば動作するのだが、 Debian と同じように audio グループに属するユーザのみ実行可能にしてみることにした。

まず、 Red Hat Linux 9 には audio というグループが存在しないようなので、グループを作成した。その際、空いていた gid として 31 を選んだ。

# /usr/sbin/groupadd -g 31 audio

続いて /etc/group の audio にユーザを追加する。対象ユーザは一度ログアウトし、再度ログインしておく。

audio:x:31:ユーザ

念のため beep の属性を見ておく。

$ which beep
/usr/bin/beep
$ ls -l /usr/bin/beep
-rwxr-xr-x 1 root root 6088 4月 18 14:00 /usr/bin/beep

再度スーパユーザになり、グループを audio にし、 suid ビットを設定、それ以外のユーザの実行権限を外しておく。

# chgrp audio /usr/bin/beep
# chmod u+s,o-x /usr/bin/beep
$ ls -l /usr/bin/beep
-rwsr-xr-- 1 root audio 6088 4月 18 14:00 /usr/bin/beep

これで audio グループに属するユーザからは beep が実行できるようになったはずだ。

さて、 beep -h を見てみると、周波数、時間、回数などを指定できることがわかる。例えば PC98 の電源投入時になる「ピポッ」を再現するには次のようにする。 /etc/rc.d/rc.local あたりに書いておけばおもしろいかもしれない。

$ beep -f 2000 -l 120 -n -f 1000 -l 120

このエントリへのトラックバック

spamが増えたためトラックバック機能は停止中です。

このエントリへのコメント

spamが増えたためコメント機能は停止中です。

Information

サイト内検索

けんども日記

直近 10 件
RSS
RSS 1.0
Home@けんどもネット
diary.php(v2): 2005-06-11
Copyright © 2003-2005 Kendomo.net.