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

hwconf.sh: autodetect PCI device and load module if needed and avalaible
author Christophe Lincoln <pankso@slitaz.org>
date Mon May 05 23:10:15 2008 +0200 (2008-05-05)
parents eb339fcb3200
children 90f1e1e131a1
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@76 6 # Restore sound config for installed system.
pankso@76 7 if [ -f /var/lib/sound-card-driver ]; then
pankso@76 8 echo -n "Restoring last alsa configuration..."
pankso@76 9 alsactl restore
pankso@76 10 status
pankso@76 11 fi
pankso@62 12
pankso@76 13 # Detect PCI devices and load kernel module only at first boot
pankso@76 14 # or in LiveCD mode.
pankso@76 15 if [ ! -f /var/lib/detected-modules ]; then
pankso@76 16 echo "Detecting PCI devices..."
pankso@76 17 MODULES_LIST=`lspci -k | grep "modules" | cut -d ":" -f 2 | sed s/-/_/g`
pankso@76 18 for mod in $MODULES_LIST
pankso@76 19 do
pankso@76 20 if ! `lsmod | grep -q "$mod"`; then
pankso@76 21 modname=`echo "$mod" | sed s/_/-/g`
pankso@76 22 echo "Loading Kernel modules: $modname"
pankso@76 23 detect="$detect $modname"
pankso@76 24 /sbin/modprobe $modname
pankso@76 25 fi
pankso@76 26 done
pankso@76 27 # yenta_socket = laptop
pankso@76 28 if `lsmod | grep -q "yenta_socket"`; then
pankso@76 29 detect="$detect ac battery"
pankso@76 30 modprobe ac
pankso@76 31 modprobe battery
pankso@76 32 fi
pankso@76 33 echo "$detect" > /var/lib/detected-modules
pankso@76 34 # Now add modules to rcS.conf
pankso@76 35 . /etc/rcS.conf
pankso@76 36 load=`echo "$LOAD_MODULES $detect" | sed s/" "/" "/g`
pankso@76 37 sed -i s/"LOAD_MODULES=\"$LOAD_MODULES\""/"LOAD_MODULES=\"$load\""/ \
pankso@76 38 /etc/rcS.conf
pankso@76 39 # Retry a network connection with DHCP.
pankso@76 40 if ! `ifconfig -a | grep -q "eth0"`; then
pankso@76 41 echo "Starting udhcpc client on: eth0... "
pankso@76 42 /sbin/udhcpc -b -i eth0 -p /var/run/udhcpc.eth0.pid
pankso@76 43 fi
pankso@76 44 fi
pankso@76 45
pankso@76 46 # Sound configuration stuff. First check if sound=no and remove all
pankso@76 47 # sound Kernel modules.
pascal@48 48 if grep -q "sound=" /proc/cmdline; then
pascal@42 49 DRIVER=`cat /proc/cmdline | sed 's/.*sound=\([^ ]*\).*/\1/'`
pascal@42 50 case "$DRIVER" in
pascal@42 51 no)
pascal@42 52 echo -n "Removing all sound kernel modules..."
pascal@42 53 rm -rf /lib/modules/`uname -r`/kernel/sound
pascal@42 54 status
pascal@42 55 echo -n "Removing all sound packages..."
pascal@42 56 for i in $(grep -l '^DEPENDS=.*alsa-lib' /var/lib/tazpkg/installed/*/receipt) ; do
pascal@42 57 pkg=${i#/var/lib/tazpkg/installed/}
pascal@42 58 echo 'y' | tazpkg remove ${pkg%/*} > /dev/null
pascal@42 59 done
pankso@53 60 for i in alsa-lib mhwaveedit asunder libcddb ; do
pankso@53 61 echo 'y' | tazpkg remove $i > /dev/null
pankso@53 62 done
pascal@42 63 status;;
pascal@42 64 noconf)
pascal@42 65 echo "Sound configuration is disable from cmdline...";;
pascal@42 66 *)
pascal@61 67 if [ -x /usr/sbin/soundconf ]; then
pascal@61 68 echo "Using sound kernel module $DRIVER..."
pascal@61 69 /usr/sbin/soundconf -M $DRIVER
pascal@61 70 fi;;
pascal@42 71 esac
pankso@76 72 # Sound card my already be detected by PCI-detect.
pankso@76 73 elif [ -d /proc/asound ]; then
pankso@76 74 cp /proc/asound/modules /var/lib/sound-card-driver
pankso@76 75 /usr/bin/setmixer
pankso@76 76 # Start soundconf to config driver and load module for Live mode
pankso@76 77 # if not yet detected.
pascal@42 78 elif [ ! -f /var/lib/sound-card-driver ]; then
pascal@43 79 if [ -x /usr/sbin/soundconf ]; then
pascal@42 80 /usr/sbin/soundconf
pankso@11 81 else
pascal@42 82 echo "Unable to found: /usr/sbin/soundconf"
pankso@11 83 fi
pankso@11 84 fi
pascal@42 85
pankso@76 86 # Screen size config for slim/Xvesa (last config dialog befor login).
pankso@32 87 if [ ! -f /etc/X11/screen.conf -a -x /usr/bin/slim ]; then
pankso@76 88 # $HOME is not yet set.
pankso@76 89 HOME=/root
pascal@40 90 if grep -q "screen=*" /proc/cmdline; then
pascal@40 91 export NEW_SCREEN=`cat /proc/cmdline | sed 's/.*screen=\([^ ]*\).*/\1/'`
pascal@40 92 if [ "$NEW_SCREEN" = "text" ]; then
pascal@40 93 echo -n "Disabling X login manager: slim..."
pascal@40 94 sed -i s/'slim'/''/ /etc/rcS.conf
pascal@40 95 status
pascal@40 96 else
pankso@64 97 tazx `cat /etc/X11/wm.default`
pascal@40 98 fi
pascal@40 99 else
pankso@64 100 tazx `cat /etc/X11/wm.default`
pascal@40 101 fi
pankso@28 102 fi