PC Speaker — маленький динамик в компьютере. Как правило, он выдаёт некие сигналы при загрузке и полезен при определении неисправностей. А вот с помощью утилиты beep PC Speaker можно превратить в удобное средство оповещения или развлечения 🙂 !
Как обычно, настройка будет показана для Linux (RHEL семейства), в частности CentOS и Fedora. Думаю, что в других дистрибутивах отличий не будет.
Первым делом для CentOS установим репозиторий RPMForge:
Для CentOS 6 32bit
wget http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/i386/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
yum localinstall rpmforge-release-0.5.3-1.el6.rf.i686.rpm
Или для CentOS 7 64bit
wget http://repository.it4i.cz/mirrors/repoforge/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
yum localinstall rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
Для Fedora всё гораздо проще: утилита beep находится в базовом репозитории.
Теперь установим beep
yum install beep
dnf install beep
Для CentOS и Fedora соответственно.
Всё прошло успешно, но никаких звуков при выполнении команды
beep нет? Если так, то проверим загружен ли модуль ядра для нашего динамика.
lsmod |grep pcspkr
Нет вывода о модуле? Загрузим его вручную и еще раз проверим.
modprobe pcspkr
lsmod |grep pcspkr
1 |
pcspkr 1484 0 |
Далее нужно установить этот модуль ядра в автозагрузку, чтобы всё работало при перезапуске компьютера. В этом нам поможет конфигурационный файл beep.conf.
vi /etc/modprobe.d/beep.conf
1 2 3 |
# Uncomment the following line to have the pcspkr driver loaded # automatically on boot alias platform:pcspkr pcspkr |
Как и написано в файле, строчка раскомментирована, и модуль будет загружаться при запуске компьютера.
Итак, проверяем, набрав от имени root‘а команду
beep, слышится 1 короткой «писк». Но вот от обычного пользователя нам выдается ошибка.
1 2 |
Could not open /dev/tty0 or /dev/vc/0 for writing open: No such file or directory |
Исправим это следующим образом. Добавим новую группу beep и установим права этой группы на файл /usr/bin/beep, а у остальных пользователей отнимем все права.
groupadd beep
chgrp beep /usr/bin/beep
chmod 0750 /usr/bin/beep
ls -la /usr/bin/beep
1 |
-rwxr-x--- 1 root beep 11832 May 31 2016 /usr/bin/beep |
Теперь добавим существующего пользователя serg, которому разрешено запускать утилиту beep, в свежесозданную группу.
usermod -a -G beep serg
cat /etc/group|grep beep
1 |
beep:x:1002:serg |
Далее отредактируем файл /etc/sudoers, чтобы при запуске beep у нас не спрашивали пароль. Для это используем команду visudo, найдем нижеприведенные строчки и добавим запись относительно группы beep.
1 2 3 |
## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL %beep ALL=(ALL) NOPASSWD: ALL |
В итоге пользователь serg, набрав команду beep, услышит 1 короткой «писк». Другие же пользователи получат сообщение об ошибке.
1 |
-bash: /usr/bin/beep: Permission denied |
Можно решить проблему запуска
beep обычным пользователям гораздо быстрее, но этот способ оставляет дыру в безопасности. Это установка бита suid, в результате чего утилита будет выполняться от имени root‘а.
chmod u+s /usr/bin/beep
ls -la /usr/bin/beep
1 |
-rwsr-xr-x 1 root root 11832 May 31 2016 /usr/bin/beep |
Обязательно почитайте
man beep. Есть очень полезные ключи, например, интервал между звучаниями, частота звучания и многое другое. Если Вы знаете нотную грамоту, то для Вас не составит труда исполнить на PC Speaker’е такую мелодию.
beep -f 196 -l 400 -n -f 262 -l 800 -n -f 196 -l 600 -n -f 220 -l 200 -n -f 247 -l 800 -n -f 165 -l 400 -n -f 165 -l 400 -n -f 220 -l 800 -n -f 196 -l 600 -n -f 175 -l 200 -n -f 196 -l 800 -n -f 131 -l 400 -n -f 131 -l 400 -n -f 147 -l 800 -n -f 147 -l 400 -n -f 165 -l 400 -n -f 175 -l 800 -n -f 175 -l 400 -n -f 196 -l 400 -n -f 220 -l 800 -n -f 247 -l 400 -n -f 262 -l 400 -n -f 294 -l 1200 -n -f 196 -l 400 -n -f 330 -l 800 -n -f 294 -l 600 -n -f 262 -l 200 -n -f 294 -l 800 -n -f 247 -l 400 -n -f 196 -l 400 -n -f 262 -l 800 -n -f 247 -l 600 -n -f 220 -l 200 -n -f 247 -l 800 -n -f 165 -l 400 -n -f 165 -l 400 -n -f 220 -l 800 -n -f 196 -l 400 -n -f 175 -l 400 -n -f 196 -l 800 -n -f 131 -l 400 -n -f 131 -l 400 -n -f 262 -l 800 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 1600 -n -f 330 -l 1600 -n -f 294 -l 400 -n -f 262 -l 400 -n -f 247 -l 400 -n -f 262 -l 400 -n -f 294 -l 1200 -n -f 196 -l 400 -n -f 196 -l 1600 -n -f 262 -l 1600 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 400 -n -f 220 -l 400 -n -f 247 -l 1200 -n -f 165 -l 400 -n -f 165 -l 1600 -n -f 262 -l 800 -n -f 220 -l 600 -n -f 247 -l 200 -n -f 262 -l 800 -n -f 220 -l 600 -n -f 247 -l 200 -n -f 262 -l 800 -n -f 220 -l 400 -n -f 262 -l 400 -n -f 350 -l 1600 -n -f 350 -l 1600 -n -f 330 -l 400 -n -f 294 -l 400 -n -f 262 -l 400 -n -f 294 -l 400 -n -f 330 -l 1200 -n -f 262 -l 400 -n -f 262 -l 1600 -n -f 294 -l 1600 -n -f 262 -l 400 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 247 -l 400 -n -f 262 -l 1200 -n -f 220 -l 400 -n -f 220 -l 1600 -n -f 262 -l 800 -n -f 247 -l 400 -n -f 220 -l 400 -n -f 196 -l 800 -n -f 131 -l 600 -n -f 131 -l 200 -n -f 196 -l 1600 -n -f 220 -l 800 -n -f 246 -l 800 -n -f 262 -l 3200
Или такую.
beep -l 350 -f 392 -D 100 -n -l 350 -f 392 -D 100 -n -l 350 -f 392 -D 100 -n -l 250 -f 311.1 -D 100 -n -l 25 -f 466.2 -D 100 -n -l 350 -f 392 -D 100 -n -l 250 -f 311.1 -D 100 -n -l 25 -f 466.2 -D 100 -n -l 700 -f 392 -D 100 -n -l 350 -f 587.32 -D 100 -n -l 350 -f 587.32 -D 100 -n -l 350 -f 587.32 -D 100 -n -l 250 -f 622.26 -D 100 -n -l 25 -f 466.2 -D 100 -n -l 350 -f 369.99 -D 100 -n -l 250 -f 311.1 -D 100 -n -l 25 -f 466.2 -D 100 -n -l 700 -f 392 -D 100 -n -l 350 -f 784 -D 100 -n -l 250 -f 392 -D 100 -n -l 25 -f 392 -D 100 -n -l 350 -f 784 -D 100 -n -l 250 -f 739.98 -D 100 -n -l 25 -f 698.46 -D 100 -n -l 25 -f 659.26 -D 100 -n -l 25 -f 622.26 -D 100 -n -l 50 -f 659.26 -D 400 -n -l 25 -f 415.3 -D 200 -n -l 350 -f 554.36 -D 100 -n -l 250 -f 523.25 -D 100 -n -l 25 -f 493.88 -D 100 -n -l 25 -f 466.16 -D 100 -n -l 25 -f 440 -D 100 -n -l 50 -f 466.16 -D 400 -n -l 25 -f 311.13 -D 200 -n -l 350 -f 369.99 -D 100 -n -l 250 -f 311.13 -D 100 -n -l 25 -f 392 -D 100 -n -l 350 -f 466.16 -D 100 -n -l 250 -f 392 -D 100 -n -l 25 -f 466.16 -D 100 -n -l 700 -f 587.32 -D 100 -n -l 350 -f 784 -D 100 -n -l 250 -f 392 -D 100 -n -l 25 -f 392 -D 100 -n -l 350 -f 784 -D 100 -n -l 250 -f 739.98 -D 100 -n -l 25 -f 698.46 -D 100 -n -l 25 -f 659.26 -D 100 -n -l 25 -f 622.26 -D 100 -n -l 50 -f 659.26 -D 400 -n -l 25 -f 415.3 -D 200 -n -l 350 -f 554.36 -D 100 -n -l 250 -f 523.25 -D 100 -n -l 25 -f 493.88 -D 100 -n -l 25 -f 466.16 -D 100 -n -l 25 -f 440 -D 100 -n -l 50 -f 466.16 -D 400 -n -l 25 -f 311.13 -D 200 -n -l 350 -f 392 -D 100 -n -l 250 -f 311.13 -D 100 -n -l 25 -f 466.16 -D 100 -n -l 300 -f 392.00 -D 150 -n -l 250 -f 311.13 -D 100 -n -l 25 -f 466.16 -D 100 -n -l 700 -f 392
Вот здесь есть еще примеры использования beep, кстати, где и был найден «марш».