misc/96501: [PATCH] etc/rc.d/mixer script may reset mixer values to
their defaults
Rostislav Krasny
rosti.bsd at gmail.com
Sat Apr 29 08:30:17 UTC 2006
>Number: 96501
>Category: misc
>Synopsis: [PATCH] etc/rc.d/mixer script may reset mixer values to their defaults
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Apr 29 08:30:16 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Rostislav Krasny
>Release: 6.1-RC
>Organization:
>Environment:
FreeBSD saturn.lan 6.1-RC FreeBSD 6.1-RC #0: Fri Apr 28 18:55:32 IDT 2006 root at saturn.lan:/usr/obj/usr/src/sys/MYKERNEL i386
>Description:
The etc/rc.d/mixer script saves and restores mixer values on shutdown and boot
respectively. If system booted in a single user mode and then rebooted the mixer
values might be resetted to their defaults.
>How-To-Repeat:
Make sure your mixer values are different to their defaults.
Boot into a single user mode, like you do before 'make installworld':
fsck -p
mount -u /
mount -a -t ufs
swapon -a
adjkerntz -i
.. and then just reboot:
shutdown -r now
Boot normaly and check your mixer values by running /usr/sbin/mixer
>Fix:
The etc/rc.d/mixer script patch:
--- mixer.orig Sun Dec 18 18:06:28 2005
+++ mixer Sat Apr 29 00:58:13 2006
@@ -53,10 +53,15 @@
mixer_save()
{
local dev
+ local uptime
dev="/dev/${1}"
+ uptime=$((`date +"%s"` - \
+ `sysctl kern.boottime | awk '{ printf("%d", $5) }'`))
if [ -r ${dev} ]; then
- /usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null
+ find /var/db/ -name ${1}-state -mtime -${uptime}s -maxdepth 1 \
+ -exec sh -c "/usr/sbin/mixer -f ${dev} -s > {} \
+ 2>/dev/null" \;
fi
}
@@ -71,6 +76,7 @@
file="/var/db/${1}-state"
if [ -r ${dev} -a -r ${file} ]; then
/usr/sbin/mixer -f ${dev} `cat ${file}` > /dev/null
+ touch -m ${file}
fi
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list