use this command to fix your alsa:

(as root)
dpkg-reconfigure alsa-base



You can add this to the very end of /etc/init.d/knoppix-hd-autoconfigure:

dpkg-reconfigure alsa-base >/dev/null 2>&1




OR:.... Use my script.

reconfigure_alsa.sh
Code:
#!/bin/sh
#
# Ripped straight from postinst in the alsa-base package.
#
[ "$UID" != "0" ] && echo "Must be run as root!" && exit 1

echo "Configuring ALSA..."

set -e

MYNAME="$0"

# $* message
warn() { echo "${MYNAME}: Warning: $*" >&2 ; }

# $* message
report_error() { echo "${MYNAME}: Error: $*" >&2 ; }

devfs_is_active()
{
	test -e /dev/.devfsd
}

kernel_is_2_6_or_above()
{
	case "$(uname -r)" in
		1.*|2.[012345]*) return 1 ;;
		*) return 0 ;;
	esac
}

udev_is_active()
{
	test -e /dev/.udev.tdb || test -d /dev/.udevdb || return 1
	kernel_is_2_6_or_above || return 1
	return 0
}


if [ -d /etc/sound ]; then 
rmdir /etc/sound 2> /dev/null || :
fi

rm -f \
	/etc/apm/event.d/alsa \
	/etc/apm/event.d/alsa.dpkg-old \
	/etc/default/alsa.debconf-backup \
	/etc/devfs/conf.d/alsa \
	/etc/discover.conf.d/10alsa \
	/etc/discover.conf.d/10alsa.dpkg-old \
	/etc/alsa/alsa-base.conf \
	/etc/alsa/modutils/0.5 \
	/etc/alsa/modutils/0.9 \
	/etc/alsa/modutils/1.0 \
	/etc/alsa/modutils/0.5.debconf-backup \
	/etc/alsa/modutils/0.9.debconf-backup \
	/etc/alsa/modutils/1.0.debconf-backup \
	/etc/alsa/modprobe-post-install.d/alsa-base \
	/etc/alsa/modprobe-post-install.d/alsa-base.dpkg-old \
	/etc/modutils/alsa \
	/etc/modutils/alsa-path \
	/etc/modprobe.d/alsa

# Delete hotplug blacklist backup file since hotplug doesn't ignore
# it as it should (#299205)
rm -f /etc/hotplug/blacklist.d/alsa-base.dpkg-old

# Delete obsolete rc symlinks to alsa init.d script
# (update-rc.d produces an unnecessary warning message on stderr (see #164471) so print the error message only if its error status is nonzero)
STDERR="$(update-rc.d -f alsa remove 2>&1 >/dev/null)" || echo "Warning: 'update-rc.d -f alsa remove' reported: '$STDERR'." >&2
# Update modutils config
[ "$(which update-modules 2>/dev/null)" ] && update-modules >/dev/null || :

# Decide which conf file to read
conf_file=""
if [ -f /etc/default/alsa ] ; then
	conf_file=/etc/default/alsa
elif [ -f /usr/share/alsa-base/alsa.default ] ; then
	conf_file=/usr/share/alsa-base/alsa.default
else
	report_error "No configuration file found"
	exit 1
fi

	# Read variables from conf file
force_unload_modules_before_suspend="$( 
	. "$conf_file" >/dev/null 2>&1
	echo "$force_unload_modules_before_suspend"
)"
# Write new conf file
cat /usr/share/alsa-base/alsa.default | sed \
	-e "s/force_unload_modules_before_suspend=.*/force_unload_modules_before_suspend=\"${force_unload_modules_before_suspend}\"/" \
	> /etc/default/alsa
# Run snddevices if required
# We ignore #309581 "Creating devices not using MAKEDEV violates policy 10.6"
make_snddevices() { /usr/share/alsa-base/snddevices --no-wipe --owner=root.audio "$@" >/dev/null ; }
if devfs_is_active ; then
	# devfs /dev/
	# Run update-devfsd because we have eliminated the devfsd configuration file
	[ "$(which update-devfsd 2>/dev/null)" ] && update-devfsd
else
	if ! udev_is_active || [ "$WRITE_ON_UDEV" ] ; then
		# static /dev/ or udev-controlled /dev/ that we should write on
		[ -d /dev/snd ] || make_snddevices
	else
		# udev-controlled /dev/ which we shouldn't overwrite
		if [ -d /dev/.static/dev ] && [ -e /proc/mounts ] && grep -qE '^[^ ]+ /dev/\.static/dev' /proc/mounts ; then
			[ -d /dev/.static/dev/snd ] || make_snddevices --dev-dir=/dev/.static/dev > /dev/null
		elif [ -d /.dev ] && [ -e /proc/mounts ] && grep -qE '^[^ ]+ /\.dev' /proc/mounts ; then
			[ -d /.dev/snd ] || make_snddevices --dev-dir=/.dev > /dev/null
		fi
	fi
fi
# Set up apm symlinks
[ -f /etc/apm/scripts.d/alsa ] || warn "/etc/apm/scripts.d/alsa is absent"
# $1: file to check
already_linked_to_alsa()
{
	[ "$1" ] || return 1
	[ -L "$1" ] || return 1
	[ "$(basename "$(readlink "$1")")" = alsa ] || return 1
	return 0
}

ALREADY_LINKED=no
for F in /etc/apm/suspend.d/??alsa ; do
	already_linked_to_alsa "$F" && ALREADY_LINKED=yes && break
done
[ "$ALREADY_LINKED" = yes ] || ln -sf ../scripts.d/alsa /etc/apm/suspend.d/80alsa
ALREADY_LINKED=no
for F in /etc/apm/resume.d/??alsa ; do
	already_linked_to_alsa "$F" && ALREADY_LINKED=yes && break
done
[ "$ALREADY_LINKED" = yes ] || ln -sf ../scripts.d/alsa /etc/apm/resume.d/20alsa


exit 0
(as root)
Copy the above text and paste into a new file named: /etc/init.d/reconfigure_alsa.sh ...

Then issue (as root): ln -s /etc/init.d/reconfigure_alsa.sh /etc/rcS.d/S10reconfigure_alsa


Reboot


Take Care,
-Justin
One Mynds Eye