slitaz-boot-scripts annotate etc/init.d/hwconf.sh @ rev 136

Fix: restore sound mixer config and dont erase it just after
author Christophe Lincoln <pankso@slitaz.org>
date Tue Feb 17 23:26:53 2009 +0100 (2009-02-17)
parents d549fce3ce20
children 48447c5a5a52
rev   line source
pankso@11 1 #!/bin/sh
pankso@11 2 # /etc/init.d/hwconf.sh - SliTaz hardware autoconfiguration.
pankso@11 3 #
pankso@12 4 . /etc/init.d/rc.functions
pankso@11 5
pankso@81 6 # Detect PCI devices and load kernel module only at first boot
pankso@76 7 # or in LiveCD mode.
pascal@80 8 if [ ! -s /var/lib/detected-modules ]; then
erjo@93 9
erjo@93 10 . /etc/rcS.conf
erjo@93 11
pankso@134 12 # We need module_name to match output of lsmod.
pankso@76 13 echo "Detecting PCI devices..."
pankso@76 14 MODULES_LIST=`lspci -k | grep "modules" | cut -d ":" -f 2 | sed s/-/_/g`
pankso@76 15 for mod in $MODULES_LIST
pankso@76 16 do
pankso@134 17 if ! lsmod | grep -q "$mod" && [ -f "$(modprobe -l $mod)" ]; then
pankso@134 18 echo "Loading Kernel modules: $mod"
pankso@134 19 detect="$detect $mod"
pankso@135 20 /sbin/modprobe $mod
pankso@76 21 fi
pankso@76 22 done
pankso@76 23 # yenta_socket = laptop
pankso@76 24 if `lsmod | grep -q "yenta_socket"`; then
pankso@76 25 detect="$detect ac battery"
pankso@76 26 modprobe ac
pankso@76 27 modprobe battery
pascal@133 28 sed -i 's/= cpu/= batt\n}\n\nPlugin {\n type = cpu/' \
pascal@133 29 /etc/lxpanel/default/panels/panel 2> /dev/null
pankso@76 30 fi
pankso@76 31 echo "$detect" > /var/lib/detected-modules
pankso@76 32 # Now add modules to rcS.conf
pankso@76 33 load=`echo "$LOAD_MODULES $detect" | sed s/" "/" "/g`
pankso@76 34 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$load\""/ \
pankso@76 35 /etc/rcS.conf
pankso@76 36 # Retry a network connection with DHCP.
pankso@84 37 if ifconfig -a | grep -q "eth0"; then
pankso@86 38 if [ ! -f /var/run/udhcpc.eth0.pid ]; then
pankso@86 39 echo "Starting udhcpc client on: eth0... "
pankso@86 40 /sbin/udhcpc -b -i eth0 -p /var/run/udhcpc.eth0.pid
pankso@86 41 fi
pankso@76 42 fi
pankso@76 43 fi
pankso@76 44
pankso@81 45 # Sound configuration stuff. First check if sound=no and remove all
pankso@76 46 # sound Kernel modules.
pascal@48 47 if grep -q "sound=" /proc/cmdline; then
pascal@42 48 DRIVER=`cat /proc/cmdline | sed 's/.*sound=\([^ ]*\).*/\1/'`
pascal@42 49 case "$DRIVER" in
pascal@42 50 no)
pascal@42 51 echo -n "Removing all sound kernel modules..."
pascal@42 52 rm -rf /lib/modules/`uname -r`/kernel/sound
pascal@42 53 status
pascal@42 54 echo -n "Removing all sound packages..."
pascal@42 55 for i in $(grep -l '^DEPENDS=.*alsa-lib' /var/lib/tazpkg/installed/*/receipt) ; do
pascal@42 56 pkg=${i#/var/lib/tazpkg/installed/}
pascal@42 57 echo 'y' | tazpkg remove ${pkg%/*} > /dev/null
pascal@42 58 done
pankso@53 59 for i in alsa-lib mhwaveedit asunder libcddb ; do
pankso@53 60 echo 'y' | tazpkg remove $i > /dev/null
pankso@53 61 done
pascal@42 62 status;;
pascal@42 63 noconf)
MikeDSmith25@107 64 echo "Sound configuration was disabled from cmdline...";;
pascal@42 65 *)
pascal@61 66 if [ -x /usr/sbin/soundconf ]; then
pascal@61 67 echo "Using sound kernel module $DRIVER..."
pascal@61 68 /usr/sbin/soundconf -M $DRIVER
pascal@61 69 fi;;
pascal@42 70 esac
MikeDSmith25@107 71 # Sound card may already be detected by PCI-detect.
pankso@76 72 elif [ -d /proc/asound ]; then
pankso@76 73 cp /proc/asound/modules /var/lib/sound-card-driver
pankso@82 74 /usr/bin/amixer >/dev/null || /usr/sbin/soundconf
pankso@136 75 # Restore sound config for installed system.
pankso@136 76 if [ -s /etc/asound.state ]; then
pankso@136 77 echo -n "Restoring last alsa configuration..."
pankso@136 78 alsactl restore
pankso@136 79 status
pankso@136 80 else
pankso@136 81 /usr/sbin/setmixer
pankso@136 82 fi
pankso@76 83 # Start soundconf to config driver and load module for Live mode
pankso@76 84 # if not yet detected.
pascal@80 85 elif [ ! -s /var/lib/sound-card-driver ]; then
pascal@43 86 if [ -x /usr/sbin/soundconf ]; then
pascal@42 87 /usr/sbin/soundconf
pankso@11 88 else
MikeDSmith25@107 89 echo "Unable to find: /usr/sbin/soundconf"
pankso@11 90 fi
pankso@11 91 fi
pascal@42 92
MikeDSmith25@107 93 # Screen size config for slim/Xvesa (last config dialog before login).
pascal@80 94 if [ ! -s /etc/X11/screen.conf -a -x /usr/bin/slim ]; then
pankso@76 95 # $HOME is not yet set.
pankso@76 96 HOME=/root
pascal@40 97 if grep -q "screen=*" /proc/cmdline; then
pascal@40 98 export NEW_SCREEN=`cat /proc/cmdline | sed 's/.*screen=\([^ ]*\).*/\1/'`
pascal@40 99 if [ "$NEW_SCREEN" = "text" ]; then
pascal@40 100 echo -n "Disabling X login manager: slim..."
pascal@40 101 sed -i s/'slim'/''/ /etc/rcS.conf
pascal@40 102 status
pascal@40 103 else
pankso@64 104 tazx `cat /etc/X11/wm.default`
pascal@40 105 fi
pascal@40 106 else
pankso@64 107 tazx `cat /etc/X11/wm.default`
pascal@40 108 fi
pankso@28 109 fi