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

hwconf.sh: add support for Xorg autoconfig
author Christophe Lincoln <pankso@slitaz.org>
date Mon Jan 04 23:34:50 2010 +0100 (2010-01-04)
parents ddd1db038d3b
children 50b48a25519f
rev   line source
pankso@11 1 #!/bin/sh
pankso@153 2 # /etc/init.d/hwconf.sh - SliTaz hardware configuration.
pankso@153 3 #
paul@181 4 # This script configures the sound card and screen. Tazhw is used earlier
pankso@153 5 # at boot time to autoconfigure PCI and USB devices.
pankso@11 6 #
pankso@12 7 . /etc/init.d/rc.functions
pankso@11 8
pankso@169 9 # Parse cmdline args for boot options (See also rcS and bootopts.sh).
pascal@180 10 XARG=""
pankso@169 11 for opt in `cat /proc/cmdline`
pankso@169 12 do
pankso@169 13 case $opt in
pankso@169 14 sound=*)
pankso@169 15 DRIVER=${opt#sound=} ;;
pascal@180 16 xarg=*)
pascal@180 17 XARG="$XARG ${opt#xarg=}" ;;
pankso@189 18 screen=text)
pankso@189 19 # Disable X.
pankso@189 20 echo -n "Disabling X login manager: slim..."
pankso@189 21 . /etc/rcS.conf
pankso@189 22 RUN_DAEMONS=`echo $RUN_DAEMONS | sed s/' slim'/''/`
pankso@189 23 sed -i s/"RUN_DAEMONS.*"/"RUN_DAEMONS=\"$RUN_DAEMONS\"/" /etc/rcS.conf
pankso@189 24 status ;;
pankso@169 25 screen=*)
pankso@169 26 SCREEN=${opt#screen=} ;;
pankso@169 27 *)
pankso@169 28 continue ;;
pankso@169 29 esac
pankso@169 30 done
pankso@169 31
pankso@81 32 # Sound configuration stuff. First check if sound=no and remove all
pankso@76 33 # sound Kernel modules.
pankso@169 34 if [ -n "$DRIVER" ]; then
pascal@42 35 case "$DRIVER" in
pascal@42 36 no)
pascal@42 37 echo -n "Removing all sound kernel modules..."
pascal@42 38 rm -rf /lib/modules/`uname -r`/kernel/sound
pascal@42 39 status
pascal@42 40 echo -n "Removing all sound packages..."
pascal@42 41 for i in $(grep -l '^DEPENDS=.*alsa-lib' /var/lib/tazpkg/installed/*/receipt) ; do
pascal@42 42 pkg=${i#/var/lib/tazpkg/installed/}
pascal@42 43 echo 'y' | tazpkg remove ${pkg%/*} > /dev/null
pascal@42 44 done
pankso@53 45 for i in alsa-lib mhwaveedit asunder libcddb ; do
pankso@53 46 echo 'y' | tazpkg remove $i > /dev/null
pankso@53 47 done
pankso@169 48 status ;;
pascal@42 49 noconf)
pankso@169 50 echo "Sound configuration was disabled from cmdline..." ;;
pascal@42 51 *)
pascal@61 52 if [ -x /usr/sbin/soundconf ]; then
pascal@61 53 echo "Using sound kernel module $DRIVER..."
pascal@61 54 /usr/sbin/soundconf -M $DRIVER
pankso@169 55 fi ;;
pascal@42 56 esac
MikeDSmith25@107 57 # Sound card may already be detected by PCI-detect.
pankso@76 58 elif [ -d /proc/asound ]; then
pankso@136 59 # Restore sound config for installed system.
pankso@136 60 if [ -s /etc/asound.state ]; then
pankso@136 61 echo -n "Restoring last alsa configuration..."
pankso@136 62 alsactl restore
pankso@136 63 status
pankso@136 64 else
pankso@136 65 /usr/sbin/setmixer
pankso@136 66 fi
pankso@140 67 # Start soundconf to config driver and load module for Live mode
pankso@140 68 # if not yet detected.
pankso@140 69 /usr/bin/amixer >/dev/null || /usr/sbin/soundconf
pankso@140 70 else
pankso@140 71 echo "Unable to configure sound card."
pankso@11 72 fi
pascal@42 73
pankso@189 74 # Xorg auto configuration.
pankso@189 75 if [ ! -s /etc/X11/xorg.conf -a -x /usr/bin/Xorg ]; then
pankso@189 76 echo "Configuring Xorg..."
pankso@189 77 # $HOME is not yet set.
pankso@189 78 HOME=/root
pankso@189 79 Xorg -configure
pankso@189 80 mv -f /root/xorg.conf.new /etc/X11/xorg.conf
pankso@189 81 sed -i 's|/usr/bin/Xvesa|/usr/bin/Xorg|' /etc/slim.conf
pankso@189 82 sed -i s/"^xserver_arguments"/'\#xserver_arguments'/ /etc/slim.conf
pankso@189 83 tazx config-xorg
pankso@189 84 fi
pankso@189 85
MikeDSmith25@107 86 # Screen size config for slim/Xvesa (last config dialog before login).
pankso@189 87 #
pankso@189 88 # NOTE: Xvesa is unmaintained, package will be removed and all related
pankso@189 89 # code cleaned
pankso@189 90 #
pankso@189 91 if [ ! -s /etc/X11/screen.conf -a -x /usr/bin/Xvesa ]; then
pankso@76 92 # $HOME is not yet set.
pankso@76 93 HOME=/root
pascal@180 94 if [ -n "$XARG" ]; then
pascal@145 95 # Add an extra argument to xserver_arguments (xarg=-2button)
pascal@180 96 sed -i "s| -screen|$XARG -screen|" /etc/slim.conf
pascal@145 97 fi
pankso@169 98 if [ -n "$SCREEN" ]; then
pankso@170 99 case "$SCREEN" in
pankso@170 100 text)
pankso@170 101 # Disable X.
pankso@170 102 echo -n "Disabling X login manager: slim..."
pankso@170 103 . /etc/rcS.conf
pankso@170 104 RUN_DAEMONS=`echo $RUN_DAEMONS | sed s/' slim'/''/`
pankso@170 105 sed -i s/"RUN_DAEMONS.*"/"RUN_DAEMONS=\"$RUN_DAEMONS\"/" /etc/rcS.conf
pankso@170 106 status ;;
pankso@170 107 auto)
pankso@170 108 # Auto detect screen resolution.
pankso@170 109 export NEW_SCREEN=`Xvesa -listmodes 2>&1 | grep ^0x | \
pankso@170 110 awk '{ printf "%s %s\n",$2 }' \
pankso@170 111 | sort -nr | grep x[1-2][4-6] | head -n 1`
pankso@170 112 tazx `cat /etc/X11/wm.default` ;;
pascal@182 113 1024x600*|800x480*)
pascal@182 114 set -- $(echo $SCREEN | sed 's/x/ /g')
pascal@182 115 915resolution -l 2>/dev/null | \
pascal@182 116 grep " ${1}x" | awk -v h=$1 -v v=$2 \
pascal@182 117 'END {system("915resolution " $2 " " h " " v)}'
pascal@182 118 # Use specified screen resolution.
pascal@182 119 export NEW_SCREEN=$SCREEN
pascal@182 120 tazx `cat /etc/X11/wm.default` ;;
pankso@170 121 *)
pankso@170 122 # Use specified screen resolution.
pankso@170 123 export NEW_SCREEN=$SCREEN
pankso@170 124 tazx `cat /etc/X11/wm.default` ;;
pankso@170 125 esac
pascal@40 126 else
pankso@64 127 tazx `cat /etc/X11/wm.default`
pascal@40 128 fi
pankso@28 129 fi